跳到正文
Lanxinmob

CS285 课程笔记:离线强化学习

从固定数据集中学习更好的策略:离线 RL、CQL、COMBO、Trajectory Transformer,以及离线策略评估与 RL 理论。

Offline RL 的目标不是模仿已有数据,而是从固定数据中计算出比数据生成策略更好的策略,希望利用数据里面的 reward + transition structure,学习混合质量的数据中好的行为重新组织成一个更好的 policy,甚至把很多糟糕轨迹中局部正确的片段重新组合。

Offline RL

Offline RL 的一个问题是 erroneous backups,如果Q网络对离线数据集中一个没见过的动作进行错误的估计,那么这个错误的Q值就会被继续向前面的状态传播。online rl 通过执行这一动作通常还能纠正错误,虽然也无法保障。所以我们需要对策略跑到数据外分布做出限制,例如 **BCQ **尽量只选择接近数据集支持的动作,BEAR 使用distribution matching 一类分布,BRAC 对 learned policy 和 behavior policy 加divergence regularization。IQL 则只使用 dataset 中真实出现过的 action,通过 expectile regression 在这些 dataset actions 中偏向好的动作,实现一种 implicit policy improvement。

可是面对一个更加困难的任务时,offline RL不能只是学习模仿数据中出现的某些动作,还需要学会将数据中的局部经验重新组合,此时如果用上文只是设计加上各种限制的算法就很难完成这些任务。并且对于限制本身也会存在问题,模型不一定能正确估计 behavior policy,当function class 不匹配时无论训练多少数据都可能拟合不好。并不是所有分布外动作都是糟糕的,只有动作价值被错误地过高估计时才会影响策略效果。

model-baed offline RL

MOPO 会在reward function中加上一个不确定性惩罚,训练一组dynamic model,不确定性惩罚就是ensemble 的所有模型里最大的协方差,即最不确定的那个模型。如果某个动作虽然和 behavior policy 不一样,但dynamic model对那里有把握,策略就会允许策略执行这个动作,这样就比简单加上限制更加灵活。

Conservative Q-Learning

CQL-v1 在 Bellman error 前面加了一项 QCQLπ=argmin⁡Q{max⁡uEa∼μ(⋅∣s)[Q(s,a)]+12aLBellman}Q_{CQL}^π=arg\min\limits_{Q}\left\{\max\limits_{u}\mathbb{E}_{a∼μ(⋅∣s)}[Q(s,a)]+\frac{1}{2a}L_{Bellman}\right\} 主动寻找Q最大的动作并把它压低,避免了OOD action 把它估得虚高,但也会把数据集中有 evidence 的动作压低。于是 v2版又在后面加了一项 min[max⁡uEa∼μ[Q(s,a)]−Ea∼D(a∣s)[Q(s,a)]]+12αLBellmanmin[\max\limits_{u}E_{a∼μ}[Q(s,a)]−E_{a∼D(a∣s)}[Q(s,a)]]+\frac{1}{2α}L_{Bellman} ,把 OOD 动作的 Q 往下压, 出现在数据中动作的 Q 往上托。CQL 不是限制 policy 本身而是对Q网络做出调整,避免策略价值被整体高估。

Practical CQL

min[max⁡uEa∼μ[Q(s,a)]−Ea∼D(a∣s)[Q(s,a)]]+LBellmanmin[\max\limits_{u}E_{a∼μ}[Q(s,a)]−E_{a∼D(a∣s)}[Q(s,a)]]+L_{Bellman}

理论上这里要再优化一个动作分布 μ\mu,来找到Q值可能被高估的动作同时避免坍缩到单一动作,CQL(H) 加了一个 entropy regularization 后就可以把这个 max⁡μ\max_\mu 解析地写成 log⁡∑aexp⁡Q(s,a)\log\sum_a \exp Q(s,a) , Practical CQL 的 loss 就变成

αEs∼D[log⁡∑aeQ(s,a)−Ea∼πβ(a∣s)Q(s,a)]+LBellman\alpha \mathbb E_{s\sim\mathcal D} \left[ \log\sum_a e^{Q(s,a)} - \mathbb E_{a\sim\pi_\beta(a|s)}Q(s,a) \right] + L_{\rm Bellman}

这里 πβ\pi_\beta 就是 dataset behavior distribution,log⁡∑aeQ(s,a)=max⁡μ[Ea∼μQ(s,a)+H(μ)]\log\sum_a e^{Q(s,a)} = \max_\mu \left[ E_{a\sim\mu}Q(s,a)+\mathcal H(\mu) \right]。

CQL 不是每一种case下都最优,而是在多种dataset type下比 naive offline RL 和 policy constraints 更稳定。它不是特殊的 policy architecture只是对critic进行改造为一个 conservative critic regularizer,搭配现代强化学习算法如 SAC 或 DQN使用。

COMBO

真正 policy rollout 时,不只是 action 会 OOD,也可能跑到 dataset 没覆盖的 state。COMBPO 会先训练一个 dynamic model,从离线数据 D={(s,a,r,s′)}\mathcal D= \{(s,a,r,s')\} 训练 p^(s′∣s,a)\hat p(s'|s,a) 以及 reward model(如果 reward 不是直接已知函数)r^(s,a)\hat r(s,a)。然后从 dataset states 出发,用当前 policy a∼π(a∣s)a\sim\pi(a|s) 在模型中 rollout 得到一批 synthetic model transitions DmodelD_{model}。但是这个 dynamic model 面对数据外情况同样会偏移,所以就像CQL会最小化策略动作的 Q 值一样,可以最小化 model rollout 得到的状态‑动作分布的 Q 值,托高真实数据中 Q 值。

Trajectory transformer

Trajectory transformer 把一条 trajectory 当成语言序列,直接学 p(s1,a1,s2,a2,… )p(s_1,a_1,s_2,a_2,\dots),于是里面自动包含:p(at∣s≤t,a≤t)p(a_t|s_{\le t},a_{\le t}) 以及 p(st+1∣s≤t,a≤t)p(s_t+1∣s_{\le t},a_{\le t})。但我们不是只要模仿已有数据的 trajectory,而是要高 reward trajectory,所以使用 beam search。

例如模型提出 τ1,τ2,τ3,…\tau_1,\tau_2,\tau_3,\dots,每条都有预测 rt+rt+1+⋯ .r_t+r_{t+1}+\cdots.,保留累计 reward 最大的 K 条候选继续扩展。最后选择最好 trajectory 的第一个 action at∗a_t^* ,执行一个 action 后重新规划,类似 MPC。TT 可以生成高概率轨迹来规避之前方法面对的分布外状态与动作,不过 TT 用于训练和评估的计算特别昂贵。

Offline policy evaluation

现在我们是用离线的数据进行训练,无法与环境交互,那么要评估我们学到的policy,一种方法是之前提过off-policy 中常用的算法 importance sampling,但是存在指数级爆炸的问题,我们可以用 Doubly Robust方法先相信 value model,再用 importance-weighted residual 修正 VDR=V^+ρt[rt+γVDR(st+1)−Q^(st,at)]V_{DR}=\hat{V}+ρ_t[r_t+γV_{DR}(st+1)−\hat{Q}(st,at)]。但是这个方法依然有 ∏k=0tπ(ak∣sk)β(ak∣sk)\prod_{k=0}^{t} \frac{\pi(a_k|s_k)} {\beta(a_k|s_k)},于是 marginaled importance sampling 不显式保留整条历史,而直接估 occupancy ratio 即所有到达这个 (s,a) 的 trajectory IS ratio 的平均 w(s,a)=dπ(s,a)dβ(s,a)w(s,a) = \frac{d^\pi(s,a)} {d^\beta(s,a)} 然后 J(π)≈N1i∑w(si,ai)ri J(π)≈N_1^i∑w(s_i,a_i)r_i 把 behavior-policy dataset 重新加权,使它看起来像是 target policy π\pi 产生的数据,最后算出累计 reward。

Least-Squares Temporal Difference

还有一种方法是不直接对 reward return 加权,先从 transitions 解出 VπVπ,在 featrue space 求解 bellman equation,假设V(s)≈ϕ(s)TwVV(s)\approx\phi(s)^Tw_V Bellman equation 有 V(s)=r+γE[V(s′)]V(s) = r+\gamma E[V(s')] ,于是希望 ϕ(s)TwV≈r+γϕ(s′)TwV\phi(s)^Tw_V \approx r+\gamma\phi(s')^Tw_V 即 (ϕ(s)−γϕ(s′))TwV≈r\left( \phi(s)-\gamma\phi(s') \right)^Tw_V \approx r,wV=[ΦT(Φ−γΦ′)]−1ΦTrw_V=[Φ^T(Φ−γΦ^′)]^{−1}Φ^Tr, 找一个 (w) 使线性 value function 在 feature space 中尽量满足 projected Bellman equation。对任何状态 V^π(s)=ϕ(s)Tw\hat V^\pi(s)=\phi(s)^Tw 最后取初始状态 J^(π)=1M∑j=1MV^π(s0(j))\hat J(\pi) = \frac1M\sum_{j=1}^{M} \hat V^\pi(s_0^{(j)}) 完成 policy evaluation。

如果我们想要进一步使用这种方法来改进策略,就需要比较动作的好坏,可以改为学习 Q function 即 LSTDQ,对 action 做 greedy improvement。Bellman equation 变成 Qπ(si,ai)=ri+γEa′∼π(⋅∣si′)Qπ(si′,a′)Q^\pi(s_i,a_i) = r_i+ \gamma E_{a'\sim\pi(\cdot|s_i')} Q^\pi(s_i',a') 。如果 π\pi 是 deterministic ai′=π(si′)a_i'=\pi(s_i'),于是 Qπ(si,ai)≈ri+γQπ(si′,π(si′))Q^\pi(s_i,a_i) \approx r_i+ \gamma Q^\pi(s_i',\pi(s_i')) 代入线性表示 ϕ(si,ai)TwQ≈ri+γϕ(si′,π(si′))TwQ\phi(s_i,a_i)^Tw_Q \approx r_i+ \gamma \phi(s_i',\pi(s_i'))^Tw_Q 定义 Φi=ϕ(si,ai)\Phi_i=\phi(s_i,a_i) 以及 Φi′=ϕ(si′,π(si′))\Phi_i' = \phi(s_i',\pi(s_i')) 然后和 LSTD 一模一样 wQ=(ΦTΦ−γΦTΦ′)−1ΦTrw_Q=(Φ^TΦ−γΦ^TΦ^′)^{−1}Φ^Tr 。最后得到 LSPI 的完整循环,先用 LSTDQ 算 wQ(k)w_Q^{(k)} 估 QπkQ^{\pi_k} ,然后更新策略 πk+1(s)=arg⁡max⁡aQπk(s,a)\pi_{k+1}(s)=\arg\max_a Q^{\pi_k}(s,a) ,Φi′=ϕ(si′,πk+1(si′))\Phi_i' = \phi(s_i',\pi_{k+1}(s_i')) 然后重新算 wQ(k+1)w_Q^{(k+1)} 再次循环。

RL theory

RL 如果没有很强的假设就很难进行有效的分析,现在的 deep RL 方法通常都不能证明每次都会很好地 work,甚至经常都不能保证收敛。在很强的假设下,我们才能对各种因素如何影响 RL 算法的表现做出不准确的定性结论,并使这些假设足够合理让这些结论可能用于现实问题。

evaluate metric:sample complexity

样本复杂度指需要多少个 transition 或 episodes才能获得一个好的 policy,既然要评估策略那么我们就需要对 Q 值的估计误差有一定概念。

Q 值估计误差的推导

首先回顾策略 (\pi) 下的贝尔曼方程: [ Q^\pi = r + \gamma P^\pi Q^\pi ] 通过代数变换,可以将其改写为矩阵求逆的形式: [ Q^\pi - \gamma P^\pi Q^\pi = r \implies (I - \gamma P^\pi)Q^\pi = r \implies Q^\pi = (I - \gamma P^\pi)^{-1}r ]

维度说明

  • (Q^\pi \in \mathbb{R}^{|S||A|}),(r \in \mathbb{R}^{|S||A|})。
  • (P \in \mathbb{R}^{|S||A| \times |S|}),(V^\pi \in \mathbb{R}^{|S|})。
  • 状态价值函数与动作价值函数的关系:(V^\pi = \Pi Q^\pi),其中 (\Pi) 是维度为 (|S| \times |S||A|) 的投影矩阵。
  • 策略诱导的转移矩阵:(P^\pi = P\Pi)。

其次给定 (P^\pi) 和任意向量 (v \in \mathbb{R}^{|S||A|}),有引理: [ |(I - \gamma P^\pi)^{-1}v|\infty \le \frac{|v|\infty}{1 - \gamma} ]

对应于奖励 (v) 的 Q 函数,其无穷范数最多被放大 (\frac{1}{1-\gamma}) 倍。这可以通过几何级数 (\sum_{t=0}^\infty \gamma^t c = \frac{c}{1-\gamma}) 来理解(即视界 (H \approx \frac{1}{1-\gamma}))。结合上述引理与蒙特卡洛采样的集中不等式,得到 Q 值估计误差的无穷范数上界 [ |Q^\pi - \hat{Q}^\pi|_\infty \le \frac{\gamma}{(1-\gamma)^2} c_2 \sqrt{\frac{|S|\log(1/\delta)}{N}} ]

根据上界我们可以得到结论:

  1. Q 值估计误差随视界二次增长:分母中的 ((1-\gamma)^2) 意味着误差与有效视界 (H^2) 成正比。因为 (Q) 值本身的尺度是 (\frac{1}{1-\gamma}),每次贝尔曼 backup 都会累积误差,于是在传播过程中误差又会乘以 (\frac{1}{1-\gamma}),两者叠加导致二次放大,因此强化学习的误差界对折扣因子 (\gamma) 极其敏感。

  2. 大量样本需求:为了抵消视界带来的误差放大,样本量 (N) 需要以 (O(H^4)) 的速度增长。这也就是长视界 RL 任务(如长序列决策)极其困难的理论根源。

FQI 的误差分解:Sampling vs Approximation

FQI 的误差由两部分组成:

  • Sampling Error:因为只能采样有限个 (N) 样本,导致估计的 (\hat{T}) 和真实的 (T) 不一致。
  • Approximation Error:因为网络容量有限或优化不充分,导致 (\hat{Q}k \neq \hat{T}\hat{Q}{k-1})。

渐进偏差:在数据有限时,模型最终会收敛到一个由这两者决定的误差球内,而不是精确的 (Q^*)。单次贝尔曼备份产生的微小误差,会通过 (1, \gamma, \gamma^2, \dots) 的形式在后续的迭代中不断累积,形成指数衰减的加权和,最终固化为不可消除的固有偏差。导致在实际中用神经网络加采样数据的DQN类算法,永远无法完美收敛到真实的 Q∗Q^*。

前面的推导都基于无穷范数(即找出所有状态-动作对中最坏的那个误差)。这会带来严重的维度灾难,因为需要 (\log(|S||A|)) 的联合界,要求数据覆盖每一个角落。在实际工程中,不需要保证所有状态都预测准确,只需要保证在策略实际访问到的状态分布 (\mu) 下期望误差小即可。这是深度强化学习(如 DQN 使用经验回放池分布)能够在高维状态空间下工作的理论基础。

← 全部文章 edit on github →