模仿学习
虽然强化学习不需要有监督学习的标签数据,但是它十分依赖于奖励函数的设置,在很多场景中,奖励函数并未给定,或奖励信号极其稀疏,此时随机设计的奖励函数将无法保证强化学习训练出来的策略满足实际需要。假设存在一个专家智能体,其策略可以看成最优策略,就可以通过直接模仿这个专家在环境中交互的状态动作数据来训练一个策略,并且不需要用到环境提供的奖励信号。
在模仿学习的框架下,专家能提供一系列状态动作对 ( s t , a t ) (s_t,a_t) ( s t , a t ) ,表示专家在 s t s_t s t 环境下做出了 a t a_t a t 的动作,而模仿者的任务就是利用这些专家数据进行训练,无须奖励信号就可以达到一个接近专家的策略。
行为克隆
行为克隆 BC 就是直接使用监督学习算法,将专家数据 ( s t , a t ) (s_t,a_t) ( s t , a t ) 中的 s t s_t s t 作为输入, a t a_t a t 作为标签,则学习的目标为
θ ⋆ = arg max θ E ( s , a ) ∼ D [ L ( π θ ( s ) , a ) ] \theta^\star=\underset{\theta}{\argmax}E_{(s,a)\sim D}[L(\pi_\theta(s),a)]
θ ⋆ = θ a r g m a x E ( s , a ) ∼ D [ L ( π θ ( s ) , a ) ]
其中 D D D 是专家的数据集, L L L 是对应监督学习框架下的损失函数。在训练数据量比较大的时候,BC 能很快学习到一个不错的策略,而且 BC 的实现简单,所以很多实际场景下它都可以作为策略预训练的方法。但是 BC 的局限也十分明显,当数据量较小时,它只能在专家数据的状态分布下预测的比较准,但是只要存在一点偏差,就有可能导致下一个状态是没见过的,从而导致偏离专家策略的数据分布,最终该策略在真实环境下不能得到好的效果,这就是行为克隆的复合误差。
行为克隆的目的是模仿专家行为,本质上是监督学习,而不是强化学习。行为克隆需要实现事先准备一个数据集,由状态-动作对的二元组构成
D = { ( s 1 , a 1 ) , ⋯ , ( s n , a n ) } D=\{(s_1,a_1),\cdots,(s_n,a_n)\}
D = { ( s 1 , a 1 ) , ⋯ , ( s n , a n ) }
最小化智能体预测动作与专家动作的差异,监督学习损失函数 L ( π θ ( s ) , a ) L(\pi_\theta(s),a) L ( π θ ( s ) , a ) 如下
离散动作空间使用交叉熵损失 L ( π θ ( s ) , a ) = − 1 N ∑ i = 1 N ∑ a ∈ A I ( a = a i ) log π θ ( a ∣ s i ) L(\pi_\theta(s),a)=-\frac{1}{N}\sum_{i=1}^N\sum_{a\in A}I(a=a_i)\log\pi_\theta(a\vert s_i) L ( π θ ( s ) , a ) = − N 1 ∑ i = 1 N ∑ a ∈ A I ( a = a i ) log π θ ( a ∣ s i )
连续动作空间使用均方误差损失 L ( π θ ( s ) , a ) = 1 N ∑ i = 1 N ∥ a i − π θ ( s i ) ∥ 2 2 L(\pi_\theta(s),a)=\frac{1}{N}\sum_{i=1}^N\Vert a_i-\pi_\theta(s_i)\Vert_2^2 L ( π θ ( s ) , a ) = N 1 ∑ i = 1 N ∥ a i − π θ ( s i ) ∥ 2 2
DAgger 算法
DAgger 是迭代式数据集聚合算法,核心目标是通过当前策略采样+专家标注+数据累积训练,让训练分布逐步逼近策略执行时的真实分布,最终训练出确定性平稳策略。它的核心目标是解决行为克隆中存在的分布偏移问题,行为克隆直接在专家轨迹数据集熵训练策略,存在致命缺陷:
训练分布不等于测试分布:训练时模型学习专家状态分布,但测试时模型学习专家状态分布 ρ π ⋆ \rho^{\pi^\star} ρ π ⋆ ,但是在测试时模型在自身策略产生的状态分布 ρ π \rho^{\pi} ρ π 上执行,导致分布偏移
误差累积:初始小的误差会引导策略进入专家未见过的状态,导致后续误差放大,最终策略失效
DAgger 需要一个专家策略 π ⋆ \pi^\star π ⋆ ,它的工作流程如下
初始化
初始化数据集 D = ∅ D=\varnothing D = ∅
初始化策略 π ^ 1 ∈ Π \hat{\pi}_1\in\Pi π ^ 1 ∈ Π ,可任意选择
迭代训练 N N N 次
构造混合策略 π i = β i π ⋆ + ( 1 − β i ) π ^ i \pi_i=\beta_i\pi^\star+(1-\beta_i)\hat{\pi}_i π i = β i π ⋆ + ( 1 − β i ) π ^ i ,其中 β i ∈ [ 0 , 1 ] \beta_i\in[0,1] β i ∈ [ 0 , 1 ] 用于控制专家策略的采样比例
在 DAgger 中的 β i \beta_i β i 无参考
在 DAgger-λ 中使用 β i = λ i − 1 \beta_i=\lambda^{i-1} β i = λ i − 1 ,指数衰减
在 DAgger-γ 中使用 β i = γ \beta_i=\gamma β i = γ ,为固定值
在 SafeDAgger 中根据状态风险动态调整,非固定衰减
用 π i \pi_i π i 采样 T T T 步轨迹,收集所有访问过的状态 s s s ,对每个状态 s s s ,询问专家策略得到最优动作 a ⋆ = π ⋆ ( s ) a^\star=\pi^\star(s) a ⋆ = π ⋆ ( s ) ,构造子数据集 D i = { ( s , π ⋆ ( s ) ) } D_i=\{(s,\pi^\star(s))\} D i = { ( s , π ⋆ ( s ) ) }
累积数据集 D = D ∪ D i D=D\cup D_i D = D ∪ D i ,不替换旧数据,持续扩充覆盖当前策略可能遇到的状态
在聚合数据集 D D D 上训练新策略 π ^ i + 1 = arg min π E ( s , a ) ∈ D [ L ( π ^ i + 1 ( s ) , a ) ] \hat{\pi}_{i+1}=\underset{\pi}{\argmin}E_{(s,a)\in D}[L(\hat{\pi}_{i+1}(s),a)] π ^ i + 1 = π a r g m i n E ( s , a ) ∈ D [ L ( π ^ i + 1 ( s ) , a ) ]
最终在验证集上选择性能最优的策略 π ^ ∈ { π ^ 1 , ⋯ , π ^ N + 1 } \hat{\pi}\in\{\hat{\pi}_1,\cdots,\hat{\pi}_{N+1}\} π ^ ∈ { π ^ 1 , ⋯ , π ^ N + 1 }
逆强化学习 IRL
逆强化学习又称为逆最优控制,是一种从专家行为示范中反推其背后奖励函数的机器学习方法,核心是解决强化学习中奖励函数设计困难的问题。逆强化学习假设专家行为是某个未知奖励函数下的最优策略,通过观察专家轨迹推断该奖励函数,再用强化学习求解该奖励下的最优策略。
经典 IRL 已知专家策略 π E \pi_E π E ,反推出奖励函数 R R R ,使得 π E \pi_E π E 在 R R R 下是最优策略。专家策略是真实奖励 R ⋆ R^\star R ⋆ 下的最优策略,即对任意状态 s s s 都有 V π E ( s ) = V ⋆ ( s ) V^{\pi_E}(s)=V^\star(s) V π E ( s ) = V ⋆ ( s ) ,其中 V ⋆ ( s ) V^\star(s) V ⋆ ( s ) 为最优价值函数。奖励函数可以表示为状态-动作特征的线性组合 R ( s , a ) = ω T φ ( s , a ) R(s,a)=\omega^T\varphi(s,a) R ( s , a ) = ω T φ ( s , a ) ,其中 φ ( s , a ) \varphi(s,a) φ ( s , a ) 是状态动作特征向量, ω \omega ω 是权重向量。核心目标就是寻找一个权重,使得专家策略不仅最优,而且也显著优于其他所有策略,即满足最大边际约束。
基于奖励的线性假设,定义特征期望
μ π = E π [ ∑ t = 0 ∞ γ t φ ( s t , a t ) ] \mu_\pi=E_\pi\Big[\sum_{t=0}^\infty\gamma^t\varphi(s_t,a_t)\Big]
μ π = E π [ t = 0 ∑ ∞ γ t φ ( s t , a t ) ]
若从状态 s s s 出发,记作 μ π ( s ) \mu_\pi(s) μ π ( s ) ,结合奖励的线性假设,价值函数可以重写为权重与特征期望的内积
V π ( s ) = ω T μ π ( s ) V_\pi(s)=\omega^T\mu_\pi(s)
V π ( s ) = ω T μ π ( s )
同理可以得到专家策略的价值函数
V π E ( s ) = ω T μ π E ( s ) V_{\pi_E}(s)=\omega^T\mu_{\pi_E}(s)
V π E ( s ) = ω T μ π E ( s )
为保证专家策略严格最优,引入边际 δ > 0 \delta>0 δ > 0 ,要求专家策略的价值函数不小于任意其他策略的价值函数加边际
V π E ( s ) ≥ V π ( s ) + δ V_{\pi_E}(s)\geq V_\pi(s)+\delta
V π E ( s ) ≥ V π ( s ) + δ
将价值函数的线性形式带入,约束转化为关于权重 ω \omega ω 的线性约束
ω T ( μ π E ( s ) − μ π ( s ) ) ≥ δ ∀ s ∈ S , ∀ π ∈ Π , π ≠ π E \omega^T(\mu_{\pi_E}(s)-\mu_\pi(s))\geq\delta\quad\forall s\in S,\forall\pi\in\Pi,\pi\not=\pi_E
ω T ( μ π E ( s ) − μ π ( s ) ) ≥ δ ∀ s ∈ S , ∀ π ∈ Π , π = π E
目标是找到最小范数的权重 ω \omega ω ,避免奖励函数过大,同时满足所有最大边际约束,即求解以下的线性规划问题
min ω ∥ ω ∥ 2 2 s . t . ω T ( μ π E ( s ) − μ π ( s ) ) ≥ δ ∀ s ∈ S , ∀ π ∈ Π , π ≠ π E \underset{\omega}{\min}\Vert\omega\Vert_2^2\\s.t.\quad\omega^T(\mu_{\pi_E}(s)-\mu_\pi(s))\geq\delta\quad\forall s\in S,\forall\pi\in\Pi,\pi\not=\pi_E
ω min ∥ ω ∥ 2 2 s . t . ω T ( μ π E ( s ) − μ π ( s ) ) ≥ δ ∀ s ∈ S , ∀ π ∈ Π , π = π E
其中 Π \Pi Π 是所有可能策略的集合。IRL 的工作流程如下
初始化
初始化专家轨迹,计算专家特征期望 μ π E \mu_{\pi_E} μ π E
初始化权重 ω 0 = 0 \omega_0=0 ω 0 = 0 ,策略集合 Π = { π E } \Pi=\{\pi_E\} Π = { π E } ,初始仅包含专家策略
迭代优化
利用当前权重 ω k \omega_k ω k 计算奖励 R k ( s , a ) = ω k T φ ( s , a ) R_k(s,a)=\omega^T_k\varphi(s,a) R k ( s , a ) = ω k T φ ( s , a )
在奖励 R k R_k R k 下通过迭代求解最优策略 π k ⋆ \pi^\star_k π k ⋆
验证 π k ⋆ \pi_k^\star π k ⋆ 是否满足最大边际约束,即对所有 s s s ,是否满足 ω k T ( μ π E ( s ) − μ π k ⋆ ( s ) ) ≥ δ \omega^T_k(\mu_{\pi_E}(s)-\mu_{\pi_k^\star}(s))\geq\delta ω k T ( μ π E ( s ) − μ π k ⋆ ( s ) ) ≥ δ
若 π k ⋆ \pi_k^\star π k ⋆ 违反上述约束,则将该策略加入到策略集合 Π \Pi Π 中
求解上述线性规划问题,更新权重 w k + 1 w_{k+1} w k + 1 使其满足所有已加入策略的约束,继续迭代更新
若新策略未违反约束,则终止迭代
输出最终权重 ω ⋆ = ω k \omega^\star=\omega_k ω ⋆ = ω k ,奖励函数 R ⋆ ( s , a ) = ( ω ⋆ ) T φ ( s , a ) R^\star(s,a)=(\omega^\star)^T\varphi(s,a) R ⋆ ( s , a ) = ( ω ⋆ ) T φ ( s , a )
学徒学习
是 IRL 的重要变体,不追求精确恢复奖励,而是学习与专家性能相当的策略,核心是特征期望匹配,寻找策略 π \pi π 使得其特征期望 μ π \mu_\pi μ π 与专家特征期望 μ π E \mu_{\pi_E} μ π E 尽可能接近,即
min π ∥ μ π − μ π E ∥ 2 \underset{\pi}{\min}\Vert\mu_\pi-\mu_{\pi_E}\Vert_2
π min ∥ μ π − μ π E ∥ 2
等价于学习权重 ω \omega ω 使得 μ π E \mu_{\pi_E} μ π E 是最优特征期望,再用 ω \omega ω 来求解最优策略。工作流程如下
初始化
初始化专家轨迹,计算专家特征期望 μ π E \mu_{\pi_E} μ π E
初始化策略 π 0 = 0 \pi_0=0 π 0 = 0
迭代优化
用当前策略 π k \pi_k π k 与环境交互,计算其特征期望 μ π k \mu^{\pi_k} μ π k
求解权重 ω k \omega_k ω k 使得专家特征期望最优 ω k = arg max ω min π ω T ( μ π E − μ π ) \omega_k=\underset{\omega}{\argmax}\underset{\pi}{\min}\omega^T(\mu^{\pi_E}-\mu^\pi) ω k = ω a r g m a x π min ω T ( μ π E − μ π )
利用奖励函数 R k ( s , a ) = ω k T φ ( s , a ) R_k(s,a)=\omega^T_k\varphi(s,a) R k ( s , a ) = ω k T φ ( s , a ) ,通过迭代求解最优策略 π k + 1 \pi_{k+1} π k + 1
判断收敛,对于所有的 s s s 是否满足 ∥ μ π E ( s ) − μ π k ⋆ ( s ) ∥ 2 ≤ δ \Vert\mu_{\pi_E}(s)-\mu_{\pi_k^\star}(s)\Vert_2\leq\delta ∥ μ π E ( s ) − μ π k ⋆ ( s ) ∥ 2 ≤ δ
若违反约束,则进入下一轮迭代
若未违反约束,则终止迭代,输出当前策略
输出最终权重 π ⋆ = π k \pi^\star=\pi_k π ⋆ = π k
最大熵逆强化学习
最大熵强化学习是 IRL 的一种重要变体,解决了传统的 IRL 中奖励函数学习的歧义性问题,即存在多个奖励函数都能解释专家行为,而最大熵逆强化学习通过引入最大熵原理选择最合理的那个。
传统 IRL 的问题在于解不唯一,即多个奖励函数可能产生相同的最优策略,而它通过最大熵原理选择在满足约束条件下熵最大的分布。假设专家行为是概率性的,轨迹出现概率与累积奖励正相关,同时最大化轨迹分布的熵。
p ( τ ) ∝ exp ( ∑ t T r ( s t , a t ) ) p(\tau)\propto\exp\Big(\sum_t^Tr(s_t,a_t)\Big)
p ( τ ) ∝ exp ( t ∑ T r ( s t , a t ) )
这是 Boltzmann 分布,确保高回报轨迹更可能出现,同时保留行为多样性。MaxEnt IRL 的目标是找到奖励函数 r r r ,使专家轨迹的对数似然最大化,同时满足最大熵约束
max r ∑ τ ∼ D log p ( τ ∣ r ) + λ H ( p ) \underset{r}{\max}\sum_{\tau\sim D}\log p(\tau\vert r)+\lambda H(p)
r max τ ∼ D ∑ log p ( τ ∣ r ) + λ H ( p )
其中的 D = { τ 1 , τ 2 , ⋯ , τ N } D=\{\tau_1,\tau_2,\cdots,\tau_N\} D = { τ 1 , τ 2 , ⋯ , τ N } 是专家示范轨迹,其中 τ = { s 0 , a 0 , s 1 , a 1 , ⋯ , s T } \tau=\{s_0,a_0,s_1,a_1,\cdots,s_T\} τ = { s 0 , a 0 , s 1 , a 1 , ⋯ , s T } 。其中的 H ( p ) = − ∑ τ p ( τ ) log p ( τ ) H(p)=-\sum_\tau p(\tau)\log p(\tau) H ( p ) = − ∑ τ p ( τ ) log p ( τ ) 是轨迹分布的熵, λ \lambda λ 是平衡似然与熵的系数,当 λ = 1 \lambda=1 λ = 1 时,目标等价于最大化对数似然+熵,则可以将上述公式重写为
max r ∑ τ ∼ D log exp ( ∑ t r ( s t , a t ) ) Z ( r ) − ∑ τ exp ( ∑ t r ( s t , a t ) ) Z ( r ) log exp ( ∑ t r ( s t , a t ) ) Z ( r ) \underset{r}{\max}\sum_{\tau\sim D}\log\frac{\exp(\sum_t r(s_t,a_t))}{Z(r)}-\sum_\tau\frac{\exp(\sum_tr(s_t,a_t))}{Z(r)}\log\frac{\exp(\sum_tr(s_t,a_t))}{Z(r)}
r max τ ∼ D ∑ log Z ( r ) exp ( ∑ t r ( s t , a t ) ) − τ ∑ Z ( r ) exp ( ∑ t r ( s t , a t ) ) log Z ( r ) exp ( ∑ t r ( s t , a t ) )
其中 Z ( r ) = ∑ τ exp ( ∑ t r ( s t , a t ) ) Z(r)=\sum_\tau\exp(\sum_tr(s_t,a_t)) Z ( r ) = ∑ τ exp ( ∑ t r ( s t , a t ) ) 是配分函数。
通常假设奖励函数是状态特征的线性组合,即
r ( s , a ) = ω T φ ( s , a ) r(s,a)=\omega^T\varphi(s,a)
r ( s , a ) = ω T φ ( s , a )
MaxEnt IRL 的关键是专家轨迹的特征期望应与学习到的策略的特征期望匹配。定义专家期望为
μ π E = 1 N ∑ i N ∑ t T i γ t φ ( s t , a t ) \mu_{\pi_E}=\frac{1}{N}\sum_i^N\sum_t^{T_i}\gamma^t\varphi(s_t,a_t)
μ π E = N 1 i ∑ N t ∑ T i γ t φ ( s t , a t )
定义策略特征期望
μ π θ = E π θ [ ∑ t = 0 ∞ γ t φ ( s t , a t ) ] \mu_{\pi_\theta}=E_{\pi_\theta}\Big[\sum_{t=0}^\infty\gamma^t\varphi(s_t,a_t)\Big]
μ π θ = E π θ [ t = 0 ∑ ∞ γ t φ ( s t , a t ) ]
其中 π θ \pi_\theta π θ 是由奖励函数 ω T φ ( s , a ) \omega^T\varphi(s,a) ω T φ ( s , a ) 诱导的最大熵策略
π θ ( a ∣ s ) = exp ( Q π θ ( s , a ) ) ∑ a ′ exp ( Q π θ ( s , a ′ ) ) \pi_\theta(a\vert s)=\frac{\exp(Q_{\pi_\theta}(s,a))}{\sum_{a^\prime}\exp(Q_{\pi_\theta}(s,a^\prime))}
π θ ( a ∣ s ) = ∑ a ′ exp ( Q π θ ( s , a ′ ) ) exp ( Q π θ ( s , a ) )
其中的 Q π θ ( s , a ) = r ( s , a ) + γ E s ′ [ V π θ ( s ′ ) ] Q_{\pi_\theta}(s,a)=r(s,a)+\gamma E_{s^\prime}[V_{\pi_\theta}(s^\prime)] Q π θ ( s , a ) = r ( s , a ) + γ E s ′ [ V π θ ( s ′ ) ] 是 Soft Q 函数, V π θ ( s ) = log ∑ a exp ( Q π θ ( s , a ) ) V_{\pi_\theta}(s)=\log\sum_a\exp(Q_{\pi_\theta}(s,a)) V π θ ( s ) = log ∑ a exp ( Q π θ ( s , a ) ) 是 Soft 值函数。MaxEnt IRL 的优化问题可以转化为最小化专家特征期望与策略特征期望的 KL 散度,即
min π θ D K L ( μ π θ ∥ μ π E ) \underset{\pi_\theta}{\min}D_{KL}(\mu_{\pi_\theta}\Vert \mu_{\pi_E})
π θ min D K L ( μ π θ ∥ μ π E )
计算其梯度为
∇ θ D K L = ( μ π θ − μ π E ) T ∇ θ μ π θ \nabla_\theta D_{KL}=(\mu_{\pi_\theta}-\mu_{\pi_E})^T\nabla_\theta\mu_{\pi_\theta}
∇ θ D K L = ( μ π θ − μ π E ) T ∇ θ μ π θ
由于 μ π θ = ∑ s d π θ ( s ) ∑ a π θ ( a ∣ s ) φ ( s , a ) \mu_{\pi_\theta}=\sum_s d_{\pi_\theta}(s)\sum_a\pi_\theta(a\vert s)\varphi(s,a) μ π θ = ∑ s d π θ ( s ) ∑ a π θ ( a ∣ s ) φ ( s , a ) ,其中 d π θ ( s ) d_{\pi_\theta}(s) d π θ ( s ) 是策略 π θ \pi_\theta π θ 下的状态访问分布,对其求偏导可以得到
∇ θ μ π θ = ∑ s d π θ ( s ) ∑ a π θ ( a ∣ s ) ( I − γ P π θ ) + φ ( s , a ) φ ( s , a ) T \nabla_\theta\mu_{\pi_\theta}=\sum_sd_{\pi_\theta}(s)\sum_a\pi_\theta(a\vert s)(I-\gamma P_{\pi_\theta})^+\varphi(s,a)\varphi(s,a)^T
∇ θ μ π θ = s ∑ d π θ ( s ) a ∑ π θ ( a ∣ s ) ( I − γ P π θ ) + φ ( s , a ) φ ( s , a ) T
其中 P π θ ( s ′ ∣ s ) = ∑ a π ( a ∣ s ) P ( s ′ ∣ s , a ) P_{\pi_\theta}(s^\prime\vert s)=\sum_a\pi(a\vert s)P(s^\prime\vert s,a) P π θ ( s ′ ∣ s ) = ∑ a π ( a ∣ s ) P ( s ′ ∣ s , a ) 是状态转移矩阵,而 ( I − γ P π θ ) + (I-\gamma P_{\pi_\theta})^+ ( I − γ P π θ ) + 是伪逆矩阵,状态访问分布 d π θ ( s ) = ( 1 − γ ) ∑ t = 0 ∞ γ t P ( s t = s ∣ π θ ) d_{\pi_\theta}(s)=(1-\gamma)\sum_{t=0}^\infty\gamma^tP(s_t=s\vert\pi_\theta) d π θ ( s ) = ( 1 − γ ) ∑ t = 0 ∞ γ t P ( s t = s ∣ π θ )
MaxEnt IRL 算法的流程如下
初始化
初始化特征函数 φ ( s , a ) \varphi(s,a) φ ( s , a )
初始化奖励参数 θ \theta θ
初始化折扣因子 γ \gamma γ ,学习率 α \alpha α ,迭代次数 K K K
计算专家策略特征期望 μ π θ = E π θ [ ∑ t = 0 ∞ γ t φ ( s t , a t ) ] \mu_{\pi_\theta}=E_{\pi_\theta}\Big[\sum_{t=0}^\infty\gamma^t\varphi(s_t,a_t)\Big] μ π θ = E π θ [ ∑ t = 0 ∞ γ t φ ( s t , a t ) ]
迭代优化
根据当前参数 θ \theta θ 计算最大熵策略 π θ ( a ∣ s ) = exp ( Q π θ ( s , a ) ) ∑ a ′ exp ( Q π θ ( s , a ′ ) ) \pi_\theta(a\vert s)=\frac{\exp(Q_{\pi_\theta}(s,a))}{\sum_{a^\prime}\exp(Q_{\pi_\theta}(s,a^\prime))} π θ ( a ∣ s ) = ∑ a ′ e x p ( Q π θ ( s , a ′ ) ) e x p ( Q π θ ( s , a ) )
通过 Bellman 方程求解 V π θ ( s ) = log ∑ a exp ( r ( s , a ) + γ E s ′ [ V π θ ( s ′ ) ] ) V_{\pi_\theta}(s)=\log\sum_a\exp(r(s,a)+\gamma E_{s^\prime}[V_{\pi_\theta}(s^\prime)]) V π θ ( s ) = log ∑ a exp ( r ( s , a ) + γ E s ′ [ V π θ ( s ′ ) ] )
计算策略特征期望 μ π θ = ∑ s d π θ ( s ) ∑ a π θ ( a ∣ s ) φ ( s , a ) \mu_{\pi_\theta}=\sum_s d_{\pi_\theta}(s)\sum_a\pi_\theta(a\vert s)\varphi(s,a) μ π θ = ∑ s d π θ ( s ) ∑ a π θ ( a ∣ s ) φ ( s , a )
计算梯度 ∇ θ D K L = ( μ π θ − μ π E ) T ∇ θ μ π θ \nabla_\theta D_{KL}=(\mu_{\pi_\theta}-\mu_{\pi_E})^T\nabla_\theta\mu_{\pi_\theta} ∇ θ D K L = ( μ π θ − μ π E ) T ∇ θ μ π θ
参数更新 θ = θ − ∇ θ D K L \theta=\theta-\nabla_\theta D_{KL} θ = θ − ∇ θ D K L
当期望差异 ∥ μ π θ − μ π E ∥ < ϵ \Vert \mu_{\pi_\theta}-\mu_{\pi_E}\Vert<\epsilon ∥ μ π θ − μ π E ∥ < ϵ 时停止迭代
生成对抗模仿学习 GAIL
生成对抗模仿学习 GAIL 是基于生成对抗网络的模仿学习,本质上生成对抗网络就是模仿学习。GAIL 的实质上是模仿了专家策略的占用度量 ρ E ( s , a ) \rho_E(s,a) ρ E ( s , a ) (策略的占用度量是指在特定策略下,状态-动作对被访问的期望频率,通常用于强化学习中评估策略的效果),即尽可能使得策略在环境中的所有状态动作对 ( s , a ) (s,a) ( s , a ) 的占用度量 ρ π ( s , a ) \rho_\pi(s,a) ρ π ( s , a ) 和专家策略的占用度量一致。为了达成这个目标,策略需要和环境惊醒交互,收集下一状态的信息并且进一步做出动作。
GAIL 算法中有一个判别器和一个策略,策略 π \pi π 相当于是生成器。在训练过程中,给定一个状态,策略会输出这个状态下应该采取的动作,而判别器 D D D 将状态动作对 ( s , a ) (s,a) ( s , a ) 作为输入,输出一个 [ 0 , 1 ] [0,1] [ 0 , 1 ] 的实数,表示判别器认为该状态动作对是来自智能体策略而非专家策略的概率。判别器的目标是尽量将专家数据的输出靠近 0,将生成器的输出靠近 1,这就可以区别两组数据。据此可以定义判别器的损失函数
L ( ω ) = − E ρ π [ log D ω ( s , a ) ] − E ρ E [ log ( 1 − D ω ( s , a ) ] L(\omega)=-E_{\rho_\pi}[\log D_\omega(s,a)]-E_{\rho_E}[\log(1-D_\omega(s,a)]
L ( ω ) = − E ρ π [ log D ω ( s , a ) ] − E ρ E [ log ( 1 − D ω ( s , a ) ]
其中 ω \omega ω 是判别器 D D D 的参数,有了判别器之后,模仿者的策略目标就是使其与环境交互产生的轨迹能被判别器误认为专家的轨迹,所以可以用判别器 D D D 的输出作为奖励来训练模仿者策略。模仿者策略在环境中采样得到状态 s s s ,并且采取动作 a a a ,此时该状态动作对 ( s , a ) (s,a) ( s , a ) 输入到判别器 D D D 中,输出 D ( s , a ) D(s,a) D ( s , a ) ,设置奖励为 r ( s , a ) = − log D ( s , a ) r(s,a)=-\log D(s,a) r ( s , a ) = − log D ( s , a ) 。之后即可利用强化学习算法,使用这些数据继续训练模仿者策略,最后在对抗不断进行之后,模仿者策略生成的数据分布接近专家策略的数据分布。
基于模型的强化学习
MBRL 时强化模型的核心范式,智能体在学习过程中,会先从与环境的交互数据中拟合出一个可预测环境状态转移与奖励生成的环境动力学模型,并基于该模型进行策略学习、轨迹规划与决策优化,从而大幅降低对真实环境交互样本的依赖,提升样本效率
强化学习的底层数学框架是马尔可夫决策过程 MDP,即 MDP 四元组 < S , A , P , R > <S,A,P,R> < S , A , P , R > 如下
状态空间 S S S ,即环境可能处于的所有状态集合
动作空间 A A A ,智能体可执行的所有动作集合
状态转移函数 P ( s ′ ∣ s , a ) P(s^\prime\vert s,a) P ( s ′ ∣ s , a ) ,给定当前状态 s s s 和动作 a a a ,转移到下一个状态 s ′ s^\prime s ′ 的概率
奖励函数 R ( s , a , s ′ ) R(s,a,s^\prime) R ( s , a , s ′ ) 即从状态 s s s 执行动作 a a a 转移到状态 s ′ s^\prime s ′ 的即时奖励
MBRL 的标准工作流程就是一个闭环迭代的过程,如下
数据采集:智能体用当前策略与真实环境交互,采集轨迹数据 D = { ( s , a , r , s ′ ) } D=\{(s,a,r,s^\prime)\} D = { ( s , a , r , s ′ ) }
模型学习:以采集的真实数据为训练集,通过监督学习优化模型参数,最小化模型对状态转移和奖励的预测误差
规划与策略优化:基于学习到的环境模型,生成虚拟交互轨迹与执行序列规划,基于学习到的模型优化策略与价值函数
将优化后的策略部署到真实环境中,回到数据采样步骤,持续迭代更新模型与策略
模型的精度、泛化性与不确定性建模能力,直接决定了 MBRL 算法的性能上限,主流的模型分为以下几类
确定性模型:输入状态-动作对,直接输出确定的下一时刻状态与奖励
概率模型:输出状态转移的概率分布,量化环境的不确定性
线性模型:假设环境动态为线性关系
隐空间世界模型:将高维观测编码到低维隐空间,再建模隐空间的动力学,解决高维输入的建模困难
规划是基于环境模型生成决策的核心环节,主流分为两大方法路线
基于轨迹优化的规划:不显式学习固定的策略,而是每一步都基于当前模型,在有限时间窗口内优化最优动作序列,例如 MPC。每一步都重新规划有限步数的动作序列,仅执行第一个动作,再基于新状态重新规划
基于策略优化的规划:用模型生成大量虚拟样本,再基于策略优化算法更新策略
RSSM 即 recurrent state-space model,是面向高维像素输入的 MBRL 的核心动力学模型。解决了纯确定性 RNN 无法建模环境不确定性和纯随机状态空间模型无法捕捉长时序依赖的核心痛点。
标准潜态 SSM 的生成过程如下
转移模型 s t ∼ p ( s t ∣ s t − 1 , a t − 1 ) s_t\sim p(s_t\vert s_{t-1},a_{t-1}) s t ∼ p ( s t ∣ s t − 1 , a t − 1 )
观测模型 o t ∼ p ( o t ∣ s t ) o_t\sim p(o_t\vert s_{t}) o t ∼ p ( o t ∣ s t )
奖励模型 r t ∼ p ( r t ∣ s t ) r_t\sim p(r_t\vert s_{t}) r t ∼ p ( r t ∣ s t )
RSSM 的核心创新点在于引入了确定性循环路径,将环境的潜在状态分解为确定性部分和随机性部分,如下
确定性状态模型 h t = f ( h t − 1 , s t − 1 , a t − 1 ) h_t=f(h_{t-1},s_{t-1},a_{t-1}) h t = f ( h t − 1 , s t − 1 , a t − 1 )
随机状态先验模型 s t ∼ p ( s t ∣ h t ) s_t\sim p(s_t\vert h_t) s t ∼ p ( s t ∣ h t )
观测模型 o t ∼ p ( o t ∣ h t , s t ) o_t\sim p(o_t\vert h_t,s_{t}) o t ∼ p ( o t ∣ h t , s t )
奖励模型 r t ∼ p ( r t ∣ h t , s t ) r_t\sim p(r_t\vert h_t,s_{t}) r t ∼ p ( r t ∣ h t , s t )
确定性状态模型
h t = f ( h t − 1 , s t − 1 , a t − 1 ) h_t=f(h_{t-1},s_{t-1},a_{t-1})
h t = f ( h t − 1 , s t − 1 , a t − 1 )
其中函数 f f f 由门控循环单元 GRU 实现,输入为上一时刻的确定性状态 h t − 1 h_{t-1} h t − 1 ,随机隐状态 s t − 1 s_{t-1} s t − 1 和动作 a t − 1 a_{t-1} a t − 1 的拼接向量。构建一条确定性的时序传递路径,让模型能访问所有历史时刻的信息,而非仅依赖上一时刻的随机隐状态,解决纯随机 SSM 无法长时序记忆信息的缺陷。
GRU 的内部更新公式如下,输入 x t = [ s t − 1 ; a t − 1 ] x_t=[s_{t-1};a_{t-1}] x t = [ s t − 1 ; a t − 1 ]
r t = σ ( W r ⋅ [ h t − 1 , x t ] + b r ) z t = σ ( W z ⋅ [ h t − 1 , x t ] + b z ) h ~ t = tanh ( W h ⋅ [ r t ⊙ h t − 1 , x t ] + b h ) h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t r_t=\sigma(W_r\cdot[h_{t-1},x_t]+b_r)\\z_t=\sigma(W_z\cdot[h_{t-1},x_t]+b_z)\\\tilde{h}_t=\tanh(W_h\cdot[r_t\odot h_{t-1},x_t]+b_h)\\h_t=(1-z_t)\odot h_{t-1}+z_t\odot\tilde{h}_t
r t = σ ( W r ⋅ [ h t − 1 , x t ] + b r ) z t = σ ( W z ⋅ [ h t − 1 , x t ] + b z ) h ~ t = tanh ( W h ⋅ [ r t ⊙ h t − 1 , x t ] + b h ) h t = ( 1 − z t ) ⊙ h t − 1 + z t ⊙ h ~ t
随机状态先验模型
s t ∼ p ( s t ∣ h t ) s_t\sim p(s_t\vert h_t)
s t ∼ p ( s t ∣ h t )
随机状态先验是 RSSM 开环规划的核心,在规划时,智能体无法获取未来的真实观测,仅能通过该模型在潜空间中完成前向推演。可以将先验分布参数化为对角协方差的高斯分布
p θ ( s t ∣ h t ) = N ( μ s ( h t ) , d i a g ( σ s ( h t ) ) ) p_\theta(s_t\vert h_t)=\mathcal{N}(\mu_s(h_t),\mathrm{diag}(\sigma_s(h_t)))
p θ ( s t ∣ h t ) = N ( μ s ( h t ) , d i a g ( σ s ( h t ) ) )
其中的 μ p \mu_p μ p 和 σ p \sigma_p σ p 是全连接神经网络,激活函数为 ReLU,输入确定性状态,分别输出先验分布的均值与标准差
观测重构模型
o t ∼ p ( o t ∣ h t , s t ) o_t\sim p(o_t\vert h_t,s_{t})
o t ∼ p ( o t ∣ h t , s t )
观测重构模型负责从隐状态 ( h t , s t ) (h_t,s_t) ( h t , s t ) 重构原始图像观测,为模型训练提供核心的重构监督信号,确保隐状态编码了环境中的所有关键视觉信息;另外可以将观测分布参数化为高斯分布均值由 DCNN 输出,协方差固定为单位矩阵
p θ ( o t ∣ h t , s t ) = N ( μ o , σ o I ) p_\theta(o_t\vert h_t,s_t)=\mathcal{N}(\mu_o,\sigma_oI)
p θ ( o t ∣ h t , s t ) = N ( μ o , σ o I )
其对数似然与重构图像和真实图像的均方误差仅相差一个常数项,所以训练中可以直接用 MSE 损失代替
ln p θ ( o t ∣ h t , s t ) ∝ − ∥ o t − D e c ( [ h t ; s t ] ) ∥ 2 2 \ln p_\theta(o_t\vert h_t,s_t)\propto-\Vert o_t-\mathrm{Dec}([h_t;s_t])\Vert^2_2
ln p θ ( o t ∣ h t , s t ) ∝ − ∥ o t − D e c ( [ h t ; s t ] ) ∥ 2 2
其中的 D e c \mathrm{Dec} D e c 为转置卷积解码器,输入为 h t h_t h t 和 s t s_t s t 的拼接向量
奖励预测模型
r t ∼ p ( r t ∣ h t , s t ) r_t\sim p(r_t\vert h_t,s_t)
r t ∼ p ( r t ∣ h t , s t )
奖励预测模型负责从隐状态预测即时奖励,是规划过程中评估动作序列优劣的核心依据;另外可以将奖励分布参数化为标量高斯分布,均值由全连接神经网络输出,采用 ReLU 激活,方差固定为 1,如下
p θ ( r t ∣ h t , s t ) = N ( μ r , σ r ) p_\theta(r_t\vert h_t,s_t)=\mathcal{N}(\mu_r,\sigma_r)
p θ ( r t ∣ h t , s t ) = N ( μ r , σ r )
其对数似然函数与预测奖励和真实奖励的 MSE 仅相差一个常数项,训练中可以用 MSE 损失代替
ln p θ ( r t ∣ h t , s t ) ∝ − ∥ r t − R e w ( [ h t ; s t ] ) ∥ 2 2 \ln p_\theta(r_t\vert h_t,s_t)\propto-\Vert r_t-\mathrm{Rew}([h_t;s_t])\Vert^2_2
ln p θ ( r t ∣ h t , s t ) ∝ − ∥ r t − R e w ( [ h t ; s t ] ) ∥ 2 2
其中 R e w \mathrm{Rew} R e w 为奖励预测网络,输入为 h t h_t h t 与 s t s_t s t 的拼接向量
后验推断模型
由于 RSSM 是非线性模型,无法直接求解隐状态的真实后验 p ( s t ∣ o ≤ t , a < t ) p(s_t\vert o_{\leq t},a_{<t}) p ( s t ∣ o ≤ t , a < t ) ,所以可以引入变分近似后验编码器,用于训练阶段从真实观测中推断出更精准的隐状态分布,为建模提供监督信号
q ( s 1 : T ∣ o 1 : T , a 1 : T ) = ∏ t = 1 T q ( s t ∣ h t , o t ) q(s_{1:T}\vert o_{1:T},a_{1:T})=\prod_{t=1}^Tq(s_t\vert h_t,o_t)
q ( s 1 : T ∣ o 1 : T , a 1 : T ) = t = 1 ∏ T q ( s t ∣ h t , o t )
后验分布参数化为对角协方差的高斯分布
q ϕ ( s t ∣ h t , o t ) = N ( μ q ( h t , E n c ( o t ) ) , d i a g ( σ q ( h t , E n c ( o t ) ) ) ) q_\phi(s_t\vert h_t,o_t)=\mathcal{N}(\mu_q(h_t,\mathrm{Enc}(o_t)),\rm{diag}(\sigma_q(h_t,\mathrm{Enc}(o_t))))
q ϕ ( s t ∣ h t , o t ) = N ( μ q ( h t , E n c ( o t ) ) , d i a g ( σ q ( h t , E n c ( o t ) ) ) )
其中的 μ q \mu_q μ q 和 σ q \sigma_q σ q 为全连接层,使用 ReLU 激活。输入为隐状态 h t h_t h t 和经过编码器处理的观测重构
RSSM 的训练目标
RSSM 的训练目标是最大化观测数据的对数似然 ln p ( o 1 : T ∣ a 1 : T ) \ln p(o_{1:T}\vert a_{1:T}) ln p ( o 1 : T ∣ a 1 : T ) ,通过变分推断可以得到对数似然的证据下界。观测的边缘对数似然定义为
ln p ( o 1 : T ∣ a 1 : T ) = ln ∫ ∏ t = 1 T p ( s t ∣ s t − 1 , a t − 1 ) p ( o t ∣ s t ) d s 1 : T \ln p(o_{1:T}\vert a_{1:T})=\ln\int\prod_{t=1}^Tp(s_t\vert s_{t-1},a_{t-1})p(o_t\vert s_t)ds_{1:T}
ln p ( o 1 : T ∣ a 1 : T ) = ln ∫ t = 1 ∏ T p ( s t ∣ s t − 1 , a t − 1 ) p ( o t ∣ s t ) d s 1 : T
引入近似后验 q ( s 1 : T ∣ o 1 : T , a 1 : T ) q(s_{1:T}\vert o_{1:T},a_{1:T}) q ( s 1 : T ∣ o 1 : T , a 1 : T ) ,对上述被积函数乘以 q ( s 1 : T ∣ o 1 : T , a 1 : T ) q ( s 1 : T ∣ o 1 : T , a 1 : T ) \frac{q(s_{1:T}\vert o_{1:T},a_{1:T})}{q(s_{1:T}\vert o_{1:T},a_{1:T})} q ( s 1 : T ∣ o 1 : T , a 1 : T ) q ( s 1 : T ∣ o 1 : T , a 1 : T ) ,改写成期望的形式,如下
ln p ( o 1 : T ∣ a 1 : T ) = ln E q ( s 1 : T ∣ o 1 : T , a 1 : T ) [ ∏ t = 1 T p ( o t ∣ s t ) p ( s t ∣ s t − 1 , a t − 1 ) q ( s t ∣ o ≤ t , a < t ) ] \ln p(o_{1:T}\vert a_{1:T})=\ln E_{q(s_{1:T}\vert o_{1:T},a_{1:T})}\Big[\frac{\prod_{t=1}^Tp(o_t\vert s_t)p(s_t\vert s_{t-1},a_{t-1})}{q(s_{t}\vert o_{\leq t},a_{<t})}\Big]
ln p ( o 1 : T ∣ a 1 : T ) = ln E q ( s 1 : T ∣ o 1 : T , a 1 : T ) [ q ( s t ∣ o ≤ t , a < t ) ∏ t = 1 T p ( o t ∣ s t ) p ( s t ∣ s t − 1 , a t − 1 ) ]
根据 Jensen 不等式,即 ln E [ X ] ≥ E [ ln X ] \ln E[X]\geq E[\ln X] ln E [ X ] ≥ E [ ln X ] ,可得
ln p ( o 1 : T ∣ a 1 : T ) ≥ E q ( s 1 : T ∣ o 1 : T , a 1 : T ) [ ∑ t = 1 T ( ln p ( o t ∣ s t ) + ln p ( s t ∣ s t − 1 , a t − 1 ) − ln q ( s t ∣ o ≤ t , a < t ) ) ] \ln p(o_{1:T}\vert a_{1:T})\geq E_{q(s_{1:T}\vert o_{1:T},a_{1:T})}\Big[\sum_{t=1}^T\big(\ln p(o_t\vert s_t)+\ln p(s_t\vert s_{t-1},a_{t-1})-\ln q(s_t\vert o_{\leq t},a_{<t})\big)\Big]
ln p ( o 1 : T ∣ a 1 : T ) ≥ E q ( s 1 : T ∣ o 1 : T , a 1 : T ) [ t = 1 ∑ T ( ln p ( o t ∣ s t ) + ln p ( s t ∣ s t − 1 , a t − 1 ) − ln q ( s t ∣ o ≤ t , a < t ) ) ]
根据 KL 散度的定义 K L ( q ∣ p ) = E q [ ln q − ln p ] \mathrm{KL}(q\vert p)=E_q[\ln q-\ln p] K L ( q ∣ p ) = E q [ ln q − ln p ] ,则上述公式可以写作
ln p ( o 1 : T ∣ a 1 : T ) ≥ ∑ t = 1 T ( E q ( s t ∣ o ≤ t , a < t ) [ ln p ( o t ∣ s t ) ] − E q ( s t ∣ o ≤ t , a < t ) [ K L ( q ( s t ∣ o ≤ t , a < t ) ∥ p ( s t ∣ s t − 1 , a t − 1 ) ) ] ) \ln p(o_{1:T}\vert a_{1:T})\geq \sum_{t=1}^T\Big(E_{q(s_t\vert o_{\leq t},a_{<t})}\Big[\ln p(o_t\vert s_t)\Big]-E_{q(s_t\vert o_{\leq t},a_{<t})}\Big[\mathrm{KL}\big(q(s_t\vert o_{\leq t},a_{<t})\Vert p(s_t\vert s_{t-1},a_{t-1})\big)\Big]\Big)
ln p ( o 1 : T ∣ a 1 : T ) ≥ t = 1 ∑ T ( E q ( s t ∣ o ≤ t , a < t ) [ ln p ( o t ∣ s t ) ] − E q ( s t ∣ o ≤ t , a < t ) [ K L ( q ( s t ∣ o ≤ t , a < t ) ∥ p ( s t ∣ s t − 1 , a t − 1 ) ) ] )
其中第一项为重构项,最大化该项等价于让模型从潜态重构的观测与真实观测尽可能一致;第二项为复杂度项,最小化该项等价于让编码器推断的后验分布与动力学模型的先验分布尽可能接近,约束单步潜态转移的准确性。
在 RSSM 中,由于 h t = f ( h t − 1 , s t − 1 , a t − 1 ) h_t=f(h_{t-1},s_{t-1},a_{t-1}) h t = f ( h t − 1 , s t − 1 , a t − 1 ) 是确定性映射,则先验 p ( s t ∣ s t − 1 , a t − 1 ) p(s_t\vert s_{t-1},a_{t-1}) p ( s t ∣ s t − 1 , a t − 1 ) 等价于 p ( s t ∣ h t ) p(s_t\vert h_t) p ( s t ∣ h t ) ,所以上述的复杂度项的 KL 散度可以简化为
K L ( q ( s t ∣ h t , o t ) ∥ p ( s t ∣ h t ) ) \mathrm{KL}\big(q(s_t\vert h_t,o_t)\Vert p(s_t\vert h_t)\big)
K L ( q ( s t ∣ h t , o t ) ∥ p ( s t ∣ h t ) )
同时,奖励预测的对数似然项与观测重构项完全类比,因此完整的 ELBO 需要加入奖励预测项
L E L B O = ∑ t = 1 T ( E q [ ln p ( o t ∣ s t ) ] + E q [ ln p ( r t ∣ s t ) ] − E q [ K L ( q ( s t ∣ h t , o t ) ∥ p ( s t ∣ h t ) ) ] ) L_{ELBO}=\sum_{t=1}^T\Big(E_q\big[\ln p(o_t\vert s_t)\big]+E_q\big[\ln p(r_t\vert s_t)\big]-E_q\big[\mathrm{KL}\big(q(s_t\vert h_t,o_t)\Vert p(s_t\vert h_t)\big)\big]\Big)
L E L B O = t = 1 ∑ T ( E q [ ln p ( o t ∣ s t ) ] + E q [ ln p ( r t ∣ s t ) ] − E q [ K L ( q ( s t ∣ h t , o t ) ∥ p ( s t ∣ h t ) ) ] )
RSSM 的训练目标为最大化 ELBO,所以损失函数应该为负的 ELBO。所以总的损失函数为三个部分
观测重构损失 L r e c o n = − ∑ t = 1 T E q [ ln p ( o t ∣ h t , s t ) ] L_{recon}=-\sum_{t=1}^TE_q\big[\ln p(o_t\vert h_t,s_t)\big] L r e c o n = − ∑ t = 1 T E q [ ln p ( o t ∣ h t , s t ) ]
奖励预测损失 L r e w a r d = − ∑ t = 1 T E q [ ln p ( r t ∣ h t , s t ) ] L_{reward}=-\sum_{t=1}^TE_q\big[\ln p(r_t\vert h_t,s_t)\big] L r e w a r d = − ∑ t = 1 T E q [ ln p ( r t ∣ h t , s t ) ]
KL 散度损失 L K L = ∑ t = 1 T E q [ K L ( q ( s t ∣ h t , o t ) ∥ p ( s t ∣ h t ) ) ] L_{KL}=\sum_{t=1}^TE_q\big[\mathrm{KL}\big(q(s_t\vert h_t,o_t)\Vert p(s_t\vert h_t)\big)\big] L K L = ∑ t = 1 T E q [ K L ( q ( s t ∣ h t , o t ) ∥ p ( s t ∣ h t ) ) ]
得到最终的损失如下
L ( θ ) = L r e c o n + L r e w a r d + L K L L(\theta)=L_{recon}+L_{reward}+L_{KL}
L ( θ ) = L r e c o n + L r e w a r d + L K L
Latent Overshooting 多步预测损失
由于标准 ELBO 仅训练单步转移、无法直接约束多步预测准确性的缺陷,对变分下界进行了多步扩展,是对 RSSM 训练的补充。先定义 d d d 步转移先验
p ( s t ∣ s t − d , a t − d , t − 1 ) = ∫ ∏ τ = t − d + 1 t p ( s τ ∣ s τ − 1 , a τ − 1 ) d s t − d + 1 : t − 1 p(s_t\vert s_{t-d},a_{t-d,t-1})=\int\prod_{\tau=t-d+1}^tp(s_\tau\vert s_{\tau-1},a_{\tau-1})ds_{t-d+1:t-1}
p ( s t ∣ s t − d , a t − d , t − 1 ) = ∫ τ = t − d + 1 ∏ t p ( s τ ∣ s τ − 1 , a τ − 1 ) d s t − d + 1 : t − 1
即从 t − d t-d t − d 时刻的潜态,经过 d d d 步动作序列之后得到 t t t 时刻潜态的边缘分布。Latent Overshooting 对 1 ≤ d ≤ D 1\leq d\leq D 1 ≤ d ≤ D 的所有步长的 ELBO 取平均,得到扩展的下界
1 D ∑ d = 1 D ln p d ( o 1 : T ) ≥ ∑ t − 1 T ( E q [ ln p ( o t ∣ s t ) ] − 1 D ∑ d = 1 D β d E q [ K L ( q ( s t ∣ o ≤ t ) ∥ p ( s t ∣ s t − d ) ) ] ) \frac{1}{D}\sum_{d=1}^D\ln p_d(o_{1:T})\geq\sum_{t-1}^T\Big(E_q\big[\ln p(o_t\vert s_t)\big]-\frac{1}{D}\sum_{d=1}^D\beta_dE_q\big[\mathrm{KL}(q(s_t\vert o_{\leq t})\Vert p(s_t\vert s_{t-d}))\big]\Big)
D 1 d = 1 ∑ D ln p d ( o 1 : T ) ≥ t − 1 ∑ T ( E q [ ln p ( o t ∣ s t ) ] − D 1 d = 1 ∑ D β d E q [ K L ( q ( s t ∣ o ≤ t ) ∥ p ( s t ∣ s t − d ) ) ] )
其中的 β d \beta_d β d 为权重系数,对应的损失函数如下
L r e c o n = − ∑ t = 1 T E q [ ln p ( o t ∣ h t , s t ) ] L r e w a r d = − ∑ t = 1 T E q [ ln p ( r t ∣ h t , s t ) ] L K L = 1 D ∑ d = 1 D β d E q [ K L ( q ( s t ∣ o ≤ t ) ∥ p ( s t ∣ s t − d ) ) ] L ( θ ) = L r e c o n + L r e w a r d + L K L L_{recon}=-\sum_{t=1}^TE_q\big[\ln p(o_t\vert h_t,s_t)\big]\\L_{reward}=-\sum_{t=1}^TE_q\big[\ln p(r_t\vert h_t,s_t)\big]\\L_{KL}=\frac{1}{D}\sum_{d=1}^D\beta_dE_q\big[\mathrm{KL}(q(s_t\vert o_{\leq t})\Vert p(s_t\vert s_{t-d}))\big]\\L(\theta)=L_{recon}+L_{reward}+L_{KL}
L r e c o n = − t = 1 ∑ T E q [ ln p ( o t ∣ h t , s t ) ] L r e w a r d = − t = 1 ∑ T E q [ ln p ( r t ∣ h t , s t ) ] L K L = D 1 d = 1 ∑ D β d E q [ K L ( q ( s t ∣ o ≤ t ) ∥ p ( s t ∣ s t − d ) ) ] L ( θ ) = L r e c o n + L r e w a r d + L K L
PlaNet
PlaNet 算法即 Deep Planning Network,是一种纯模型基强化学习算法。PlaNet 算法依赖于上述的潜空间动力学模型 RSSM 作为其核心的建模工具,融合了确定性循环记忆和随机潜态不确定性,解决纯确定性模型和纯随机模型的缺陷
PlaNet 的模型就是上述所说的 RSSM,PlaNet 的决策核心就是模型预测控制 MPC+交叉熵方法 CEM,规划完全在潜空间进行,无需生成图像。PlaNet 的决策的规划目标为在当前潜态信息下,搜索未来 H H H 步动作序列 a t : t + H a_{t:t+H} a t : t + H 使其最大化累积预测奖励 ∑ t a u = t t + H E [ p ( r τ ∣ s τ ) ] \sum_{tau=t}^{t+H}E[p(r_\tau\vert s_\tau)] ∑ t a u = t t + H E [ p ( r τ ∣ s τ ) ]
CEM 是一种基于重要性采样的无梯度全局优化算法,它的优化目标为最小化精英样本的经验分布与参数化动作分布之间的交叉熵,目标是找到分布参数 θ \theta θ 使得从分布 q θ ( a ) q_\theta(a) q θ ( a ) 中采样的动作序列的期望回报值最大,即
θ ⋆ = arg max θ E a ∼ q θ ( a ) [ J ^ ( a ) ] \theta^\star=\argmax_\theta E_{a\sim q_\theta(a)}[\hat{J}(a)]
θ ⋆ = θ a r g m a x E a ∼ q θ ( a ) [ J ^ ( a ) ]
其中的 J ^ ( a ) \hat{J}(a) J ^ ( a ) 为动作的期望回报,另外引入精英样本指示函数 I { J ^ ( a ) ≥ γ } I\{\hat{J}(a)\geq\gamma\} I { J ^ ( a ) ≥ γ } ,通过重要性采样之后,最大化期望回报等价于最大化精英样本在分布 q θ ( a ) q_\theta(a) q θ ( a ) 下的对数似然,即
θ ⋆ = arg max θ E a ∼ q θ ( a ) [ I { J ^ ( a ) ≥ γ } ln q θ ( a ) ] \theta^\star=\argmax_\theta E_{a\sim q_\theta(a)}\Big[I\{\hat{J}(a)\geq\gamma\}\ln q_\theta(a)\Big]
θ ⋆ = θ a r g m a x E a ∼ q θ ( a ) [ I { J ^ ( a ) ≥ γ } ln q θ ( a ) ]
该式子等价于最小化精英样本经验分布 p e l i t e ( a ) p_{elite}(a) p e l i t e ( a ) 与 q θ ( a ) q_\theta(a) q θ ( a ) 的交叉熵,即
θ ⋆ = arg max θ C E ( p e l i t e ( a ) ∥ q θ ( a ) ) \theta^\star=\argmax_\theta \mathrm{CE}(p_{elite}(a)\Vert q_\theta(a))
θ ⋆ = θ a r g m a x C E ( p e l i t e ( a ) ∥ q θ ( a ) )
对于连续的动作序列,可以使用时间相关的对角高斯分布作为参数化分布 q θ ( a ) q_\theta(a) q θ ( a ) ,此时最小化交叉熵等价于用精英样本的均值和标准差拟合高斯分布,即
q θ ( a ) = N ( μ , d i a g ( σ ) ) q_\theta(a)=\mathcal{N}(\mu,\mathrm{diag}(\sigma))
q θ ( a ) = N ( μ , d i a g ( σ ) )
MPC 是一种闭环控制方法,核心就是每步重规划,仅执行首动作,解决模型基强化学习的预测误差累积问题。在使用中,根据 CEM 规划的未来 H H H 步的最优动作序列,仅执行首个动作,丢弃掉剩余的动作,执行完一步之后,重新规划且执行首个动作。
得到 CEM+MPC 的工作流程如下
输入:当前隐状态的后验 q ( s t ∣ o ≤ t , a < t ) q(s_t\vert o_{\leq t},a_{<t}) q ( s t ∣ o ≤ t , a < t ) ,RSSM 转移模型 p ^ ( s τ ∣ s τ − 1 , a τ − 1 ) \hat{p}(s_\tau\vert s_{\tau-1},a_{\tau-1}) p ^ ( s τ ∣ s τ − 1 , a τ − 1 ) ,RSSM 奖励模型 p ^ ( r τ ∣ s τ ) \hat{p}(r_\tau\vert s_\tau) p ^ ( r τ ∣ s τ )
在规划开始之前,首先初始化一个时间依赖(即每个时间步的动作都有独立的均值和方差)的对角高斯分布,用于生成候选动作序列 q ( a t : t + H ) ∼ N ( μ t : t + H , σ t : t + H 2 I ) q(a_{t:t+H})\sim\mathcal{N}(\mu_{t:t+H},\sigma^2_{t:t+H}I) q ( a t : t + H ) ∼ N ( μ t : t + H , σ t : t + H 2 I ) ,初始均值设置为 0,初始方差设置为单位矩阵
从当前的高斯分布 q ( a t : t + H ) q(a_{t:t+H}) q ( a t : t + H ) 中,采样 J J J 个独立的候选动作序列 a t : t + H ( j ) ∼ q ( a t : t + H ) a_{t:t+H}^{(j)}\sim q(a_{t:t+H}) a t : t + H ( j ) ∼ q ( a t : t + H ) ,每个候选序列包含了 H H H 个时间步内的动作
在隐空间内评估每个候选的奖励,对于每个候选动作序列 a t : t + H ( j ) a_{t:t+H}^{(j)} a t : t + H ( j )
从当前隐状态后验采样初始隐状态 s t ( j ) ∼ q ( s t ∣ o ≤ t , a < t ) s_t^{(j)}\sim q(s_t\vert o_{\leq t},a_{<t}) s t ( j ) ∼ q ( s t ∣ o ≤ t , a < t ) ,是规划的起点
利用 RSSM 转移模型递归预测未来隐状态,对于每个时间步 τ = t , ⋯ , t + H − 1 \tau=t,\cdots,t+H-1 τ = t , ⋯ , t + H − 1
更新确定性隐状态 h τ + 1 ( j ) = f ( h r ( j ) , s τ ( j ) , a τ ( j ) ) h_{\tau+1}^{(j)}=f(h_r^{(j)},s_\tau^{(j)},a_\tau^{(j)}) h τ + 1 ( j ) = f ( h r ( j ) , s τ ( j ) , a τ ( j ) )
预测随机隐状态 s τ + 1 ( j ) ∼ p ^ ( s τ + 1 ∣ h τ + 1 ( j ) ) s_{\tau+1}^{(j)}\sim\hat{p}(s_{\tau+1}\vert h_{\tau+1}^{(j)}) s τ + 1 ( j ) ∼ p ^ ( s τ + 1 ∣ h τ + 1 ( j ) )
对于每一个隐状态,计算其奖励的期望 E [ p ^ ( r τ ∣ s τ ( j ) ) ] E[\hat{p}(r_\tau\vert s_\tau^{(j)})] E [ p ^ ( r τ ∣ s τ ( j ) ) ] ,计算每一条候选序列的总奖励 R ( j ) = ∑ τ = t + 1 t + H E [ p ^ ( r τ ∣ s τ ( j ) ) ] R^{(j)}=\sum_{\tau=t+1}^{t+H}E[\hat{p}(r_\tau\vert s_\tau^{(j)})] R ( j ) = ∑ τ = t + 1 t + H E [ p ^ ( r τ ∣ s τ ( j ) ) ]
将 J J J 个候选序列按照总奖励从高到低排序,选择前 K K K 个最优的候选,用这 K K K 个最优的候选,更新动作序列的分布参数,得到
新均值 μ t : t + H = 1 K ∑ a t : t + H ( k ) \mu_{t:t+H}=\frac{1}{K}\sum a_{t:t+H}^{(k)} μ t : t + H = K 1 ∑ a t : t + H ( k )
新方差 σ t : t + H 2 = 1 K − 1 ∑ ∥ a t : t + H ( k ) − μ t : t + H ∥ 2 2 \sigma^2_{t:t+H}=\frac{1}{K-1}\sum\Vert a^{(k)}_{t:t+H}-\mu_{t:t+H}\Vert^2_2 σ t : t + H 2 = K − 1 1 ∑ ∥ a t : t + H ( k ) − μ t : t + H ∥ 2 2
上述迭代训练执行了 I I I 步之后,动作序列的分布已收敛到最优区域。此时取最终分布的第一个时间步的均值作为当前要执行的动作 a t = μ t a_t=\mu_t a t = μ t 并返回
上述就是 CEM 规划器一步的执行过程,PlaNet 的训练流程如下
初始化数据集 D D D
随机初始化模型参数 θ \theta θ
对于每个更新步 c = 1 , ⋯ , C c=1,\cdots,C c = 1 , ⋯ , C 中
从数据集 D D D 中采样 B B B 组连续的时序序列块 { ( o t , a t , r t ) } i = 1 B ∼ D \{(o_t,a_t,r_t)\}_{i=1}^B\sim D { ( o t , a t , r t ) } i = 1 B ∼ D
对每个序列块,按时间步前向计算
RSSM 确定性隐状态序列 h t = f ( h t − 1 , s t − 1 , a t − 1 ) h_t=f(h_{t-1},s_{t-1},a_{t-1}) h t = f ( h t − 1 , s t − 1 , a t − 1 )
RSSM 输出后验分布 q ( s t ∣ h t , o t ) q(s_t\vert h_t,o_t) q ( s t ∣ h t , o t ) ,通过重参数化采样 s t s_t s t
RSSM 转移模型输出先验分布 p ^ ( s t ∣ h t ) \hat{p}(s_t\vert h_t) p ^ ( s t ∣ h t )
RSSM 观测模型计算重构对数似然 ln p ^ ( o t ∣ h t , s t ) \ln\hat{p}(o_t\vert h_t,s_t) ln p ^ ( o t ∣ h t , s t )
RSSM 观测模型计算奖励对数似然 ln p ^ ( r t ∣ h t , s t ) \ln\hat{p}(r_t\vert h_t,s_t) ln p ^ ( r t ∣ h t , s t )
若使用 Latent Overshooting,则计算所有 q ≤ d ≤ D q\leq d\leq D q ≤ d ≤ D 的多步先验分布与对应的 KL 散度
计算 RSSM 的损失函数 L ( θ ) L(\theta) L ( θ )
更新 RSSM 的参数
对于每个时间步 t = 1 , ⋯ , [ T R ] t=1,\cdots,[\frac{T}{R}] t = 1 , ⋯ , [ R T ] 中
用 RSSM 基于历史观测 o ≤ t o_{\leq t} o ≤ t 和动作 a < t a_{<t} a < t ,推断出当前隐状态的后验分布 q ( s t ∣ o ≤ t , a < t ) q(s_t\vert o_{\leq t},a_{<t}) q ( s t ∣ o ≤ t , a < t )
用 CEM 规划器,基于当前隐状态后验、RSSM 的转移模型和奖励模型,在隐空间中搜索最优的动作序列,取第一个动作的均值作为当前动作 a t a_t a t
可以给动作中添加高斯探索噪声 ϵ ∼ N ( 0 , σ ) \epsilon\sim\mathcal{N}(0,\sigma) ϵ ∼ N ( 0 , σ ) ,保证对环境的探索
连续执行该动作 R R R 次,累积得到的总奖励,并记录最终的观测 o t + 1 o_{t+1} o t + 1
将上述的完整回合轨迹加入到数据集 D D D 中
迭代上述步骤,直到模型收敛
Dreamer V1
Dreamer 是基于隐空间想象的模型基强化学习智能体,通过学习世界模型在紧凑隐空间中做轨迹想象,并沿想象轨迹反向传播值函数的解析梯度实现高效的策略学习。
由于在 PlaNet 算法中,使用 CEM 进行在线实时计算规划,每次决策都需要进行一次计算开销较大的规划。另外也考虑到想象模型视界 H H H 有限的问题,所以在 Dreamer V1 算法中,不再进行在线规划,而是采用 AC 算法框架,对应的数学模型如下
动作模型 a τ ∼ q ϕ ( a τ ∣ s τ ) a_\tau\sim q_\phi(a_\tau\vert s_\tau) a τ ∼ q ϕ ( a τ ∣ s τ )
价值模型 v ψ ( s τ ) ≈ E q ( ⋅ ∣ s τ ) ( ∑ τ = t ∞ γ τ − t r τ ) v_\psi(s_\tau)\approx E_{q(\cdot\vert s_\tau)}(\sum_{\tau=t}^\infty\gamma^{\tau-t}r_\tau) v ψ ( s τ ) ≈ E q ( ⋅ ∣ s τ ) ( ∑ τ = t ∞ γ τ − t r τ ) ,用折扣累积期望近似
价值估计:为了平衡价值估计的偏差和方差,同时覆盖有限想象视界外的长期回报,使用 λ \lambda λ 回报作为价值目标,提出三种基础价值估计
有限视界累积奖励 V R ( s τ ) = E q θ , q ϕ ( ∑ n = τ t + H γ n − r r n ) V_R(s_\tau)=E_{q_\theta,q_\phi}(\sum_{n=\tau}^{t+H}\gamma^{n-r}r_n) V R ( s τ ) = E q θ , q ϕ ( ∑ n = τ t + H γ n − r r n ) ,仅累积视界内的奖励,忽略视界外的回报,会造成短视行为
k 步 TD 回报 V N k ( s τ ) = E q θ , q ϕ ( ∑ n = τ h − 1 γ n − r r n + γ h − r v ψ ( s h ) ) V_N^k(s_\tau)=E_{q_\theta,q_\phi}(\sum_{n=\tau}^{h-1}\gamma^{n-r}r_n+\gamma^{h-r}v_\psi(s_h)) V N k ( s τ ) = E q θ , q ϕ ( ∑ n = τ h − 1 γ n − r r n + γ h − r v ψ ( s h ) ) ,其中 h = min ( τ + k , t + H ) h=\min(\tau+k,t+H) h = min ( τ + k , t + H ) ,结合 k 步真实想象奖励与 k 步之后的价值估计,k 越小偏差越大,而 k 越大方差越大
λ \lambda λ 回报 V λ ( s τ ) = ( 1 − λ ) ∑ n = 1 H − 1 λ n − 1 V N n ( s τ ) + λ h − 1 V N H ( s τ ) V_\lambda(s_\tau)=(1-\lambda)\sum_{n=1}^{H-1}\lambda^{n-1}V_N^n(s_\tau)+\lambda^{h-1}V_N^H(s_\tau) V λ ( s τ ) = ( 1 − λ ) ∑ n = 1 H − 1 λ n − 1 V N n ( s τ ) + λ h − 1 V N H ( s τ ) ,实际上就是对上面的 k 步回报做了指数加权平均,平衡偏差与方差
上述的三种价值估计,一般使用第三种估计方法。基于 V λ V_\lambda V λ 值估计定义动作模型和值模型的优化目标,如下
动作模型的最大化目标 max ϕ E q θ , q ϕ ( ∑ τ = t t + H V λ ( s τ ) ) \max_\phi E_{q_\theta,q_\phi}(\sum_{\tau=t}^{t+H}V_\lambda(s_\tau)) max ϕ E q θ , q ϕ ( ∑ τ = t t + H V λ ( s τ ) ) ,策略参数 ϕ \phi ϕ 的优化目标是最大化想象轨迹上所有回报之和
值模型的最小化目标 min ψ E q θ , q ϕ ( ∑ τ = t t + H 1 2 ∥ v ψ ( s τ ) − V λ ( s τ ) ∥ 2 ) \min_\psi E_{q_\theta,q_\phi}(\sum_{\tau=t}^{t+H}\frac{1}{2}\Vert v_\psi(s_\tau)-V_\lambda(s_\tau)\Vert^2) min ψ E q θ , q ϕ ( ∑ τ = t t + H 2 1 ∥ v ψ ( s τ ) − V λ ( s τ ) ∥ 2 ) ,值网络参数 ψ \psi ψ 的优化目标是最小化均方误差,让预测的状态值 v ψ ( s τ ) v_\psi(s_\tau) v ψ ( s τ ) 回归到目标值 V λ ( s τ ) V_\lambda(s_\tau) V λ ( s τ )
Dreamer V1 的训练流程与 PlaNet 相差不大,只是在 Dreamer V1 中利用 RSSM 构建隐空间想象环境,在想象轨迹上采用 AC 算法直接学习端到端的策略,通过 RSSM 反向传播值函数的解析梯度优化策略
初始化数据集 D D D
随机初始化模型参数 θ \theta θ
对于每个更新步 c = 1 , ⋯ , C c=1,\cdots,C c = 1 , ⋯ , C 中
从数据集 D D D 中采样 B B B 组连续的时序序列块 { ( o t , a t , r t ) } i = 1 B ∼ D \{(o_t,a_t,r_t)\}_{i=1}^B\sim D { ( o t , a t , r t ) } i = 1 B ∼ D
对每个序列块,按时间步前向计算
RSSM 确定性隐状态序列 h t = f ( h t − 1 , s t − 1 , a t − 1 ) h_t=f(h_{t-1},s_{t-1},a_{t-1}) h t = f ( h t − 1 , s t − 1 , a t − 1 )
RSSM 输出后验分布 q ( s t ∣ h t , o t ) q(s_t\vert h_t,o_t) q ( s t ∣ h t , o t ) ,通过重参数化采样 s t s_t s t
RSSM 转移模型输出先验分布 p ^ ( s t ∣ h t ) \hat{p}(s_t\vert h_t) p ^ ( s t ∣ h t )
RSSM 观测模型计算重构对数似然 ln p ^ ( o t ∣ h t , s t ) \ln\hat{p}(o_t\vert h_t,s_t) ln p ^ ( o t ∣ h t , s t )
RSSM 观测模型计算奖励对数似然 ln p ^ ( r t ∣ h t , s t ) \ln\hat{p}(r_t\vert h_t,s_t) ln p ^ ( r t ∣ h t , s t )
若使用 Latent Overshooting,则计算所有 q ≤ d ≤ D q\leq d\leq D q ≤ d ≤ D 的多步先验分布与对应的 KL 散度
计算 RSSM 的损失函数 L ( θ ) L(\theta) L ( θ )
更新 RSSM 的参数
对采样中的每个状态 s t s_t s t ,都生成一条想象轨迹 { ( s τ , a τ ) } τ = t t + H \{(s_\tau,a_\tau)\}_{\tau=t}^{t+H} { ( s τ , a τ ) } τ = t t + H
根据奖励模型计算奖励 E ( q θ ( r τ ∣ s τ ) E(q_\theta(r_\tau\vert s_\tau) E ( q θ ( r τ ∣ s τ ) ,根据值模型计算 V ( s τ ) V(s_\tau) V ( s τ )
根据上述的最大化和最小化目标更新动作模型和策略模型的参数
对于每个时间步 t = 1 , ⋯ , [ T R ] t=1,\cdots,[\frac{T}{R}] t = 1 , ⋯ , [ R T ] 中
用 RSSM 基于历史观测 o ≤ t o_{\leq t} o ≤ t 和动作 a < t a_{<t} a < t ,推断出当前隐状态的后验分布 q ( s t ∣ o ≤ t , a < t ) q(s_t\vert o_{\leq t},a_{<t}) q ( s t ∣ o ≤ t , a < t )
利用动作模型采样当前的动作 a t ∼ q ϕ ( a t ∣ s t ) a_t\sim q_\phi(a_t\vert s_t) a t ∼ q ϕ ( a t ∣ s t )
可以给动作中添加高斯探索噪声 ϵ ∼ N ( 0 , σ ) \epsilon\sim\mathcal{N}(0,\sigma) ϵ ∼ N ( 0 , σ ) ,保证对环境的探索
执行该动作,记录得到的奖励 r t r_t r t ,并记录最终的观测 o t + 1 o_{t+1} o t + 1
将上述的完整回合轨迹加入到数据集 D D D 中
迭代上述步骤,直到模型收敛
Dreamer V2
Dreamer V2 在 V1 的基础上引入了离散分类隐变量,另外也增加了 KL 散度平衡,进一步提升了模型的稳定性、泛化性与最终性能
Dreamer V2 放弃了高斯连续隐变量,选择使用离散隐变量,将 RSSM 模型修改如下
确定性状态模型 h t = f ( h t − 1 , s t − 1 , a t − 1 ) h_t=f(h_{t-1},s_{t-1},a_{t-1}) h t = f ( h t − 1 , s t − 1 , a t − 1 )
随机隐状态先验模型 z t ∼ p ( z t ∣ h t ) z_t\sim p(z_t\vert h_t) z t ∼ p ( z t ∣ h t ) 为离散分类分布
观测模型 o t ∼ p ( o t ∣ h t , z t ) o_t\sim p(o_t\vert h_t,z_{t}) o t ∼ p ( o t ∣ h t , z t )
奖励模型 r t ∼ p ( r t ∣ h t , z t ) r_t\sim p(r_t\vert h_t,z_{t}) r t ∼ p ( r t ∣ h t , z t )
后验分布模型 z t ∼ q ( z t ∣ h t , o t ) z_t\sim q(z_t\vert h_t,o_t) z t ∼ q ( z t ∣ h t , o t )
其中的隐状态 z t z_t z t 是由多个独立的分类变量构成,在 Dreamer V2 论文中采用 32 个分类变量,而每个分类变量中又包含 32 个类别,每个采样结果为 one-hot 向量,总隐空间维度为 1024。但是由于 one-hot 采样过程本身是不可导的,所以无法直接通过反向传播更新网络参数。所以在 Dreamer V2 采用直通梯度来解决这个问题。
直通梯度的核心思想就是:前向传播使用离散采样的 one-hot 结果,反向传播时直接跳过采样操作,将梯度完整传递给 Softmax 输出的概率向量,下面的代码就是基于自动微分的极简实现
1 2 3 sample = one_hot(draw(logits)) probs = softmax(logits) sample = sample + probs - stop_grad(probs)
在向前传播时, stop_grad(probs) 算子会保留 probs 的数值,但是截断其梯度,所以此时前向传播的输出为 sample=sample+probs-probs=sample ,即输出完全等于离散采样的 one-hot 向量,保证了隐状态的离散性
在反向传播时,由于 stop_grad(probs) 的梯度为 0,因此输出对 logits 的梯度如下
∂ sample ∂ logits = ∂ s ∂ logits + ∂ π ∂ logits − ∂ stopgrad ( π ) ∂ logits \frac{\partial\text{sample}}{\partial\text{logits}} = \frac{\partial\boldsymbol{s}}{\partial\text{logits}}+ \frac{\partial\boldsymbol{\pi}}{\partial \text{logits}} - \frac{\partial\text{stopgrad}(\boldsymbol{\pi})}{\partial \text{logits}}
∂ logits ∂ sample = ∂ logits ∂ s + ∂ logits ∂ π − ∂ logits ∂ stopgrad ( π )
其中的 ∂ s ∂ logits ≈ 0 \frac{\partial\boldsymbol{s}}{\partial\text{logits}}\approx0 ∂ logits ∂ s ≈ 0 即采样过程梯度几乎处处为 0,而且 ∂ stopgrad ( π ) ∂ logits = 0 \frac{\partial\text{stopgrad}(\boldsymbol{\pi})}{\partial \text{logits}}=0 ∂ logits ∂ stopgrad ( π ) = 0 即梯度截断。此时梯度最终化简如下
∂ sample ∂ logits = ∂ π ∂ logits \frac{\partial\text{sample}}{\partial\text{logits}}=\frac{\partial\boldsymbol{\pi}}{\partial \text{logits}}
∂ logits ∂ sample = ∂ logits ∂ π
即在反向传播时,直接绕过了采样的操作,直接从采样后的 one-hot 向量流到了 Softmax 的 logits 熵,解决了离散采样的不可导问题
在 RSSM 模型中,KL 散度是世界模型损失函数的核心正则项,用于约束后验分布与先验分布的差异,同时训练先验动力学的预测精度。对于两个相同类别数的分类分布的后验 q q q 和先验 p p p ,其 KL 散度的严格定义为
K L ( q ∣ p ) = ∑ i = 1 C q i log ( q i p i ) = − ∑ i = 1 C q i log p i − ( − ∑ i = 1 C q i log q i ) \mathrm{KL}(q\vert p)=\sum_{i=1}^Cq_i\log(\frac{q_i}{p_i})=-\sum_{i=1}^Cq_i\log p_i-(-\sum_{i=1}^Cq_i\log q_i)
K L ( q ∣ p ) = i = 1 ∑ C q i log ( p i q i ) = − i = 1 ∑ C q i log p i − ( − i = 1 ∑ C q i log q i )
其中的 q i q_i q i 是后验分布的第 i i i 个类别,而 p i p_i p i 为先验分布的第 i i i 个类别。由于在 Dreamer V2 中的 K K K 个分类变量相互独立,因此隐状态联合分布的总 KL 散度等于 K K K 个分类变量的 KL 散度之和,即
L K L = ∑ t = 1 T E q [ K L ( q ( s t ∣ h t , o t ) ∥ p ( s t ∣ h t ) ) ] = ∑ t = 1 T ∑ k = 1 K K L ( q ( k ) ∥ p ( k ) ) L_{KL}=\sum_{t=1}^TE_q\big[\mathrm{KL}\big(q(s_t\vert h_t,o_t)\Vert p(s_t\vert h_t)\big)\big]=\sum_{t=1}^T\sum_{k=1}^K\mathrm{KL}(q^{(k)}\Vert p^{(k)})
L K L = t = 1 ∑ T E q [ K L ( q ( s t ∣ h t , o t ) ∥ p ( s t ∣ h t ) ) ] = t = 1 ∑ T k = 1 ∑ K K L ( q ( k ) ∥ p ( k ) )
在 Dreamer V2 中提出 KL 平衡,分别缩放先验交叉熵和后验熵
L K L = ∑ t = 1 T ( − α ∑ i = 1 C q i log p i − ( 1 − α ) ( − ∑ i = 1 C q i log q i ) ) L_{KL}=\sum_{t=1}^T\Big(-\alpha\sum_{i=1}^Cq_i\log p_i-(1-\alpha)(-\sum_{i=1}^Cq_i\log q_i)\Big)
L K L = t = 1 ∑ T ( − α i = 1 ∑ C q i log p i − ( 1 − α ) ( − i = 1 ∑ C q i log q i ) )
其中的 α \alpha α 就是平衡系数,避免后验分布完全坍缩到先验,同时强制先验分布尽可能精准拟合后验分布,让世界模型的动力学先验具备长序列预测能力
Dreamer V3
Dreamer V3 相较于 V2,依旧是沿用先前的框架,即 RSSM+想象训练+AC 框架的思路,主要在于大幅强化了鲁棒性与可泛化性
在 V2 中将原始观测向量输入编码器,当观测数值量级差异极大时,观测重建损失的梯度会出现爆炸,导致表征学习失衡,所以需要针对不同观测范围做运行时的归一化。在 V3 中,将所有向量观测的编码器输入和解码器重建目标均经过 symlog 变换,配套的逆变换 symexp 用于推理时还原预测值,公式如下
s y m l o g ( x ) = s i g n ln ( ∣ x ∣ + 1 ) s y m e x p ( x ) = s i g n ( exp ( ∣ x ∣ ) + 1 ) \mathrm{symlog}(x)=\mathrm{sign}\ln(\vert x\vert+1)\\\mathrm{symexp}(x)=\mathrm{sign}(\exp(\vert x\vert)+1)
s y m l o g ( x ) = s i g n ln ( ∣ x ∣ + 1 ) s y m e x p ( x ) = s i g n ( exp ( ∣ x ∣ ) + 1 )
其中 symlog 是双对称对数变换,关于原点对称,完整保留输入时的符号,能避免梯度爆炸,且不影响小数值的学习精度
在 V2 中的离散潜在分布是直接由 Softmax 输出的,容易出现分布退化:即网络输出会让某一类别的概率趋近于 1,而其余类别趋近于 0,导致分布退化为确定性分布。此时 KL 散度会出现无界尖峰,引发训练梯度爆炸。所以将其参数化为 99%神经网络 Softmax 输出+1%均匀分布的混合分布,如下
1 probs = 0.99 * softmax(logits) + 0.01 * uniform(1 , K)
其中 K K K 为每个潜在变量的类别数,而 uniform(1,K) 为离散均匀分布
在 V2 的世界模型中,仅用单一项 KL 散度损失约束后验与先验分布,在 V3 将 KL 损失拆分为动力学损失和表征损失两个独立项,分别通过停止梯度分离优化目标,同时加入了 Free Bits 机制做数值钳制
L d y n = max ( 1 , K L ( s g ( q ( z t ∣ h t , x t ) ) ∥ p ( z t ∣ h t ) ) ) L r e p = max ( 1 , K L ( q ( z t ∣ h t , x t ) ∥ s g ( p ( z t ∣ h t ) ) ) ) L_{dyn}=\max(1,\mathrm{KL}(\mathrm{sg}(q(z_t\vert h_t,x_t))\Vert p(z_t\vert h_t)))\\L_{rep}=\max(1,\mathrm{KL}(q(z_t\vert h_t,x_t)\Vert \mathrm{sg}(p(z_t\vert h_t))))
L d y n = max ( 1 , K L ( s g ( q ( z t ∣ h t , x t ) ) ∥ p ( z t ∣ h t ) ) ) L r e p = max ( 1 , K L ( q ( z t ∣ h t , x t ) ∥ s g ( p ( z t ∣ h t ) ) ) )
在世界模型的总损失中,两项的权重分别为 β d y n = 1 , β r e p = 0.1 \beta_{dyn}=1,\beta_{rep}=0.1 β d y n = 1 , β r e p = 0 . 1 。其中 L d y n L_{dyn} L d y n 为动力学损失,对编码器后验 q q q 加停止梯度,仅优化先验 p p p ,让先验分布精准拟合真实后验,提升动力学预测准确性;而表征损失 L r e p L_{rep} L r e p 是对动力学先验 p p p 加停止梯度,仅优化编码器 q q q ,让后验分布向可预测的先验对齐,提升表征的时序一致性。其中的 max \max max 将两项损失的最小值约束在 1,当 KL 散度过小时,该项停止梯度回传(微分为 0)
PILCO
PILCO 即 Probabilistic Inference for Learning Control,是基于模型、数据高效的策略搜索强化学习算法,核心解决了传统基于模型的强化学习的模型偏差的问题,而且在连续状态 - 动作空间的控制任务上实现了前所未有的样本效率
模型偏差:传统的基于模型的强化学习方法通常学习一个确定性的环境动力学模型,再基于该模型做规划和策略优化,但是当训练样本极少时,模型在训练数据分布之外的区域会产生完全错误的预测,但是依然给出了满置信度的结果,而在长期规划中的误差会持续累积,最终导致学习到的策略在真实环境中完全失效,这就是模型偏差
为了解决模型偏差,PILCO 的核心思路在于
用非参数概率模型高斯过程构建动力学模型,显式表达模型的不确定性
将模型不确定性完整融入长期规划与策略评估
通过近似推断完成策略评估,通过解析梯度完成策略更新,避免采样带来的方差与样本损耗
PILCO 针对连续状态、连续动作的确定性系统,形式化定义如下
系统动力学 x t = f ( x t − 1 , u t − 1 ) x_t=f(x_{t-1},u_{t-1}) x t = f ( x t − 1 , u t − 1 )
其中 x t − 1 ∈ R D x_{t-1}\in R^D x t − 1 ∈ R D 是状态向量
其中 u t − 1 ∈ R F u_{t-1}\in R^F u t − 1 ∈ R F 是动作向量
确定性参数化策略 π : x → u = π θ ( x ) \pi:x\rightarrow u=\pi_\theta(x) π : x → u = π θ ( x )
优化目标:最小化 T T T 步轨迹的期望累计代价 J θ = ∑ t = 0 T E x t [ c ( x t ) ] J_\theta=\sum_{t=0}^TE_{x_t}[c(x_t)] J θ = ∑ t = 0 T E x t [ c ( x t ) ]
其中 x 0 ∼ N ( μ 0 , Σ 0 ) x_0\sim\mathcal{N}(\mu_0,\Sigma_0) x 0 ∼ N ( μ 0 , Σ 0 )
其中 c ( x t ) = 1 − exp ( − ∥ x t − x t a r g e t ∥ 2 σ c 2 ) c(x_t)=1-\exp(-\frac{\Vert x_t-x_{target}\Vert^2}{\sigma^2_c}) c ( x t ) = 1 − exp ( − σ c 2 ∥ x t − x t a r g e t ∥ 2 )
其中 x t a r g e t x_{target} x t a r g e t 为目标状态
其中 σ c 2 \sigma_c^2 σ c 2 控制代价函数的宽度
PILCO 的框架分为三大核心模块:概率动力学模型、解析近似策略评估、解析策略梯度与优化
高斯过程概率动力学模型
PILCO 采用非参数贝叶斯模型高斯过程建模环境动力学,核心是对状态转移的不确定性进行概率建模,而非输出单点预测,是缓解模型偏差的基础
为了数值稳定性与动态系统的增量特性,PILCO 不直接学习 x t = f ( x t − 1 , u t − 1 ) x_t=f(x_{t-1},u_{t-1}) x t = f ( x t − 1 , u t − 1 ) ,而是对状态转移增量 Δ t = x t − x t − 1 \Delta_t=x_t-x_{t-1} Δ t = x t − x t − 1 建模,避免直接建模带来的数值漂移问题,即
Δ t = f ( x t − 1 , u t − 1 ) − x t − 1 \Delta_t=f(x_{t-1},u_{t-1})-x_{t-1}
Δ t = f ( x t − 1 , u t − 1 ) − x t − 1
GP 的输入为状态动作的拼接向量 x ~ = [ x t − 1 ; u t − 1 ] \tilde{x}=[x_{t-1};u_{t-1}] x ~ = [ x t − 1 ; u t − 1 ] ,输出为状态增量 Δ t \Delta_t Δ t 。采用非参数高斯过程作为概率动力学模型,即对任意输入 x ~ \tilde{x} x ~ ,GP 可输出预测值的后验高斯分布
p ( Δ ∣ x ~ ) = N ( μ Δ ( x ~ ) , σ Δ 2 ( x ~ ) ) p(\Delta\vert \tilde{x})=\mathcal{N}(\mu_\Delta(\tilde{x}),\sigma^2_\Delta(\tilde{x}))
p ( Δ ∣ x ~ ) = N ( μ Δ ( x ~ ) , σ Δ 2 ( x ~ ) )
其中均值 μ Δ \mu_\Delta μ Δ 是预测的状态增量,方差 σ Δ 2 \sigma^2_\Delta σ Δ 2 量化模型在该输入点的不确定性。训练数据覆盖的区域方差小,而未见过的数据方差大,解决确定性模型的过置信问题。对于任意已知的测试输入 x ~ = [ x t − 1 T ; u t − 1 T ] T \tilde{x}=[x_{t-1}^T;u_{t-1}^T]^T x ~ = [ x t − 1 T ; u t − 1 T ] T ,GP 的后验预测分布为高斯分布,即
p ( Δ ∣ x ~ ) = N ( Δ ∣ m f ( x ~ ) , σ f 2 ( Δ ) ) m f ( x ~ ) = k T ( X ~ , x ~ ) ⋅ ( K + σ ε 2 I ) − 1 y σ f 2 ( Δ ) = k ( x ~ , x ~ ) − k T ( X ~ , x ~ ) ( K + σ ε 2 I ) − 1 k ( X ~ , x ~ ) p(\Delta\vert \tilde{x})=\mathcal{N}(\Delta\vert m_f(\tilde{x}),\sigma_f^2(\Delta))\\m_f(\tilde{x})=k^T(\tilde{X},\tilde{x})\cdot(K+\sigma_\varepsilon^2I)^{-1}y\\\sigma_f^2(\Delta)=k(\tilde{x},\tilde{x})-k^T(\tilde{X},\tilde{x})(K+\sigma_\varepsilon^2I)^{-1}k(\tilde{X},\tilde{x})
p ( Δ ∣ x ~ ) = N ( Δ ∣ m f ( x ~ ) , σ f 2 ( Δ ) ) m f ( x ~ ) = k T ( X ~ , x ~ ) ⋅ ( K + σ ε 2 I ) − 1 y σ f 2 ( Δ ) = k ( x ~ , x ~ ) − k T ( X ~ , x ~ ) ( K + σ ε 2 I ) − 1 k ( X ~ , x ~ )
其中的 k ( ⋅ , ⋅ ) k(\cdot,\cdot) k ( ⋅ , ⋅ ) 为核函数,在 PILCO 中采用带自动相关性确定的平方指数核函数,该核函数可自动学习不同输入维度的重要性来适配高维输入
k ( x ~ , x ~ ′ ) = α 2 exp ( − 1 2 ( x ~ − x ~ ′ ) T Λ − 1 ( x ~ − x ~ ′ ) ) k(\tilde{x},\tilde{x}^\prime)=\alpha^2\exp(-\frac{1}{2}(\tilde{x}-\tilde{x}^\prime)^T\Lambda^{-1}(\tilde{x}-\tilde{x}^\prime))
k ( x ~ , x ~ ′ ) = α 2 exp ( − 2 1 ( x ~ − x ~ ′ ) T Λ − 1 ( x ~ − x ~ ′ ) )
其中的 α 2 \alpha^2 α 2 是潜函数的信号方差,控制模型输出的整体波动幅度; Λ = d i a g ( [ λ 1 , ⋯ , λ D + F ] ) \Lambda=\mathrm{diag}([\lambda_1,\cdots,\lambda_{D+F}]) Λ = d i a g ( [ λ 1 , ⋯ , λ D + F ] ) 是对焦矩阵,表示每个维度的特征长度尺度。
根据上述分析,则最终单步状态转移的预测分布为
p ( x t ∣ x t − 1 , u t − 1 ) = N ( x t ∣ x t − 1 + m f ( x t − 1 ) , σ f 2 ( Δ t ) ) p(x_t\vert x_{t-1},u_{t-1})=\mathcal{N}(x_t\vert x_{t-1}+m_f({x}_{t-1}),\sigma_f^2(\Delta_t))
p ( x t ∣ x t − 1 , u t − 1 ) = N ( x t ∣ x t − 1 + m f ( x t − 1 ) , σ f 2 ( Δ t ) )
近似策略评估
策略评估的目的是计算目标函数,这需要对 T T T 步轨迹的状态分布 p ( x 1 ) , ⋯ , p ( x T ) p(x_1),\cdots,p(x_T) p ( x 1 ) , ⋯ , p ( x T ) 进行长期预测。在 PILCO 中通过矩匹配技术,实现了完全解析的近似推断,全程无需采样。
已知在 t − 1 t-1 t − 1 时刻的状态分布 p ( x t − 1 ) ≈ N ( μ x t − 1 , Σ x t − 1 ) p(x_{t-1})\approx \mathcal{N}(\mu_{x_{t-1}},\Sigma_{x_{t-1}}) p ( x t − 1 ) ≈ N ( μ x t − 1 , Σ x t − 1 ) ,策略为确定性映射 u t − 1 = π θ ( x t − 1 ) u_{t-1}=\pi_\theta(x_{t-1}) u t − 1 = π θ ( x t − 1 ) ,需要得到联合分布 p ( x ~ t − 1 ) = p ( x t − 1 , u t − 1 ) p(\tilde{x}_{t-1})=p(x_{t-1},u_{t-1}) p ( x ~ t − 1 ) = p ( x t − 1 , u t − 1 ) 。但是即使 p ( x t − 1 ) p(x_{t-1}) p ( x t − 1 ) 是高斯分布,经过非线性策略映射之后, p ( u t − 1 ) p(u_{t-1}) p ( u t − 1 ) 通常为非高斯分布。所以 PILCO 用矩匹配构造一个具有精确一阶矩和二阶矩的高斯分布近似联合分布
p ( x ~ t − 1 ) = N ( x ~ t − 1 ∣ μ ~ t − 1 , Σ ~ t − 1 ) p(\tilde{x}_{t-1})=\mathcal{N}(\tilde{x}_{t-1}\vert\tilde{\mu}_{t-1},\tilde{\Sigma}_{t-1})
p ( x ~ t − 1 ) = N ( x ~ t − 1 ∣ μ ~ t − 1 , Σ ~ t − 1 )
首先需要先计算动作分布的均值与方差
μ u = E x t − 1 [ π θ ( x t − 1 ) ] Σ u = E x t − 1 [ ( π θ ( x t − 1 ) − μ u ) ( π θ ( x t − 1 ) − μ u ) T ] \mu_u=E_{x_{t-1}}[\pi_\theta(x_{t-1})]\\\Sigma_u=E_{x_{t-1}}\big[(\pi_\theta(x_{t-1})-\mu_u)(\pi_\theta(x_{t-1})-\mu_u)^T\big]
μ u = E x t − 1 [ π θ ( x t − 1 ) ] Σ u = E x t − 1 [ ( π θ ( x t − 1 ) − μ u ) ( π θ ( x t − 1 ) − μ u ) T ]
计算状态与动作的互协方差
c o v ( x t − 1 , u t − 1 ) = E x t − 1 [ ( x t − 1 − μ x t − 1 ) ( π θ ( x t − 1 ) − μ u ) T ] \mathrm{cov}(x_{t-1},u_{t-1})=E_{x_{t-1}}\big[(x_{t-1}-\mu_{x_{t-1}})(\pi_\theta(x_{t-1})-\mu_u)^T\big]
c o v ( x t − 1 , u t − 1 ) = E x t − 1 [ ( x t − 1 − μ x t − 1 ) ( π θ ( x t − 1 ) − μ u ) T ]
然后计算状态与动作的互协方差矩阵
μ ~ t − 1 = [ μ x t − 1 μ u ] Σ ~ t − 1 = [ Σ x t − 1 c o v ( x t − 1 , u t − 1 ) c o v ( u t − 1 , x t − 1 ) Σ u ] \tilde{\mu}_{t-1}=\begin{bmatrix}\mu_{x_{t-1}}\\\mu_u\end{bmatrix}\\\tilde{\Sigma}_{t-1}=\begin{bmatrix}\Sigma_{x_{t-1}}&\mathrm{cov}(x_{t-1},u_{t-1})\\\mathrm{cov}(u_{t-1},x_{t-1})&\Sigma_u\end{bmatrix}
μ ~ t − 1 = [ μ x t − 1 μ u ] Σ ~ t − 1 = [ Σ x t − 1 c o v ( u t − 1 , x t − 1 ) c o v ( x t − 1 , u t − 1 ) Σ u ]
得到状态动作联合高斯分布之后,需要通过 GP 模型预测状态增量 Δ t \Delta_t Δ t 的分布,如下
p ( Δ t ) = ∫ p ( f ( x ~ t − 1 ) ∣ x ~ t − 1 ) p ( x ~ t − 1 ) d x ~ t − 1 p(\Delta_t)=\int p(f(\tilde{x}_{t-1})\vert \tilde{x}_{t-1})p(\tilde{x}_{t-1})d\tilde{x}_{t-1}
p ( Δ t ) = ∫ p ( f ( x ~ t − 1 ) ∣ x ~ t − 1 ) p ( x ~ t − 1 ) d x ~ t − 1
其中的 p ( f ( x ~ t − 1 ) ∣ x ~ t − 1 ) p(f(\tilde{x}_{t-1})\vert \tilde{x}_{t-1}) p ( f ( x ~ t − 1 ) ∣ x ~ t − 1 ) 是 GP 在输入 x ~ t − 1 \tilde{x}_{t-1} x ~ t − 1 处的后验预测高斯分布;其中 p ( x ~ t − 1 ) p(\tilde{x}_{t-1}) p ( x ~ t − 1 ) 是输入状态动作联合高斯分布。由于 GP 的均值函数由非线性核函数决定的,所以该积分无精确解析解。再次使用精确矩匹配,使用高斯分布近似 p ( Δ t ) p(\Delta_t) p ( Δ t ) 保证其均值、协方差与真实分布的精确一阶矩、二阶矩完全一致
首先计算 Δ t \Delta_t Δ t 的精确均值 μ Δ t = E [ Δ t ] \mu_{\Delta_t}=E[\Delta_t] μ Δ t = E [ Δ t ] ,最终得到的闭式解为
μ Δ a = E x ~ t − 1 [ E f [ f ( x ~ t − 1 ) ∣ x ~ t − 1 ] ] = E x ~ t − 1 [ m f ( x ~ t − 1 ) ] = ∫ m f ( x ~ t − 1 ) N ( x ~ t − 1 ∣ μ ~ t − 1 , Σ ~ t − 1 ) d x ~ t − 1 \mu_\Delta^a=E_{\tilde{x}_{t-1}}[E_f[f(\tilde{x}_{t-1})\vert\tilde{x}_{t-1}]]=E_{\tilde{x}_{t-1}}[m_f(\tilde{x}_{t-1})]\\=\int m_f(\tilde{x}_{t-1})\mathcal{N}(\tilde{x}_{t-1}\vert\tilde{\mu}_{t-1},\tilde{\Sigma}_{t-1})d\tilde{x}_{t-1}
μ Δ a = E x ~ t − 1 [ E f [ f ( x ~ t − 1 ) ∣ x ~ t − 1 ] ] = E x ~ t − 1 [ m f ( x ~ t − 1 ) ] = ∫ m f ( x ~ t − 1 ) N ( x ~ t − 1 ∣ μ ~ t − 1 , Σ ~ t − 1 ) d x ~ t − 1
计算 Δ t \Delta_t Δ t 精确的协方差矩阵 Σ Δ t = c o v [ Δ t ] \Sigma_{\Delta_t}=\mathrm{cov}[\Delta_t] Σ Δ t = c o v [ Δ t ] ,以及 Δ t \Delta_t Δ t 与输入 x t − 1 x_{t-1} x t − 1 的互协方差,将协方差分解如下
Σ Δ t = Σ n o i s e + Σ m o d e l \Sigma_{\Delta_t}=\Sigma_{noise}+\Sigma_{model}
Σ Δ t = Σ n o i s e + Σ m o d e l
其中的 Σ n o i s e \Sigma_{noise} Σ n o i s e 是 GP 的观测噪声,为常数项;而 Σ m o d e l \Sigma_{model} Σ m o d e l 是模型不确定性,由输入分布的不确定性与 GP 模型本身的不确定性共同决定,可以通过 SE 核的高斯积分得到闭式解。协方差 Σ Δ t \Sigma_{\Delta_t} Σ Δ t 分为对角元与非对角元,公式如下
σ a a 2 = E x ~ t − 1 [ v a r f [ Δ a ∣ x ~ t − 1 ] ] + E f , x ~ t − 1 [ Δ a 2 ] − ( μ Δ a ) 2 σ a b 2 = E f , x ~ t − 1 [ Δ a Δ b ] − μ Δ a μ Δ b \sigma^2_{aa}=E_{\tilde{x}_{t-1}}[\mathrm{var}_f[\Delta_a\vert\tilde{x}_{t-1}]]+E_{f,\tilde{x}_{t-1}}[\Delta_a^2]-(\mu_\Delta^a)^2\\\sigma_{ab}^2=E_{f,\tilde{x}_{t-1}}[\Delta_a\Delta_b]-\mu_\Delta^a\mu_\Delta^b
σ a a 2 = E x ~ t − 1 [ v a r f [ Δ a ∣ x ~ t − 1 ] ] + E f , x ~ t − 1 [ Δ a 2 ] − ( μ Δ a ) 2 σ a b 2 = E f , x ~ t − 1 [ Δ a Δ b ] − μ Δ a μ Δ b
其中的 σ a a 2 \sigma^2_{aa} σ a a 2 是对角元, σ a b 2 \sigma^2_{ab} σ a b 2 是非对角元,其中的 Δ a , Δ b \Delta_a,\Delta_b Δ a , Δ b 是 Δ t \Delta_t Δ t 中的元素,序号为 a a a 和 b b b
计算下一时刻的状态分布,由 x t = x t − 1 + Δ t x_t=x_{t-1}+\Delta_t x t = x t − 1 + Δ t ,可以得到 t t t 时刻状态的高斯近似分布
p ( x t ) ≈ N ( μ x t , Σ x t ) μ t = μ x t − 1 + μ Δ t Σ x t = Σ x t − 1 + Σ Δ t + c o v ( x t − 1 , Δ t ) + c o v ( Δ t , x t − 1 ) p(x_t)\approx\mathcal{N}(\mu_{x_t},\Sigma_{x_t})\\\mu_t=\mu_{x_{t-1}}+\mu_{\Delta_t}\\\Sigma_{x_t}=\Sigma_{x_{t-1}}+\Sigma_{\Delta_t}+\mathrm{cov}(x_{t-1},\Delta_t)+\mathrm{cov}(\Delta_t,x_{t-1})
p ( x t ) ≈ N ( μ x t , Σ x t ) μ t = μ x t − 1 + μ Δ t Σ x t = Σ x t − 1 + Σ Δ t + c o v ( x t − 1 , Δ t ) + c o v ( Δ t , x t − 1 )
根据上述的步骤,从初始状态 p ( x 0 ) p(x_0) p ( x 0 ) 出发,可递推得到 T T T 步内所有时刻的状态分布,完成长期规划
得到每一步的状态分布之后,即可计算轨迹的期望累计代价
J θ = ∑ t = 0 T E x t [ c ( x t ) ] J_\theta=\sum_{t=0}^TE_{x_t}[c(x_t)]
J θ = t = 0 ∑ T E x t [ c ( x t ) ]
策略改进的解析梯度
根据链式法则计算上述累积期望代价对 θ \theta θ 的梯度
d J ( θ ) d θ = ∑ t = 0 T d E x t [ c ( x t ) ] d θ \frac{d J(\theta)}{d\theta}=\sum_{t=0}^T\frac{d E_{x_t}[c(x_t)]}{d\theta}
d θ d J ( θ ) = t = 0 ∑ T d θ d E x t [ c ( x t ) ]
每一步期望代价对 θ \theta θ 的梯度可以做分解
d E x t [ c ( x t ) ] d θ = ∂ E x t [ c ( x t ) ] ∂ μ x t d μ x t d θ + ∂ E x t [ c ( x t ) ] ∂ v e c ( Σ x t ) d v e c ( Σ x t ) d θ \frac{d E_{x_t}[c(x_t)]}{d\theta}=\frac{\partial E_{x_t}[c(x_t)]}{\partial\mu_{x_t}}\frac{d\mu_{x_t}}{d\theta}+\frac{\partial E_{x_t}[c(x_t)]}{\partial\mathrm{vec}(\Sigma_{x_t})}\frac{d\mathrm{vec}(\Sigma_{x_t})}{d\theta}
d θ d E x t [ c ( x t ) ] = ∂ μ x t ∂ E x t [ c ( x t ) ] d θ d μ x t + ∂ v e c ( Σ x t ) ∂ E x t [ c ( x t ) ] d θ d v e c ( Σ x t )
所以首先解析计算策略输出的均值、协方差和互协方差对参数的梯度,解析计算 GP 预测的均值、协方差对输入分布的均值、协方差的梯度等,通过链式法则级联,从初始时刻到 T T T 时刻递推,得到每一步状态分布的矩对 θ \theta θ 的梯度,最终累加得到完整的目标函数梯度
PILCO 的算法的完整训练流程分为真实环境数据收集和模型内策略优化,使用极少的真实环境交互来完成策略学习,如下
初始化随机采样策略参数,初始化数据集 D D D
在真实系统中施加随机控制信号,记录状态转移数据,添加到数据集 D D D 中
用数据集 D D D 训练 GP 概率动力学模型,最大化 GP 超参数
通过矩匹配近似推断,递推计算 T T T 步状态分布,得到 J θ J_\theta J θ
通过链式法则解析计算 d J θ d θ \frac{d J_\theta}{d\theta} d θ d J θ
利用 CG 或 L-BFGS 算法最小化 J θ J_\theta J θ 以更新策略参数 θ \theta θ
直到收敛,得到最优策略参数与最优策略,在真实系统中执行新的策略,记录所有状态转移数据,添加到数据集 D D D 中
PETS
PETS 算法即带有轨迹采样的概率集成,是一种基于模型的强化学习算法,环境模型采用集成学习的方法,会构建多个环境模型,然后利用这多个环境模型来进行预测,最后使用交叉熵方法及逆行模型预测。核心思想是通过概率集成模型量化环境动力学的不确定性,并结合轨迹采样与模型预测控制实现高效的数据驱动规划,在保持模型无关算法渐近性能的同时,大幅提升样本效率。PETS 的算法框架分为两大核心模块:概率集成动力学模型和不确定性感知的 MPC 轨迹优化
在强化学习中,与智能体交互的环境是一个动态的系统,所以拟合它的环境模型也是动态的模型。通常认为一个系统中有两种不确定性,分别是偶然不确定性和认知不确定性。其中偶然不确定性是由系统中本身存在的随机性引起的,而认知不确定性是由见过的数据较少所导致的自身认知不足而引起的。在 PETS 中,通过概率神经网络捕捉偶然不确定性,通过 Bootstrap 集成捕捉认知不确定性,两者共同构成完整的预测不确定性度量。
在 PETS 算法中,环境建模时会同时考虑到这两种不确定性。首先定义环境模型的输出为一个高斯分布,用来捕捉偶然不确定性,令环境模型为 P ^ ( s , a ) \hat{P}(s,a) P ^ ( s , a ) ,其参数为 θ \theta θ ,则基于状态对 ( s t , a t ) (s_t,a_t) ( s t , a t ) ,下一个状态 s t ′ s_t^\prime s t ′ 的分布可以写作
P ^ θ ( s t ′ ∣ s t , a t ) = N ( μ θ ( s t , a t ) , Σ θ ( s t , a t ) ) \hat{P}_\theta(s_t^\prime\vert s_t,a_t)=\mathcal{N}(\mu_\theta(s_t,a_t),\Sigma_\theta(s_t,a_t))
P ^ θ ( s t ′ ∣ s t , a t ) = N ( μ θ ( s t , a t ) , Σ θ ( s t , a t ) )
可以采用神经网络来构建 μ θ \mu_\theta μ θ 和 σ θ \sigma_\theta σ θ ,则神经网络的损失函数为
L θ = ∑ i N [ μ θ ( s i , a i ) − s i ′ ] T Σ θ − 1 ( s i , a i ) [ μ θ ( s i , a i ) − s i ′ ] + log det Σ θ ( s i , a i ) L_\theta=\sum_i^N[\mu_\theta(s_i,a_i)-s_{i}^\prime]^T\Sigma_\theta^{-1}(s_i,a_i)[\mu_\theta(s_i,a_i)-s_{i}^\prime]+\log\det\Sigma_\theta(s_i,a_i)
L θ = i ∑ N [ μ θ ( s i , a i ) − s i ′ ] T Σ θ − 1 ( s i , a i ) [ μ θ ( s i , a i ) − s i ′ ] + log det Σ θ ( s i , a i )
这就得到了一个由神经网络表示的环境模型。在此基础上,选择用集成方法来捕捉认知不确定性。即构建 B B B 个网络框架一样的神经网络,它们的输入都是状态动作对,输出的都是下一状态的高斯分布的均值向量 μ \mu μ 和协方差矩阵 Σ \Sigma Σ ,它们的参数采用不同的随机初始化方式,并且每次训练时会从真实数据中随机采样不同的数据来训练,利用重参数化技巧采样,公式如下
s t ′ = μ θ ( s t , a t ) + Σ θ ( s t , a t ) ϵ ϵ ∼ N ( 0 , 1 ) s^\prime_t=\mu_\theta(s_t,a_t)+\Sigma_\theta(s_t,a_t)\epsilon\quad\epsilon\sim\mathcal{N}(0,1)
s t ′ = μ θ ( s t , a t ) + Σ θ ( s t , a t ) ϵ ϵ ∼ N ( 0 , 1 )
有了环境模型的集成之后,模型预测算法会用其来预测奖励和下一状态,每次预测都会从 B B B 个网络中选择一个来进行预测,因此每一条轨迹的采样会用到多个模型。
PETS 的模型预测控制 MPC 框架并不构建一个显式的策略,只根据环境模型来选择当前步要采取的动作。在 MPC 方法中,在每次采取动作时,首先回生成一些候选的动作序列,然后根据当前状态来确定每一条候选序列能得到多好的结果,最终选择结果最好的那条动作序列的第一个动作来执行。首先定义模型预测方法的目标,在第 k k k 步时,主要要做的就是最大化智能体的累积奖励,如下
arg max a k : k + H ∑ t = k k + H r ( s t , a t ) s t + 1 = P ^ θ ( s t , a t ) \underset{a_{k:k+H}}{\argmax}\sum_{t=k}^{k+H}r(s_t,a_t)\quad s_{t+1}=\hat{P}_\theta(s_t,a_t)
a k : k + H a r g m a x t = k ∑ k + H r ( s t , a t ) s t + 1 = P ^ θ ( s t , a t )
其中 P ^ θ ( s t , a t ) \hat{P}_\theta(s_t,a_t) P ^ θ ( s t , a t ) 就是环境模型,上述的预测就是在和真实环境交互时利用环境模型中选择动作。 H H H 为推演的长度,取 arg max \argmax a r g m a x 最大值就是选择最优的动作序列。MPC 方法的一个关键就是生成一些候选的动作序列,候选动作序列生成的好坏直接影响到 MPC 方法得到的动作,生成候选动作序列方法如下
随机打靶法:随机生成 N N N 条动作序列,在生成每条动作序列中的每个动作时,都是从动作空间中随机采样一个动作,最终组合成 N N N 条长度为 H H H 的动作序列
交叉熵方法 CEM:核心思想是维护一个带参数的分布,根据每次采样的结果来更新分布中的参数,使分布中能获得较高累积奖励的动作序列的概率比较高,每次采样时更新步骤如下
从分布 P ( A ) P(A) P ( A ) 中选取 N N N 条动作序列
对于每条动作序列,用环境模型评估累计奖励
根据评估结果保留 M M M 条最优的动作序列
用最优的动作序列更新分布 P ( A ) P(A) P ( A )
计算所有最优动作序列的第一个动作的均值作为当前时刻采取的动作
MBPO
MBPO (Model-Based Policy Optimization)是基于模型的策略优化算法,解决了传统强化学习两大分支的核心矛盾:无模型算法渐近性能优异但样本效率极低,基于模型算法样本效率高但因模型误差累积导致渐近性能差。
在一般的基于模型的强化学习中,随着环境模型的推演步数增长,模型积累的复合误差会快速增加,使得环境模型得出的结果变得很不可靠,所以需要权衡推演步数增加之后模型增加的误差带来的负面作用与步数增加后使得训练的策略更优的正面作用,两者权衡决定推演步数。在 MBPO 中提出 MBPO 的性能下界,即策略在真实环境中的性能与模型中预测性能之间的严格误差边界,是整个理论分析的起点,如下
η [ π ] ≥ η ^ [ π ] − 2 γ r max ( ϵ m + 2 ϵ π ) ( 1 − γ ) 2 − 4 r max ϵ π 1 − γ \eta[\pi]\geq\hat{\eta}[\pi]-\frac{2\gamma r_{\max}(\epsilon_m+2\epsilon_\pi)}{(1-\gamma)^2}-\frac{4r_{\max}\epsilon_\pi}{1-\gamma}
η [ π ] ≥ η ^ [ π ] − ( 1 − γ ) 2 2 γ r m a x ( ϵ m + 2 ϵ π ) − 1 − γ 4 r m a x ϵ π
公式中第一项 2 γ r max ( ϵ m + 2 ϵ π ) ( 1 − γ ) 2 \frac{2\gamma r_{\max}(\epsilon_m+2\epsilon_\pi)}{(1-\gamma)^2} ( 1 − γ ) 2 2 γ r m a x ( ϵ m + 2 ϵ π ) 由模型误差和策略偏移共同带来的累积偏差项,分母体现了长期回报下误差的指数级放大效应;第二项 4 r max ϵ π 1 − γ \frac{4r_{\max}\epsilon_\pi}{1-\gamma} 1 − γ 4 r m a x ϵ π 仅由策略偏移带来的线性偏差项。
其中的 η [ π ] \eta[\pi] η [ π ] 是策略 π \pi π 在真实环境中的期望累积回报; η ^ [ π ] \hat{\eta}[\pi] η ^ [ π ] 是策略 π \pi π 在学习到的动力学模型中的期望累计回报; γ \gamma γ 强化学习折扣因子; r max r_{\max} r m a x 是环境单步奖励的最大值; ϵ m \epsilon_m ϵ m 是模型误差上界,定义为数据收集策略 π D \pi_D π D 的状态分布下,真实环境动力学 p p p 与模型动力学 p ^ \hat{p} p ^ 的总变差距离的最大值; ϵ π \epsilon_\pi ϵ π 是策略偏移上界,定义为数据收集策略 π D \pi_D π D 与待优化策略 π \pi π 的动作分布的总变差距离的最大值。
max t E s t ∼ π D [ D T V ( p ( s t ′ , s t , a t ) ∣ p ^ ( s t ′ , s t , a t ) ) ] ≤ ϵ m max s D T V ( π D ( a , s ) ∣ π ( a , s ) ) ≤ ϵ π \max_t \mathbb{E}_{s_t\sim\pi_{D}}\Big[D_{TV}\big(p(s_t^\prime,s_t,a_t)\vert\hat{p}(s_t^\prime,s_t,a_t)\big)\Big]\leq\epsilon_m\\\max_s D_{TV}\big(\pi_D(a,s)\vert \pi(a,s)\big)\leq\epsilon_\pi
t max E s t ∼ π D [ D T V ( p ( s t ′ , s t , a t ) ∣ p ^ ( s t ′ , s t , a t ) ) ] ≤ ϵ m s max D T V ( π D ( a , s ) ∣ π ( a , s ) ) ≤ ϵ π
其中的 D T V ( P , Q ) = sup A ∣ P ( A ) − Q ( A ) ∣ D_{TV}(P,Q)=\sup_A\vert P(A)-Q(A)\vert D T V ( P , Q ) = sup A ∣ P ( A ) − Q ( A ) ∣ 是变差距离,即两个概率分布在同一事件上取得的最大差值
要保证策略真实性能单调提升,只需要保证每一轮优化后,模型中预测性能 η ^ \hat{\eta} η ^ 的提升量超过两个误差项的增量即可。但是上述的严格误差边界是最坏情况的悲观假设,将模型误差 ϵ m \epsilon_m ϵ m 视作与策略偏移 ϵ π \epsilon_\pi ϵ π 无关的常数,忽略了模型的泛化能力,这会得到模型 rollout 长度 k = 0 k=0 k = 0 时性能下界取最大值,无法为模型的使用提供理论支撑。
为了解决长 rollout 的误差累积的问题,在 MBPO 中提出分支 rollout 设计,模型不再从初始状态分布开始,而是从真实环境采样的状态分布中采样起始状态,执行短步长 rollout,并且得出了下面的严格性能边界,如下
∣ η 1 − η 2 ∣ ≤ 2 r max [ γ k + 1 ( 1 − γ ) 2 ( ϵ m p r e + ϵ π p r e ) + k 1 − γ ( ϵ m p o s t + ϵ π p o s t ) + γ k 1 − γ ϵ π p r e + 1 1 − γ ϵ π p o s t ] \vert\eta_1-\eta_2\vert\leq2r_{\max}\Big[\frac{\gamma^{k+1}}{(1-\gamma)^2}(\epsilon_m^{pre}+\epsilon_\pi^{pre})+\frac{k}{1-\gamma}(\epsilon_m^{post}+\epsilon_\pi^{post})+\frac{\gamma^k}{1-\gamma}\epsilon_\pi^{pre}+\frac{1}{1-\gamma}\epsilon_\pi^{post}\Big]
∣ η 1 − η 2 ∣ ≤ 2 r m a x [ ( 1 − γ ) 2 γ k + 1 ( ϵ m p r e + ϵ π p r e ) + 1 − γ k ( ϵ m p o s t + ϵ π p o s t ) + 1 − γ γ k ϵ π p r e + 1 − γ 1 ϵ π p o s t ]
其中 η 1 \eta_1 η 1 是策略在真实环境中的累积回报; η 2 \eta_2 η 2 是策略在模型分支 rollout 中的累积回报, k k k 是模型分支 rollout 的步长;上标 p r e pre p r e 表示分支点之前的阶段,上标 p o s t post p o s t 是分支点之后的阶段; ϵ m \epsilon_m ϵ m 和 ϵ π \epsilon_\pi ϵ π 分别是模型误差上界和策略偏移上界
上述严格性能边界将误差项拆分为两个部分,即分支前的长期误差项和分支后 k k k 步的 rollout 的线性误差。根据式子可以看出,当模型的 rollout 步长 k k k 越短时,分支前的长期误差项会被急剧抑制,而且分支后的的线性误差也越小。所以也证明了短步长的分支 rollout,能极大降低模型误差带来的性能偏差。
对上述严格性能边界分析
第一项为 γ k + 1 ( 1 − γ ) 2 ( ϵ m p r e + ϵ π p r e ) \frac{\gamma^{k+1}}{(1-\gamma)^2}(\epsilon_m^{pre}+\epsilon_\pi^{pre}) ( 1 − γ ) 2 γ k + 1 ( ϵ m p r e + ϵ π p r e ) ,是分支前的状态分布差异对分支后长期回报的累积影响。由于分支前的是完全真实的环境交互,没有模型参与,所以 ϵ m p r e = 0 \epsilon_m^{pre}=0 ϵ m p r e = 0
第二项为 k 1 − γ ( ϵ m p o s t + ϵ π p o s t ) \frac{k}{1-\gamma}(\epsilon_m^{post}+\epsilon_\pi^{post}) 1 − γ k ( ϵ m p o s t + ϵ π p o s t ) ,是分支后 k k k 步模型 rollout 中,模型误差和策略偏移的累积效应,由于分支后用的是同一个待优化的策略 π \pi π ,所以没有策略差异,即 ϵ π p o s t = 0 \epsilon_\pi^{post}=0 ϵ π p o s t = 0
第三项为 γ k 1 − γ ϵ π p r e \frac{\gamma^k}{1-\gamma}\epsilon_\pi^{pre} 1 − γ γ k ϵ π p r e ,是分支前的策略偏移,会导致分支点的状态-动作分布有差异,带来即时回报的误差,按照 γ k \gamma^k γ k 指数衰减
第四项为 1 1 − γ ϵ π p o s t \frac{1}{1-\gamma}\epsilon_\pi^{post} 1 − γ 1 ϵ π p o s t ,是分支后策略偏移带来的即时回报固定误差,和 rollout 步长无关
令 ϵ π = ϵ π p r e \epsilon_\pi=\epsilon_\pi^{pre} ϵ π = ϵ π p r e 且 ϵ m = ϵ m p o s t \epsilon_m=\epsilon_m^{post} ϵ m = ϵ m p o s t ,可以得到简化公式
∣ η 1 − η 2 ∣ ≤ 2 r max [ γ k + 1 ( 1 − γ ) 2 ϵ π + k 1 − γ ϵ m + γ k 1 − γ ϵ π ] \vert\eta_1-\eta_2\vert\leq2r_{\max}\Big[\frac{\gamma^{k+1}}{(1-\gamma)^2}\epsilon_\pi+\frac{k}{1-\gamma}\epsilon_m+\frac{\gamma^k}{1-\gamma}\epsilon_\pi\Big]
∣ η 1 − η 2 ∣ ≤ 2 r m a x [ ( 1 − γ ) 2 γ k + 1 ϵ π + 1 − γ k ϵ m + 1 − γ γ k ϵ π ]
上述的公式是通用的误差边界,但是在边界里使用的是待优化策略 π \pi π 下的模型误差 ϵ m ′ \epsilon_m^\prime ϵ m ′ ,但是只能测量到在 π D \pi_D π D 分布下的模型误差 ϵ m \epsilon_m ϵ m ,由于待优化策略 π \pi π 状态分布未知,所以测不到 ϵ m ′ \epsilon_m^\prime ϵ m ′ ,所以把不可测的 ϵ m ′ \epsilon_m^\prime ϵ m ′ 用能测的 ϵ m \epsilon_m ϵ m 和 ϵ π \epsilon_\pi ϵ π 做一个保守的上界近似,给出一个可计算的性能边界,即
∣ η 1 − η 2 ∣ ≤ 2 r max [ γ k + 1 ( 1 − γ ) 2 ϵ π + γ k 1 − γ ϵ π + k 1 − γ ( ϵ m + 2 ϵ π ) ] \vert\eta_1-\eta_2\vert\leq2r_{\max}\Big[\frac{\gamma^{k+1}}{(1-\gamma)^2}\epsilon_\pi+\frac{\gamma^k}{1-\gamma}\epsilon_\pi+\frac{k}{1-\gamma}(\epsilon_m+2\epsilon_\pi)\Big]
∣ η 1 − η 2 ∣ ≤ 2 r m a x [ ( 1 − γ ) 2 γ k + 1 ϵ π + 1 − γ γ k ϵ π + 1 − γ k ( ϵ m + 2 ϵ π ) ]
上述的第三项中是修改部分,其中 ϵ m \epsilon_m ϵ m 是在 π D \pi_D π D 分布下的基准预测误差,而 2 ϵ π 2\epsilon_\pi 2 ϵ π 是最坏情况下的保守近似,由于策略从 π D \pi_D π D 变成了 π \pi π ,状态分布发生了偏移,假设模型误差的增量最多是 2 ϵ π 2\epsilon_\pi 2 ϵ π ,证明如下
对于任意状态 s s s ,模型在 s s s 处的预测误差,满足总变差距离的三角不等式,即
D T V ( p ( s ′ ∣ s , a ) ∥ p ^ ( s ′ ∣ s , a ) ) ≤ D T V ( p ( s ′ ∣ s , a ) ∥ p π D ( s ′ ∣ s , a ) ) + D T V ( p π D ( s ′ ∣ s , a ) ∥ p ^ ( s ′ ∣ s , a ) ) D_{TV}(p(s^\prime\vert s,a)\Vert\hat{p}(s^\prime\vert s,a))\leq D_{TV}(p(s^\prime\vert s,a)\Vert p_{\pi_D}(s^\prime\vert s,a))+D_{TV}(p_{\pi_D}(s^\prime\vert s,a)\Vert\hat{p}(s^\prime\vert s,a))
D T V ( p ( s ′ ∣ s , a ) ∥ p ^ ( s ′ ∣ s , a ) ) ≤ D T V ( p ( s ′ ∣ s , a ) ∥ p π D ( s ′ ∣ s , a ) ) + D T V ( p π D ( s ′ ∣ s , a ) ∥ p ^ ( s ′ ∣ s , a ) )
对上述不等式取全局最大值,即可得到最坏情况的上界,即 ϵ m ′ ≤ ϵ m + 2 ϵ π \epsilon_m^\prime\leq\epsilon_m+2\epsilon_\pi ϵ m ′ ≤ ϵ m + 2 ϵ π ,得到上述性能边界。可以看出关于 k k k 的函数有指数项和线性项,则存在一个非零的最优 k k k 值,使得总误差最小,即使用短模型的 rollout 比完全不使用模型更好
MBPO 的完整训练流程如下
初始化策略、环境模型参数、真实环境数据集和模型数据集
对于每轮训练循环
通过环境数据来训练环境的模型参数
对每个时间步中
根据策略与环境交互,将交互的轨迹添加到真实环境数据集中
从真实环境数据集中均匀随机采样一个状态 s t s_t s t
以 s t s_t s t 为初始状态,在模型中使用策略进行 k k k 步推演,并将生成的轨迹添加到模型数据集中
之后基于模型数据,使用 SAC 来更新策略参数
离线强化学习
无论是在线策略或者是离线策略,智能体在训练过程中可以不断地与环境进行交互,得到新的反馈。但是在线策略会直接使用这些反馈数据,而离线策略算法会先将这些反馈数据存入经验回放池中,需要时再从中采样。在实际使用中的很多场景下,让尚未学习好的智能体和环境交互可能会导致危险发生,或者造成巨大的损失。而离线强化学习的目标是在智能体不和环境交互的情况下,仅从已经收集好的确定的数据集中,通过强化学习算法得到比较好的策略。
离线 RL 的核心优势同时也带来了一些难题。离线数据由行为策略采集,而学习的目标策略与行为策略的状态-动作的分布存在不匹配的问题,即分布偏移;当目标策略选择了数据集中极少出现的分布外动作时,价值函数就无法估计其真实价值了,就会产生严重的外推误差,几乎必然出现对 OOD 动作的价值高估;由于无法通过新交互纠正高估偏差,价值高估会在更新中不断循环放大,最终误导策略持续选择被虚假高估的动作,导致策略退化。
BCQ
BCQ 即批量限制 Q-Learning 算法,首次系统性地解决了离线强化学习中因为分布偏移导致地外推误差和策略退化问题。而 BCQ 不直接修正 Q 函数的高估,而是从源头约束策略的动作选择空间,满足这要求的策略就是批量限制策略,具体来说,策略在选择时有 3 个目标,即
最小化选择的动作与数据集中的数据的距离
采取动作之后能到达与离线数据集中的状态相似的状态
选择 Q 值最大的动作,Q 函数也仅在候选动作集合中取最大值更新,彻底避免 OOD 动作
对于标准的离线且有限的状态-动作空间,标准的 Q-Learning 的更新公式可以写作
Q ( s , a ) = ( 1 − α ) Q ( s , a ) + α ( r + γ Q ( s ′ , arg max a ′ Q ( s ′ , a ′ ) ) ) Q(s,a)=(1-\alpha)Q(s,a)+\alpha(r+\gamma Q(s^\prime,\underset{a^\prime}{\argmax}Q(s^\prime,a^\prime)))
Q ( s , a ) = ( 1 − α ) Q ( s , a ) + α ( r + γ Q ( s ′ , a ′ a r g m a x Q ( s ′ , a ′ ) ) )
此时只需要把策略 π \pi π 能选择的动作限制在数据集 D D D 内,就能满足上述的目标,这就得到了在离线且有限的状态-动作空间下的 BCQ 算法的公式
Q ( s , a ) = ( 1 − α ) Q ( s , a ) + α ( r + γ Q ( s ′ , arg max a ′ s . t . ( s ′ , a ′ ) ∈ D Q ( s ′ , a ′ ) ) ) Q(s,a)=(1-\alpha)Q(s,a)+\alpha(r+\gamma Q(s^\prime,\underset{a^\prime s.t.(s^\prime,a^\prime)\in D}{\argmax}Q(s^\prime,a^\prime)))
Q ( s , a ) = ( 1 − α ) Q ( s , a ) + α ( r + γ Q ( s ′ , a ′ s . t . ( s ′ , a ′ ) ∈ D a r g m a x Q ( s ′ , a ′ ) ) )
如果数据中包含所有可能的 ( s , a ) (s,a) ( s , a ) 对,按上式及逆行迭代可以收敛到最优的价值函数。
对于连续的状态-动作空间的情况会复杂一些,在此情况下,需要详细定义两个状态动作对之间的距离。在 BCQ 中训练一个生成模型 G ω ( s ) G_\omega(s) G ω ( s ) ,对于数据集 D D D 和其中的状态 s s s ,生成模型 G ω ( s ) G_\omega(s) G ω ( s ) 能给出与 D D D 中数据接近的一系列动作 a 1 , ⋯ , a n a_1,\cdots,a_n a 1 , ⋯ , a n 用于 Q 网络的训练。另外为了增加生成动作的多样性,减少生成次数,BCQ 还引入了扰动模型 ξ ϕ ( s , a , Φ ) \xi_\phi(s,a,\Phi) ξ ϕ ( s , a , Φ ) ,在输入状态动作对 ( s , a ) (s,a) ( s , a ) 时,模型给出一个绝对值最大为 Φ \Phi Φ 的微扰动并附加在动作上,得到的策略如下
π ( s ) = arg max a i + ξ ϕ ( s , a i , Φ ) Q ( s , a i + ξ ϕ ( s , a i , Φ ) ) \pi(s)=\underset{a_i+\xi_\phi(s,a_i,\Phi)}{\argmax}Q(s,a_i+\xi_\phi(s,a_i,\Phi))
π ( s ) = a i + ξ ϕ ( s , a i , Φ ) a r g m a x Q ( s , a i + ξ ϕ ( s , a i , Φ ) )
上述的生成模型 G ω ( s ) G_\omega(s) G ω ( s ) 用变分自动编码器 VAE 实现,VAE 的结构如下
编码器 Q ( z ∣ s , a ) Q(z\vert s,a) Q ( z ∣ s , a ) :输入状态 s s s 和动作 a a a ,输出隐变量 z z z 的后验分布,输出变量 z z z 的高斯分布的均值和标准差
解码器 G ( a ∣ s , z ) G(a\vert s,z) G ( a ∣ s , z ) :输入状态 s s s 和隐变量 z z z ,输出重建的动作 a a a
先验网络 P ( z ∣ s ) P(z\vert s) P ( z ∣ s ) :输入状态 s s s ,输出隐变量 z z z 的先验分布
VAE 的训练目标时最大化数据的对数似然,更新生成模型的参数 ω = arg min ω ∑ ( a − a ~ ) 2 + D K L ( Q ( z ∣ s , a ) ∥ P ( z ∣ s ) ) \omega=\underset{\omega}{\argmin}\sum(a-\tilde{a})^2+D_{KL}\big(Q(z\vert s,a)\Vert P(z\vert s)\big) ω = ω a r g m i n ∑ ( a − a ~ ) 2 + D K L ( Q ( z ∣ s , a ) ∥ P ( z ∣ s ) )
扰动模型直接通过确定性策略梯度算法训练,目标是使函数 Q 最大化,即 ϕ = arg max ϕ ∑ ( s , a ) ∼ D Q ( s , a + ξ ϕ ( s , a , Φ ) ) \phi=\underset{\phi}{\argmax}\sum_{(s,a)\sim D}Q(s,a+\xi_\phi(s,a,\Phi)) ϕ = ϕ a r g m a x ∑ ( s , a ) ∼ D Q ( s , a + ξ ϕ ( s , a , Φ ) )
另外引入目标网络,总的来说 BCQ 的流程如下
随机初始化 Q 网络 Q θ Q_\theta Q θ 、扰动模型 ξ ϕ \xi_\phi ξ ϕ 、生成模型 G ω G_\omega G ω
定义目标 Q 网络 Q θ − Q_{\theta^-} Q θ − 和目标扰动模型 ξ ϕ − \xi_{\phi^-} ξ ϕ − ,并且用参数 θ \theta θ 和 ϕ \phi ϕ 分别更新两个目标网络
对于每次训练循环
从数据集 D D D 中采样一定数量的 ( s , a , r , s ′ ) (s,a,r,s^\prime) ( s , a , r , s ′ )
利用 VAE 的编码器生成均值和标准差 μ , σ \mu,\sigma μ , σ
重采样隐变量 z ∼ N ( μ , σ ) z\sim\mathcal{N}(\mu,\sigma) z ∼ N ( μ , σ ) ,根据隐变量利用解码器生成动作 a ~ \tilde{a} a ~
更新生成模型参数 ω = arg min ω ∑ ( a − a ~ ) 2 + D K L ( Q ( z ∣ s , a ) ∥ P ( z ∣ s ) ) \omega=\underset{\omega}{\argmin}\sum(a-\tilde{a})^2+D_{KL}\big(Q(z\vert s,a)\Vert P(z\vert s)\big) ω = ω a r g m i n ∑ ( a − a ~ ) 2 + D K L ( Q ( z ∣ s , a ) ∥ P ( z ∣ s ) )
从生成模型中采样 n n n 个动作 a 1 , ⋯ , a n a_1,\cdots,a_n a 1 , ⋯ , a n
根据扰动模型对每个动作施加扰动 a i = a i + ξ ϕ ( s ′ , a i , Φ ) a_i=a_i+\xi_\phi(s^\prime,a_i,\Phi) a i = a i + ξ ϕ ( s ′ , a i , Φ )
计算 Q 网络目标值 y = r + γ arg max a i Q θ − ( s ′ , a i ) y=r+\gamma\underset{a_i}{\argmax}Q_{\theta^-}(s^\prime,a_i) y = r + γ a i a r g m a x Q θ − ( s ′ , a i )
利用目标值更新 Q 网络 Q θ Q_\theta Q θ ,即 θ = arg min θ ∑ ( y − Q θ ( s , a ) ) 2 \theta=\underset{\theta}{\argmin}\sum (y-Q_\theta(s,a))^2 θ = θ a r g m i n ∑ ( y − Q θ ( s , a ) ) 2
更新扰动模型 ϕ = arg max ϕ ∑ ( s , a ) ∼ D Q ( s , a + ξ ϕ ( s , a , Φ ) ) \phi=\underset{\phi}{\argmax}\sum_{(s,a)\sim D}Q(s,a+\xi_\phi(s,a,\Phi)) ϕ = ϕ a r g m a x ∑ ( s , a ) ∼ D Q ( s , a + ξ ϕ ( s , a , Φ ) )
更新目标 Q 网络 θ − = τ θ + ( 1 − τ ) θ − \theta^-=\tau\theta+(1-\tau)\theta^- θ − = τ θ + ( 1 − τ ) θ −
更新目标扰动网络 ϕ − = τ ϕ + ( 1 − τ ) ϕ − \phi^-=\tau\phi+(1-\tau)\phi^- ϕ − = τ ϕ + ( 1 − τ ) ϕ −
BEAR
BEAR 是一种针对离线异策略强化学习的稳定算法,核心解决静态数据集训练中因分布外动作导致的引导误差累积问题。异策略 RL 的目标是利用历史策略收集的静态数据集训练最优策略,但传统的 BCQ 方法存在两大问题
引导误差:Bellman 备份时需要最大化下一状态的 Q 值,若选择训练数据分布外的 OOD 动作,Q 函数对这些未见过的动作估计不可靠,误差会通过迭代积累,导致训练不稳定
约束过紧或过松:BCQ 等方法强制学习策略贴近行为策略分布,难以超越行为策略的性能,但是无约束方法则容易因为 OOD 动作产生大量误差
BEAR 通过支持集匹配平衡误差控制与策略优化灵活性,核心逻辑包括
限制学习策略的动作仅来自训练数据的支持集,避免 OOD 动作导致误差
不约束支持集内的动作概率分布,允许策略在有效动作空间中寻找最优解,突破行为策略的性能上限
采用分布约束备份算子和核方法实现支持集匹配,保证理论稳定性
基本的 Bellman 方程为 T Q ( s , a ) = r + γ E T ( s ′ ∣ s , a ) [ max a ′ Q ( s ′ , a ′ ) ] \Tau Q(s,a)=r+\gamma E_{\Tau(s^\prime\vert s,a)}[\underset{a^\prime}{\max}Q(s^\prime,a^\prime)] T Q ( s , a ) = r + γ E T ( s ′ ∣ s , a ) [ a ′ max Q ( s ′ , a ′ ) ] ,网络通过 E [ ( Q − T Q ) 2 ] E[(Q-\Tau Q)^2] E [ ( Q − T Q ) 2 ] 最小化 Bellman 均方误差来进行更新。定义第 k k k 轮 Q 值与最优 Q 值的总误差 ξ k ( s , a ) = ∣ Q k ( s , a ) − Q ⋆ ( s , a ) ∣ \xi_k(s,a)=\vert Q_k(s,a)-Q^\star(s,a)\vert ξ k ( s , a ) = ∣ Q k ( s , a ) − Q ⋆ ( s , a ) ∣ ,定义第 k k k 轮的 Bellman 单步误差 δ k ( s , a ) = ∣ Q k ( s , a ) − T Q k − 1 ( s , a ) ∣ \delta_k(s,a)=\vert Q_k(s,a)-\Tau Q_{k-1}(s,a)\vert δ k ( s , a ) = ∣ Q k ( s , a ) − T Q k − 1 ( s , a ) ∣ ,则 Q-Learning 的误差满足递推关系 ξ k ( s , a ) ≤ δ k ( s , a ) + γ max a ′ E s ′ [ ξ k − 1 ( s ′ , a ′ ) ] \xi_k(s,a)\leq\delta_k(s,a)+\gamma\underset{a^\prime}{\max}E_{s^\prime}[\xi_{k-1}(s^\prime,a^\prime)] ξ k ( s , a ) ≤ δ k ( s , a ) + γ a ′ max E s ′ [ ξ k − 1 ( s ′ , a ′ ) ] 。
为了解决 OOD 导致的 Bellman 误差的问题,首先构建一个分布约束算子 T Π \Tau^\Pi T Π
T Π Q ( s , a ) = E [ R ( s , a ) + γ max π ∈ Π E P ( s ′ ∣ s , a ) [ V ( s ′ ) ] ] V ( s ) = max π ∈ Π E π [ Q ( s , a ) ] \Tau^\Pi Q(s,a)=E\Big[R(s,a)+\gamma\underset{\pi\in\Pi}{\max}E_{P(s^\prime\vert s,a)}[V(s^\prime)]\Big]\\V(s)=\underset{\pi\in\Pi}{\max}E_\pi[Q(s,a)]
T Π Q ( s , a ) = E [ R ( s , a ) + γ π ∈ Π max E P ( s ′ ∣ s , a ) [ V ( s ′ ) ] ] V ( s ) = π ∈ Π max E π [ Q ( s , a ) ]
分布约束算子与标准的 Bellman 算子的区别:标准算子是对所有可能动作取 max \max max 操作,极易选到 OOD 动作,分布约束算子仅对约束集合 Π \Pi Π 内策略取 max \max max ,从根源上限制了备份用的动作范围,避免 OOD 动作引入误差。在论文中也证明了这个算子满足标准 Bellman 备份的核心性质(压缩映射、收敛到不动点),保证了迭代的稳定性。
为了量化约束集合 Π \Pi Π 对最终性能的影响,定义两个关键的指标。首先是定义次优性常数
α ( Π ) = max s , a ∣ T Π Q ⋆ ( s , a ) − T Q ⋆ ( s , a ) ∣ \alpha(\Pi)=\underset{s,a}{\max}\vert\Tau^\Pi Q^\star(s,a)-\Tau Q^\star(s,a)\vert
α ( Π ) = s , a max ∣ T Π Q ⋆ ( s , a ) − T Q ⋆ ( s , a ) ∣
次优性常数用于表示训练分布与数据分布的距离,表示 Π \Pi Π 内策略产生的状态访问分布与训练数据分布的偏移程度。之后定义 ρ 0 \rho_0 ρ 0 为初始状态的分布,并且定义 μ ( s , a ) \mu(s,a) μ ( s , a ) 为行为策略诱导的状态-动作分布,假设存在系数 c ( k ) c(k) c ( k ) 使得对于任意的策略 π 1 , ⋯ , π k ∈ Π \pi_1,\cdots,\pi_k\in\Pi π 1 , ⋯ , π k ∈ Π 和状态 s ∈ S s\in S s ∈ S ,满足
ρ 0 P π 1 ⋯ P π k ( s ) ≤ c ( k ) μ ( s ) \rho_0P^{\pi_1}\cdots P^{\pi_k}(s)\leq c(k)\mu(s)
ρ 0 P π 1 ⋯ P π k ( s ) ≤ c ( k ) μ ( s )
则定义集中性系数
C ( Π ) = ( 1 − γ ) 2 ∑ k = 1 ∞ k γ k − 1 c ( k ) C(\Pi)=(1-\gamma)^2\sum_{k=1}^\infty k\gamma^{k-1}c(k)
C ( Π ) = ( 1 − γ ) 2 k = 1 ∑ ∞ k γ k − 1 c ( k )
用于衡量 Π \Pi Π 内策略产生的状态访问分布,与训练数据分布的偏移程度,量化了 OOD 的严重程度。 Π \Pi Π 的范围越大,策略越容易偏离训练数据分布,则 C ( Π ) C(\Pi) C ( Π ) 就越大,自举误差累积越严重。
之后通过两个核心定理,完成了对分布约束 Q 迭代的性能保证,是整个 BEAR 的理论基石。假设近似分布约束值迭代的单步 Bellman 误差上界为 δ ( s , a ) \delta(s,a) δ ( s , a ) ,则迭代收敛之后,策略与最优策略的价值差满足
lim k → ∞ E ρ 0 [ ∣ V π k ( s ) − V ⋆ ( s ) ∣ ] ≤ γ ( 1 − γ ) 2 [ C ( Π ) E μ [ max π ∈ Π E π [ δ ( s , a ) ] ] + 1 − γ γ α ( Π ) ] \underset{k\rightarrow\infty}{\lim}E_{\rho_0}[\vert V^{\pi_k}(s)-V^\star(s)\vert]\leq\frac{\gamma}{(1-\gamma)^2}\Big[C(\Pi)E_\mu\big[\underset{\pi\in\Pi}{\max}E_\pi[\delta(s,a)]\big]+\frac{1-\gamma}{\gamma}\alpha(\Pi)\Big]
k → ∞ lim E ρ 0 [ ∣ V π k ( s ) − V ⋆ ( s ) ∣ ] ≤ ( 1 − γ ) 2 γ [ C ( Π ) E μ [ π ∈ Π max E π [ δ ( s , a ) ] ] + γ 1 − γ α ( Π ) ]
在上述定义中,最终的性能损失由两部分组成,由 C ( Π ) C(\Pi) C ( Π ) 主导的自举误差累积项和由 α ( Π ) \alpha(\Pi) α ( Π ) 主导的次优偏差项。约束集合 Π \Pi Π 的选择,本质是在这两个项之间做权衡,扩大 Π \Pi Π 会降低次优偏差,但会放大误差累积,而缩小 Π \Pi Π 会控制误差,但会增大次优性。
定义支撑集约束的策略集合 Π ϵ = { π ∣ π ( a ∣ s ) = 0 , β ( a ∣ s ) < ϵ } \Pi_\epsilon=\{\pi\vert\pi(a\vert s)=0,\beta(a\vert s)<\epsilon\} Π ϵ = { π ∣ π ( a ∣ s ) = 0 , β ( a ∣ s ) < ϵ } ,仅在行为策略 β \beta β 的非 0 支撑集内输出动作,则 Π ϵ \Pi_\epsilon Π ϵ 的集中性系数满足
C ( Π ϵ ) ≤ C ( β ) ( 1 + γ ( 1 − γ ) f ( ϵ ) ( 1 − ϵ ) ) C(\Pi_\epsilon)\leq C(\beta)\Big(1+\frac{\gamma}{(1-\gamma)f(\epsilon)}(1-\epsilon)\Big)
C ( Π ϵ ) ≤ C ( β ) ( 1 + ( 1 − γ ) f ( ϵ ) γ ( 1 − ϵ ) )
其中的 f ( ϵ ) f(\epsilon) f ( ϵ ) 是在行为策略下,支撑集内状态的最小访问概率,是恒大于 0 的。上述的定义证明了基于支撑集构造的 Π ϵ \Pi_\epsilon Π ϵ ,其集中性系数是有界的,从理论上保证了自举误差不会无限累积,另外仅通过一个超参数 ϵ \epsilon ϵ 来实现 C ( Π ) C(\Pi) C ( Π ) 和 α ( Π ) \alpha(\Pi) α ( Π ) 的权衡,支撑集约束即保证了误差可控,由保留了足够的策略优化空间,完美解决了密集约束过度保守的问题。
基于上述的理论,算法需要解决两个核心实践问题:
行为策略 β \beta β 未知,无法直接获取其支撑集,需要设计仅基于离线数据样本、可微分的支撑集匹配约束1
在连续动作空间中,无法直接枚举 Π ϵ \Pi_\epsilon Π ϵ 内的所有策略,需要对分布约束备份算子做可实现的随机近似
避免 Q 函数的过估计,进一步抑制自举误差
为此 BEAR 算法设计了两个核心的组件
Q 函数集成的保守估计:用多个 Q 网络的最小值做策略提升,抑制 Q 值过估计
基于最大均值差异的支撑集匹配约束:替代 KL 散度的密度匹配,实现仅约束支撑集、不约束密度的核心目标
BEAR 的策略优化核心是在支撑集约束 Π ϵ \Pi_\epsilon Π ϵ 内,最大化保守的 Q 值估计,目标为
π ϕ ( s ) = max π ∈ Π ϵ E a ∼ π ( a ∣ s ) [ min j = 1 , ⋯ , K Q ^ j ( s , a ) ] \pi_\phi(s)=\underset{\pi\in\Pi_\epsilon}{\max}E_{a\sim\pi(a\vert s)}\Big[\underset{j=1,\cdots,K}{\min}\hat{Q}_j(s,a)\Big]
π ϕ ( s ) = π ∈ Π ϵ max E a ∼ π ( a ∣ s ) [ j = 1 , ⋯ , K min Q ^ j ( s , a ) ]
其中的 { Q ^ 1 , ⋯ , Q ^ k } \{\hat{Q}_1,\cdots,\hat{Q}_k\} { Q ^ 1 , ⋯ , Q ^ k } 是 K 个 Q 网络组成的集合,取最小值是为了做保守估计,避免 Q 值过估计放大自举误差。在实际中,由于行为策略 β \beta β 是未知的,因此需要一个方式来约束 π \pi π ,因此定义了一个可微的约束,即将未知的行为策略 β \beta β 于学习策略 π \pi π 通过 MMD 的方式来约束,MMD 的公式如下
M M D 2 ( { x 1 , ⋯ , x n } , { y 1 , ⋯ , y m } ) = 1 n 2 ∑ i , i ′ k ( x i , x i ′ ) − 2 n m ∑ i , j k ( x i , y j ) + 1 m 2 ∑ j , j ′ k ( y j , y j ′ ) MMD^2(\{x_1,\cdots,x_n\},\{y_1,\cdots,y_m\})=\frac{1}{n^2}\sum_{i,i^\prime}k(x_i,x_{i^\prime})-\frac{2}{nm}\sum_{i,j}k(x_i,y_j)+\frac{1}{m^2}\sum_{j,j^\prime}k(y_j,y_{j^\prime})
M M D 2 ( { x 1 , ⋯ , x n } , { y 1 , ⋯ , y m } ) = n 2 1 i , i ′ ∑ k ( x i , x i ′ ) − n m 2 i , j ∑ k ( x i , y j ) + m 2 1 j , j ′ ∑ k ( y j , y j ′ )
其中的 k ( ⋅ , ⋅ ) k(\cdot,\cdot) k ( ⋅ , ⋅ ) 可以用任意的通用核
拉普拉斯核函数 k ( x , y ) = exp ( − ∥ x − y ∥ σ ) k(x,y)=\exp(-\frac{\Vert x-y\Vert}{\sigma}) k ( x , y ) = exp ( − σ ∥ x − y ∥ )
高斯核函数 k ( x , y ) = exp ( − ∥ x − y ∥ 2 σ 2 ) k(x,y)=\exp(-\frac{\Vert x-y\Vert^2}{\sigma^2}) k ( x , y ) = exp ( − σ 2 ∥ x − y ∥ 2 )
论文先通过离线数据拟合一个行为策略模型 π d \pi_d π d ,再基于 π d \pi_d π d 的采样计算,最终的策略优化问题为
π ϕ ( s ) = max π ∈ Π ϵ E s ∼ D E a ∼ π ( a ∣ s ) [ min j = 1 , ⋯ , K Q ^ j ( s , a ) ] s . t . E s ∼ D [ M M D ( π d ( ⋅ ∣ s ) , π ( ⋅ , s ) ) ] ≤ ϵ \pi_\phi(s)=\underset{\pi\in\Pi_\epsilon}{\max}E_{s\sim D}E_{a\sim\pi(a\vert s)}\Big[\underset{j=1,\cdots,K}{\min}\hat{Q}_j(s,a)\Big]\\s.t.E_{s\sim D}\Big[MMD(\pi_d(\cdot\vert s),\pi(\cdot,s))\Big]\leq\epsilon
π ϕ ( s ) = π ∈ Π ϵ max E s ∼ D E a ∼ π ( a ∣ s ) [ j = 1 , ⋯ , K min Q ^ j ( s , a ) ] s . t . E s ∼ D [ M M D ( π d ( ⋅ ∣ s ) , π ( ⋅ , s ) ) ] ≤ ϵ
其中的 ϵ \epsilon ϵ 是 MMD 约束的阈值。这个带约束的优化问题,通过对偶梯度下降求解,引入拉格朗日乘子 α \alpha α ,将约束优化转为无约束优化问题,同时更新策略参数 ϕ \phi ϕ 和拉格朗日乘子 α \alpha α ,保证约束满足的同时最大化 Q 值。
BEAR 算法的完整流程如下
输入:离线数据集 D D D ,目标网络更新率 τ \tau τ ,批次大小 N N N ,MMD 采样数 n n n 、保守系数 λ \lambda λ 、Q 网络集成数量 K K K
初始化 Q 网络、策略网络和拉格朗日乘子 α \alpha α
初始化目标 Q 网络和目标策略网络,参数与主网络同步
对于每次训练循环
从数据集 D D D 中采样一个批次的转移样本 ( s , a , r , s ′ ) (s,a,r,s^\prime) ( s , a , r , s ′ )
从目标策略网络 π ϕ ′ ( ⋅ ∣ s ′ ) \pi_{\phi^\prime}(\cdot\vert s^\prime) π ϕ ′ ( ⋅ ∣ s ′ ) 中采样 p p p 个动作 { a i } \{a_i\} { a i }
计算 Bellman 备份目标值 y ( s , a ) = max a i [ λ min j = 1 , ⋯ , K Q θ j ′ ( s ′ , a i ) + ( 1 − λ ) max j = 1 , ⋯ , K Q θ j ′ ( s ′ , a i ) ] y(s,a)=\underset{a_i}{\max}\Big[\lambda\underset{j=1,\cdots,K}{\min}Q_{\theta_j^\prime}(s^\prime,a_i)+(1-\lambda)\underset{j=1,\cdots,K}{\max}Q_{\theta_j^\prime}(s^\prime,a_i)\Big] y ( s , a ) = a i max [ λ j = 1 , ⋯ , K min Q θ j ′ ( s ′ , a i ) + ( 1 − λ ) j = 1 , ⋯ , K max Q θ j ′ ( s ′ , a i ) ]
利用均方误差计算损失函数 L = ( Q θ i ( s , a ) − ( r + γ y ( s , a ) ) ) 2 L=(Q_{\theta_i}(s,a)-(r+\gamma y(s,a)))^2 L = ( Q θ i ( s , a ) − ( r + γ y ( s , a ) ) ) 2
最小化损失函数更新 Q 网络参数
从当前策略网络 π ϕ \pi_\phi π ϕ 采样 m m m 个动作 { a ^ i } \{\hat{a}_i\} { a ^ i } ,从拟合的行为策略 π d \pi_d π d 中采样 n n n 个动作 { a j } \{a_j\} { a j }
基于对偶梯度下降,更新策略参数 ϕ \phi ϕ 和拉格朗日乘子 α \alpha α ,在满足 E s ∼ D [ M M D ( π d ( ⋅ ∣ s ) , π ( ⋅ , s ) ) ] ≤ ϵ E_{s\sim D}\Big[MMD(\pi_d(\cdot\vert s),\pi(\cdot,s))\Big]\leq\epsilon E s ∼ D [ M M D ( π d ( ⋅ ∣ s ) , π ( ⋅ , s ) ) ] ≤ ϵ 的约束下,最大化策略的期望 Q 值
对 Q 目标网络和目标策略网络执行软更新,即 θ i ′ = τ θ 1 + ( 1 − τ ) θ i ′ \theta_i^\prime=\tau\theta_1+(1-\tau)\theta_i^\prime θ i ′ = τ θ 1 + ( 1 − τ ) θ i ′ 和 ϕ i ′ = τ ϕ i + ( 1 − τ ) ϕ i ′ \phi_i^\prime=\tau\phi_i+(1-\tau)\phi_i^\prime ϕ i ′ = τ ϕ i + ( 1 − τ ) ϕ i ′
AWAC
AWAC 是一种融合离线预训练与在线微调的强化学习算法,核心目标是高效利用历史离线数据加速在线强化学习。AWAC 遵循 AC 的框架,包含策略网络、价值网络和经验回放缓冲区,与 AC 的网络结构几乎一致
AWAC 的训练分为离线预训练和在线微调两部分,步骤如下
初始化离线数据集 D = { ( s , a , s ′ , r ) } D=\{(s,a,s^\prime,r)\} D = { ( s , a , s ′ , r ) } ,将其存入回放缓冲区,初始化 Actor 网络 Q θ Q_\theta Q θ 和 Critic 网络 π ω \pi_\omega π ω 的参数
离线预训练阶段
核心目标为利用离线数据训练 Critic 和 Actor,获取基础性能的初始策略,无需在线交互
从缓冲区中随机采样批量数据 ( s , a , s ′ , r ) (s,a,s^\prime,r) ( s , a , s ′ , r )
用计算差分目标近似 y t = r t + γ Q π θ ( s t + 1 , a t + 1 ) y_t=r_t+\gamma Q^{\pi_\theta}(s_{t+1},a_{t+1}) y t = r t + γ Q π θ ( s t + 1 , a t + 1 )
计算价值网络损失 L ω = E [ ( y t − Q π θ ( s t , a t ) ) 2 ] L_\omega=E[(y_t-Q^{\pi_\theta}(s_t,a_t))^2] L ω = E [ ( y t − Q π θ ( s t , a t ) ) 2 ] ,反向传递更新价值网络参数 w w w
计算策略网络损失 L θ = ∑ t ψ t log π θ ( a t ∣ s t ) L_\theta=\sum_t\psi_t\log\pi_\theta(a_t\vert s_t) L θ = ∑ t ψ t log π θ ( a t ∣ s t ) ,反向传递更新策略网络参数 θ \theta θ
在线微调阶段
用当前 Actor 网络与环境交互,生成新轨迹 τ 1 , τ 2 , ⋯ , τ K \tau_1,\tau_2,\cdots,\tau_K τ 1 , τ 2 , ⋯ , τ K ,每条轨迹包含 ( s , a , s ′ , r ) (s,a,s^\prime,r) ( s , a , s ′ , r ) 序列
将新轨迹存入回放缓冲区中,实现离线在线数据混合复用
重复离线预训练的步骤,直到策略收敛
BRAC
BRAC 算法即行为正则化的 AC 算法,是一种离线强化学习的通用算法框架。离线 RL 的核心设定即智能体仅能从一个固定的离线数据集 D D D 中学习策略,数据集由单步转移元组组成,学习过程中完全禁止与环境进行额外的在线交互。
先前的 BEAR、BCQ 等离线 RL 算法的核心共性都是通过约束让学习策略接近采集数据的行为策略,它们都各自加入了定制化的设计。而 BRAC 算法将所有行为正则化类的离线 RL 方法统一到一个模块化的通用框架中,验证了每个设计组件的实际作用,最终给出了一套简单、易复现、性能达到 SOTA 的算法变体。
论文定义 π b ( a ∣ s ) \pi_b(a\vert s) π b ( a ∣ s ) 为数据集中观测到的动作-状态条件分布 p ( a ∣ s ) p(a\vert s) p ( a ∣ s ) ,即采集离线数据集时所使用的策略。由于无法直接访问真实的行为策略,所以通常的做法就是通过数据集上的最大似然估计,拟合一个近似的行为策略。定义为 π ^ b = arg max π ^ E ( s , a , r , s ′ ) ∼ D [ log π ^ ( a ∣ s ) ] \hat{\pi}_b=\underset{\hat{\pi}}{\argmax}E_{(s,a,r,s^\prime)\sim D}[\log\hat{\pi}(a\vert s)] π ^ b = π ^ a r g m a x E ( s , a , r , s ′ ) ∼ D [ log π ^ ( a ∣ s ) ] ,在后续的计算中,通常用近似的行为策略代替行为策略。
现有的离线 RL 方法的核心共性,是通过行为正则化,鼓励学习到的策略与数据采集的行为策略保持接近,以此来避免 OOD 动作带来的 Q 值过估计与策略崩溃问题。基于这一共性,BRAC 将离线 RL 算法拆解为两大核心设计维度
行为正则化的注入方式:即正则项在算法优化中的作用位置
价值惩罚:把行为正则项直接融入价值函数的定义中,在贝尔曼更新和策略提升两个阶段,都纳入行为正则的代价
纳入行为正则的价值函数 V D π ( s ) = ∑ t = 0 ∞ γ t E s t ∼ P t π ( s ) [ R π ( s t ) − α D ( π ( ⋅ ∣ s t ) , π b ( ⋅ ∣ s t ) ) ] V_D^\pi(s)=\sum_{t=0}^\infty\gamma^tE_{s_t\sim P_t^\pi(s)}[R^\pi(s_t)-\alpha D(\pi(\cdot\vert s_t),\pi_b(\cdot\vert s_t))] V D π ( s ) = ∑ t = 0 ∞ γ t E s t ∼ P t π ( s ) [ R π ( s t ) − α D ( π ( ⋅ ∣ s t ) , π b ( ⋅ ∣ s t ) ) ] ,其中的 D D D 为散度函数
Critic 网络优化目标 min Q θ E ( s , a , r , s ′ ) ∼ D , a ′ ∼ π ϕ ( ⋅ ∣ s ′ ) [ ( r + γ ( Q ˉ ( s ′ , a ′ ) − α D ^ ( π ϕ ( ⋅ ∣ s ′ ) , π b ( ⋅ ∣ s ′ ) ) ) − Q θ ( s , a ) ) 2 ] \underset{Q_\theta}{\min}E_{(s,a,r,s^\prime)\sim D,a^\prime\sim\pi_\phi(\cdot\vert s^\prime)}\Big[\big(r+\gamma(\bar{Q}(s^\prime,a^\prime)-\alpha\hat{D}(\pi_\phi(\cdot\vert s^\prime),\pi_b(\cdot\vert s^\prime)))-Q_\theta(s,a)\big)^2\Big] Q θ min E ( s , a , r , s ′ ) ∼ D , a ′ ∼ π ϕ ( ⋅ ∣ s ′ ) [ ( r + γ ( Q ˉ ( s ′ , a ′ ) − α D ^ ( π ϕ ( ⋅ ∣ s ′ ) , π b ( ⋅ ∣ s ′ ) ) ) − Q θ ( s , a ) ) 2 ] ,其中 D ^ \hat{D} D ^ 是散度 D D D 基于采样的估计值
Actor 策略优化目标 max π ϕ E ( s , a , r , s ′ ) ∼ D [ E a ′ ∼ π ϕ ( ⋅ ∣ s ) [ Q θ ( s , a ′ ) ] − α D ^ ( π ϕ ( ⋅ ∣ s ) , π b ( ⋅ ∣ s ) ) ] \underset{\pi_\phi}{\max}E_{(s,a,r,s^\prime)\sim D}\Big[E_{a^\prime\sim\pi_\phi(\cdot\vert s)}\big[Q_\theta(s,a^\prime)\big]-\alpha\hat{D}(\pi_\phi(\cdot\vert s),\pi_b(\cdot\vert s))\Big] π ϕ max E ( s , a , r , s ′ ) ∼ D [ E a ′ ∼ π ϕ ( ⋅ ∣ s ) [ Q θ ( s , a ′ ) ] − α D ^ ( π ϕ ( ⋅ ∣ s ) , π b ( ⋅ ∣ s ) ) ] ,其中若 D ^ = − log π ( a ′ ∣ s ′ ) \hat{D}=-\log\pi(a^\prime\vert s^\prime) D ^ = − log π ( a ′ ∣ s ′ ) 时即策略熵的单样本估计,此时的算法完全等价于 SAC
策略正则化:行为正则项仅在 Actor 优化阶段加入,在 Critic 的更新中不纳入
Critic 网络优化目标 min Q θ E ( s , a , r , s ′ ) ∼ D , a ′ ∼ π ϕ ( ⋅ ∣ s ′ ) [ ( r + γ Q ˉ ( s ′ , a ′ ) − Q θ ( s , a ) ) 2 ] \underset{Q_\theta}{\min}E_{(s,a,r,s^\prime)\sim D,a^\prime\sim\pi_\phi(\cdot\vert s^\prime)}\Big[\big(r+\gamma\bar{Q}(s^\prime,a^\prime)-Q_\theta(s,a)\big)^2\Big] Q θ min E ( s , a , r , s ′ ) ∼ D , a ′ ∼ π ϕ ( ⋅ ∣ s ′ ) [ ( r + γ Q ˉ ( s ′ , a ′ ) − Q θ ( s , a ) ) 2 ]
Actor 网络优化目标 max π ϕ E ( s , a , r , s ′ ) ∼ D [ E a ′ ∼ π ϕ ( ⋅ ∣ s ) [ Q θ ( s , a ′ ) ] − α D ^ ( π ϕ ( ⋅ ∣ s ) , π b ( ⋅ ∣ s ) ) ] \underset{\pi_\phi}{\max}E_{(s,a,r,s^\prime)\sim D}\Big[E_{a^\prime\sim\pi_\phi(\cdot\vert s)}\big[Q_\theta(s,a^\prime)\big]-\alpha\hat{D}(\pi_\phi(\cdot\vert s),\pi_b(\cdot\vert s))\Big] π ϕ max E ( s , a , r , s ′ ) ∼ D [ E a ′ ∼ π ϕ ( ⋅ ∣ s ) [ Q θ ( s , a ′ ) ] − α D ^ ( π ϕ ( ⋅ ∣ s ) , π b ( ⋅ ∣ s ) ) ]
行为正则化的散度实现:即衡量策略与行为策略差异的散度函数选择与估计方法,四种可选的散度函数
Kernel MMD: M M D 2 ( { x 1 , ⋯ , x n } , { y 1 , ⋯ , y m } ) = 1 n 2 ∑ i , i ′ k ( x i , x i ′ ) − 2 n m ∑ i , j k ( x i , y j ) + 1 m 2 ∑ j , j ′ k ( y j , y j ′ ) MMD^2(\{x_1,\cdots,x_n\},\{y_1,\cdots,y_m\})=\frac{1}{n^2}\sum_{i,i^\prime}k(x_i,x_{i^\prime})-\frac{2}{nm}\sum_{i,j}k(x_i,y_j)+\frac{1}{m^2}\sum_{j,j^\prime}k(y_j,y_{j^\prime}) M M D 2 ( { x 1 , ⋯ , x n } , { y 1 , ⋯ , y m } ) = n 2 1 ∑ i , i ′ k ( x i , x i ′ ) − n m 2 ∑ i , j k ( x i , y j ) + m 2 1 ∑ j , j ′ k ( y j , y j ′ )
KL 散度: D K L ( π ϕ ( ⋅ ∣ s ) , π b ( ⋅ ∣ s ) ) = E a ∼ π ϕ ( ⋅ ∣ s ) [ log π ϕ ( a ∣ s ) − log π b ( a ∣ s ) ] D_{KL}(\pi_\phi(\cdot\vert s),\pi_b(\cdot\vert s))=E_{a\sim\pi_\phi(\cdot\vert s)}\big[\log\pi_\phi(a\vert s)-\log\pi_b(a\vert s)\big] D K L ( π ϕ ( ⋅ ∣ s ) , π b ( ⋅ ∣ s ) ) = E a ∼ π ϕ ( ⋅ ∣ s ) [ log π ϕ ( a ∣ s ) − log π b ( a ∣ s ) ]
原始形式:直接基于采样估计,需要同时获取 π ϕ \pi_\phi π ϕ 和 π b \pi_b π b 的概率密度,因此需要提前拟合 π ^ b \hat{\pi}_b π ^ b 替代 π b \pi_b π b
对偶形式:公式为 D K L ( p , q ) = max g E x ∼ q [ g ( x ) ] − E x ∼ p [ − log ( − g ( x ) ) − 1 ] D_{KL}(p,q)=\underset{g}{\max}E_{x\sim q}[g(x)]-E_{x\sim p}[-\log(-g(x))-1] D K L ( p , q ) = g max E x ∼ q [ g ( x ) ] − E x ∼ p [ − log ( − g ( x ) ) − 1 ] ,是基于 f 散度的对偶表示,无需显式拟合行为策略,只需要学习一个判别器函数 g g g
Wasserstein Distance: W ( p , q ) = sup g : ∥ g ∥ L ≤ 1 E x ∼ p [ g ( x ) ] − E x ∼ q [ g ( x ) ] W(p,q)=\underset{g:\Vert g\Vert_L\leq1}{\sup}E_{x\sim p}[g(x)]-E_{x\sim q}[g(x)] W ( p , q ) = g : ∥ g ∥ L ≤ 1 sup E x ∼ p [ g ( x ) ] − E x ∼ q [ g ( x ) ] ,需要维护一个满足 Lipschitz 约束的判别器 g g g
AWR
AWR 即优势加权回归,是一种极简、高稳定、可扩展的离线策略无模型强化学习算法。
AWR 的核心基础就是 RWR,即奖励加权回归。RWR 将策略更新转为加权最大似然回归问题,即用当前策略 π k \pi_k π k 采样数据拟合新策略 π k + 1 \pi_{k+1} π k + 1 时,每个动作的拟合权重是其对应回报的指数形式。RWR 的核心更新公式如下
π k + 1 = arg max π E s ∼ d π k ( s ) E a ∼ π k ( a ∣ s ) [ log π ( a ∣ s ) exp ( 1 β R s , a ) ] \pi_{k+1}=\underset{\pi}{\argmax}E_{s\sim d_{\pi_k}(s)}E_{a\sim\pi_k(a\vert s)}\Big[\log\pi(a\vert s)\exp(\frac{1}{\beta}R_{s,a})\Big]
π k + 1 = π a r g m a x E s ∼ d π k ( s ) E a ∼ π k ( a ∣ s ) [ log π ( a ∣ s ) exp ( β 1 R s , a ) ]
其中 π k \pi_k π k 为第 k k k 轮迭代的当前策略, R s , a R_{s,a} R s , a 是状态动作对对应的轨迹累积回报, β \beta β 是温度超参数,控制权重的尖锐程度,越小则高回报动作的权重就被放大的更明显。RWR 的本质就是把策略更新转化为加权最大似然回归问题,即用当前策略 π k \pi_k π k 采样数据,拟合新策略 π k + 1 \pi_{k+1} π k + 1 ,每个动作的拟合权重是其对应回报的指数形式。但是 RWR 也存在一些核心的局限
每一轮采样数据用完即丢弃,样本效低下
直接使用原始回报作为权重,方差大,训练不稳定
无法有效复用历史离策略数据,若强行加入重要性采样,会进一步放大方差
与 RWR 直接最大化 J ( π ) J(\pi) J ( π ) 不同,AWR 的出发点就是最大化新策略 π \pi π 相对与采样策略 μ \mu μ 的期望改进
η ( π ) = J ( π ) − J ( μ ) \eta(\pi)=J(\pi)-J(\mu)
η ( π ) = J ( π ) − J ( μ )
基于 Kakade & Langford 的引理,即对于任意两个策略 π \pi π 和 μ \mu μ ,两者的期望回报差异,严格等于新策略 π \pi π 在自身的状态分布下,对旧策略 μ \mu μ 的优势函数的期望,即 J ( π ) − J ( μ ) = E s ∼ d π ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] J(\pi)-J(\mu)=E_{s\sim d_{\pi}(s)}E_{a\sim\pi(a\vert s)}[A^\mu(s,a)] J ( π ) − J ( μ ) = E s ∼ d π ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] ,则这个期望改进可以转化为优势函数的期望
η ( π ) = E s ∼ d π ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] \eta(\pi)=E_{s\sim d_{\pi}(s)}E_{a\sim\pi(a\vert s)}[A^\mu(s,a)]
η ( π ) = E s ∼ d π ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ]
其中的优势函数 A μ ( s , a ) = R s , a μ − V μ ( s ) A^\mu(s,a)=R_{s,a}^\mu-V^\mu(s) A μ ( s , a ) = R s , a μ − V μ ( s ) ,这就是 AWR 的优势加权。优势函数用于衡量在状态 s s s 下选择动作 a a a ,比遵循采样策略 μ \mu μ 的平均表现好多少。相比于 RWR 用原始的回报 R R R 加权,优势函数减去了状态价值的基线 V ( s ) V(s) V ( s ) ,可以极大降低更新的方差。
在原目标函数中,状态分布 d π ( s ) d_\pi(s) d π ( s ) 和待优化的策略 π \pi π 耦合,无法直接优化,所以采样策略 μ \mu μ 的状态分布 d μ ( s ) d_\mu(s) d μ ( s ) 代替 d π ( s ) d_\pi(s) d π ( s ) ,得到原目标的一阶近似代理目标
η ^ ( π ) = E s ∼ d μ ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] \hat{\eta}(\pi)=E_{s\sim d_\mu(s)}E_{a\sim\pi(a\vert s)}[A^\mu(s,a)]
η ^ ( π ) = E s ∼ d μ ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ]
这个代理目标和原目标在一阶上是等价的,只要 π \pi π 和 μ \mu μ 的分布差异不大,就能很好地近似目标。为了保证他俩的分布差异足够小,让代理目标有效,加入 KL 散度约束,构造出完整的优化问题
arg max π E s ∼ d μ ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] s . t . E s ∼ d μ ( s ) [ D K L ( π ( ⋅ ∣ s ) ∥ μ ( ⋅ ∣ s ) ) ] ≤ ϵ \underset{\pi}{\argmax}E_{s\sim d_\mu(s)}E_{a\sim\pi(a\vert s)}[A^\mu(s,a)]\\s.t.E_{s\sim d_\mu(s)}\Big[D_{KL}\big(\pi(\cdot\vert s)\Vert\mu(\cdot\vert s)\big)\Big]\leq\epsilon
π a r g m a x E s ∼ d μ ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] s . t . E s ∼ d μ ( s ) [ D K L ( π ( ⋅ ∣ s ) ∥ μ ( ⋅ ∣ s ) ) ] ≤ ϵ
对上述带约束的优化问题构造拉格朗日函数
L ( π , β ) = E s ∼ d μ ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] + β ( ϵ − E s ∼ d μ ( s ) [ D K L ( π ( ⋅ ∣ s ) ∥ μ ( ⋅ ∣ s ) ) ] ) L(\pi,\beta)=E_{s\sim d_\mu(s)}E_{a\sim\pi(a\vert s)}[A^\mu(s,a)]+\beta\Big(\epsilon-E_{s\sim d_\mu(s)}\Big[D_{KL}\big(\pi(\cdot\vert s)\Vert\mu(\cdot\vert s)\big)\Big]\Big)
L ( π , β ) = E s ∼ d μ ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] + β ( ϵ − E s ∼ d μ ( s ) [ D K L ( π ( ⋅ ∣ s ) ∥ μ ( ⋅ ∣ s ) ) ] )
其中 β \beta β 是拉格朗日乘子。对 π ( a ∣ s ) \pi(a\vert s) π ( a ∣ s ) 求导且令导数为 0,可以得到最优策略的闭式解
π ⋆ ( a ∣ s ) = 1 Z ( s ) μ ( a ∣ s ) exp ( 1 β A μ ( s , a ) ) \pi^\star(a\vert s)=\frac{1}{Z(s)}\mu(a\vert s)\exp\Big(\frac{1}{\beta}A^\mu(s,a)\Big)
π ⋆ ( a ∣ s ) = Z ( s ) 1 μ ( a ∣ s ) exp ( β 1 A μ ( s , a ) )
其中的 Z ( s ) Z(s) Z ( s ) 是配分函数,用于归一化动作分布。当策略用神经网络等函数近似器表示时,需要把这个最优闭式解投影到参数化策略的流形上,通过最小化二者的 KL 散度,最终推导出 AWR 的策略更新目标
arg max π E s ∼ d μ ( s ) E a ∼ μ ( a ∣ s ) [ log π ( a ∣ s ) exp ( 1 β A μ ( s , a ) ) ] \underset{\pi}{\argmax}E_{s\sim d_\mu(s)}E_{a\sim\mu(a\vert s)}\Big[\log\pi(a\vert s)\exp\Big(\frac{1}{\beta}A^\mu(s,a)\Big)\Big]
π a r g m a x E s ∼ d μ ( s ) E a ∼ μ ( a ∣ s ) [ log π ( a ∣ s ) exp ( β 1 A μ ( s , a ) ) ]
AWR 的回放缓冲区 D D D ,每一轮都会把新策略的采样轨迹存入,因此 D D D 中包含了历史所有迭代的策略采样的数据。从分布上看,回放缓冲区对应的采样策略 μ \mu μ ,不再是单一的当前策略,而是所有历史策略的混合分布,在论文中定义了混合采样策略的完整分布体系
轨迹混合分布 μ ( τ ) = ∑ i = 1 k ω i π i ( τ ) \mu(\tau)=\sum_{i=1}^k\omega_i\pi_i(\tau) μ ( τ ) = ∑ i = 1 k ω i π i ( τ ) ,其中 π i ( τ ) \pi_i(\tau) π i ( τ ) ,是第 i i i 轮策略生成轨迹的概率, ω i \omega_i ω i 是每个历史策略的混合权重
联合状态-动作分布 μ ( s , a ) = ∑ i = 1 k ω i d π i ( s ) π i ( a ∣ s ) \mu(s,a)=\sum_{i=1}^k\omega_id_{\pi_i}(s)\pi_i(a\vert s) μ ( s , a ) = ∑ i = 1 k ω i d π i ( s ) π i ( a ∣ s ) ,其中的 d π i ( s ) d_{\pi_i}(s) d π i ( s ) 是第 i i i 轮策略的折扣状态分布
边界状态分布 d μ ( s ) = ∑ i = 1 k ω i d π i ( s ) d_\mu(s)=\sum_{i=1}^k\omega_id_{\pi_i}(s) d μ ( s ) = ∑ i = 1 k ω i d π i ( s )
条件动作分布 μ ( a ∣ s ) = μ ( s , a ) d μ ( s ) \mu(a\vert s)=\frac{\mu(s,a)}{d_\mu(s)} μ ( a ∣ s ) = d μ ( s ) μ ( s , a ) ,即回放缓冲区在状态 s s s 下的动作分布
对于上述单策略的期望改进,将其扩展到混合策略场景
η ^ ( π ) = J ( π ) − ∑ i = 1 k ω i J ( π i ) = ∑ i = 1 k ω i E s ∼ d π i ( s ) E a ∼ π ( a ∣ s ) [ A π i ( s , a ) ] \hat{\eta}(\pi)=J(\pi)-\sum_{i=1}^k\omega_iJ(\pi_i)=\sum_{i=1}^k\omega_iE_{s\sim d_{\pi_i}(s)}E_{a\sim\pi(a\vert s)}[A^{\pi_i}(s,a)]
η ^ ( π ) = J ( π ) − i = 1 ∑ k ω i J ( π i ) = i = 1 ∑ k ω i E s ∼ d π i ( s ) E a ∼ π ( a ∣ s ) [ A π i ( s , a ) ]
其中的 A π i ( s , a ) = R s , a π i − V π i ( s ) A^{\pi_i}(s,a)=R_{s,a}^{\pi_i}-V^{\pi_i}(s) A π i ( s , a ) = R s , a π i − V π i ( s ) 是状态-动作对相对第 i i i 轮历史策略的优势函数,根据上述完整的优化函数,将其扩展到混合策略场景
arg max π ∑ i = 1 k ω i E s ∼ d π i ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] s . t . E s ∼ d μ ( s ) [ D K L ( π ( ⋅ ∣ s ) ∥ μ ( ⋅ ∣ s ) ) ] ≤ ϵ \underset{\pi}{\argmax}\sum_{i=1}^k\omega_iE_{s\sim d_{\pi_i}(s)}E_{a\sim\pi(a\vert s)}[A^\mu(s,a)]\\s.t.E_{s\sim d_\mu(s)}\Big[D_{KL}\big(\pi(\cdot\vert s)\Vert\mu(\cdot\vert s)\big)\Big]\leq\epsilon
π a r g m a x i = 1 ∑ k ω i E s ∼ d π i ( s ) E a ∼ π ( a ∣ s ) [ A μ ( s , a ) ] s . t . E s ∼ d μ ( s ) [ D K L ( π ( ⋅ ∣ s ) ∥ μ ( ⋅ ∣ s ) ) ] ≤ ϵ
根据上述的分析,构造完整的优化问题
arg max π ∑ i = 1 k ω i E s ∼ d π i ( s ) E a ∼ μ ( a ∣ s ) [ log π ( a ∣ s ) exp ( 1 β ∑ j = 1 k ω j d π j ( s ) ( R s , a π j − V π j ( s ) ) ∑ i = j k ω j d π j ( s ) ) ] \underset{\pi}{\argmax}\sum_{i=1}^k\omega_iE_{s\sim d_{\pi_i}(s)}E_{a\sim\mu(a\vert s)}\Big[\log\pi(a\vert s)\exp\Big(\frac{1}{\beta}\frac{\sum_{j=1}^k\omega_jd_{\pi_j}(s)(R^{\pi_j}_{s,a}-V^{\pi_j}(s))}{\sum_{i=j}^k\omega_jd_{\pi_j}(s)}\Big)\Big]
π a r g m a x i = 1 ∑ k ω i E s ∼ d π i ( s ) E a ∼ μ ( a ∣ s ) [ log π ( a ∣ s ) exp ( β 1 ∑ i = j k ω j d π j ( s ) ∑ j = 1 k ω j d π j ( s ) ( R s , a π j − V π j ( s ) ) ) ]
但是它在实际中无法直接实现,要计算这个式子,需要为每一轮的历史策略 π i \pi_i π i 单独拟合一个价值函数 V π i ( s ) V^{\pi_i}(s) V π i ( s ) ,而每一轮历史策略的数量都很少,拟合出的价值函数会有较大的方差,几乎不可用。所以不单步拟合每个历史策略的价值函数,而是拟合一个单一的均值价值函数 V ˉ ( s ) \bar{V}(s) V ˉ ( s ) ,直接估计所有历史策略价值函数的加权平均。该价值函数的优化目标如下
V ˉ = arg max V ∑ i ω i E s , a ∼ π i [ ∥ R s , a π i − V ( s ) ∥ 2 ] \bar{V}=\underset{V}{\argmax}\sum_i\omega_iE_{s,a\sim\pi_i}\Big[\big\Vert R_{s,a}^{\pi_i}-V(s)\big\Vert^2\Big]
V ˉ = V a r g m a x i ∑ ω i E s , a ∼ π i [ ∥ ∥ ∥ R s , a π i − V ( s ) ∥ ∥ ∥ 2 ]
而这个均值价值函数的最优解,正好是闭式解中所需的加权平均基线,而且这个优化目标可以直接通过回放缓冲区 D 中的所有样本做均方误差回归实现。
综上所述,最终 AWR 的流程如下
初始化策略 π 1 \pi_1 π 1
初始化空的回放缓冲区
对于每一轮迭代
用当前策略 π k \pi_k π k 采样一批轨迹,添加到回放缓冲区中
拟合价值函数 V k D = arg max V E s , a ∼ D [ ∥ R s , a D − V ( s ) ∥ 2 ] V_k^D=\underset{V}{\argmax}E_{s,a\sim D}\Big[\big\Vert R_{s,a}^{D}-V(s)\big\Vert^2\Big] V k D = V a r g m a x E s , a ∼ D [ ∥ ∥ ∥ R s , a D − V ( s ) ∥ ∥ ∥ 2 ]
拟合新策略 π k + 1 = arg max V E s , a ∼ D [ log π ( a ∣ s ) exp ( 1 β ( R s , a D − V k D ) ) ] \pi_{k+1}=\underset{V}{\argmax}E_{s,a\sim D}\Big[\log\pi(a\vert s)\exp\big(\frac{1}{\beta}(R_{s,a}^D-V_k^D)\big)\Big] π k + 1 = V a r g m a x E s , a ∼ D [ log π ( a ∣ s ) exp ( β 1 ( R s , a D − V k D ) ) ]
OneStep
OnsStep 即极简离线强化学习,用仅一步的策略改进超越了同期复杂的 SOTA 算法。
离线 RL 的核心痛点是只能用行为策略预先收集的固定数据集学习,无法与环境交互。此前主流的迭代式算法都需要交替执行离线策略评估和策略改进:即每一轮都要用行为策略的数据集,去估计当前学习策略的 Q 值,再基于这个 Q 值优化策略。而 OneStep 算法核心解决了迭代算法的两大失效根源:
分布偏移:待评估的学习策略与收集数据的行为策略不一致,导致 Q 值估计存在天然的高方差、高误差
迭代误差利用:反复用有误差的 Q 值优化策略,会让策略持续选择被高估的动作,误差通过动态规划不断放大,最终导致性能崩溃
OneStep 的核心设计逻辑是:完全规避离线策略评估,仅用行为策略的同策略 Q 估计,做一次带约束或正则化的策略改进。OneStep 是论文提出的 OAMPI 的通用架构中,迭代次数为 1 的极简实例,完整流程有三个阶段
拟合行为策略 β ^ \hat{\beta} β ^ :后续的策略改进会通过约束或正则化,让新策略始终贴近 β ^ \hat{\beta} β ^ ,避免偏离数据集的支撑集,防止外推误差
数据集 D D D 的对数似然函数为 L ( θ ) = 1 N ∑ i = 1 N log β ^ θ ( a i ∣ s i ) L(\theta)=\frac{1}{N}\sum_{i=1}^N\log\hat{\beta}_\theta(a_i\vert s_i) L ( θ ) = N 1 ∑ i = 1 N log β ^ θ ( a i ∣ s i )
最大化对数似然,拟合行为策略的优化目标 θ = arg max θ L ( θ ) \theta=\underset{\theta}{\argmax} L(\theta) θ = θ a r g m a x L ( θ )
同策略拟合行为策略的 Q 函数 Q ^ β \hat{Q}^\beta Q ^ β :这是同策略评估,完全没有分布偏移
引入目标 Q 网络 Q ^ t β \hat{Q}^\beta_t Q ^ t β 稳定训练,避免自举导致的发散
对数据集中的每个样本 ( s , a , r , s ′ ) (s,a,r,s^\prime) ( s , a , r , s ′ ) 计算 TD 目标 y = r + γ E a ′ ∼ β ^ ( a ′ ∣ s ′ ) [ Q ^ t β ( s ′ , a ′ ) ] y=r+\gamma E_{a^\prime\sim\hat{\beta}(a^\prime\vert s^\prime)}\big[\hat{Q}^\beta_t(s^\prime,a^\prime)\big] y = r + γ E a ′ ∼ β ^ ( a ′ ∣ s ′ ) [ Q ^ t β ( s ′ , a ′ ) ]
损失函数 L ( ϕ ) = 1 N ∑ i = 1 N ( Q ^ t β ( s i , a i ) − y i ) 2 L(\phi)=\frac{1}{N}\sum_{i=1}^N(\hat{Q}^\beta_t(s_i,a_i)-y_i)^2 L ( ϕ ) = N 1 ∑ i = 1 N ( Q ^ t β ( s i , a i ) − y i ) 2
最小化损失函数找到最优 Q 网络参数 ϕ = arg min ϕ L ( ϕ ) \phi=\underset{\phi}{\argmin} L(\phi) ϕ = ϕ a r g m i n L ( ϕ )
单步带约束或正则的策略改进:基于拟合好的 Q ^ β \hat{Q}^\beta Q ^ β 和 β ^ \hat{\beta} β ^ ,仅做一次策略优化,得到最终的输出策略 π \pi π 。论文中提出了 3 中经典的策略改进算子,均能实现优异性能
反向 KL 正则化:核心是最大化带正则项的目标函数 π ^ = arg max π ∑ s i E a ∼ π ( ⋅ ∣ s i ) [ Q ^ β ( s i , a ) ] − α D K L ( π ( ⋅ ∣ s i ) ∥ β ^ ( ⋅ ∣ s i ) ) \hat{\pi}=\underset{\pi}{\argmax}\sum_{s_i}E_{a\sim\pi(\cdot\vert s_i)}[\hat{Q}^\beta(s_i,a)]-\alpha D_{KL}\big(\pi(\cdot\vert s_i)\Vert\hat{\beta}(\cdot\vert s_i)\big) π ^ = π a r g m a x ∑ s i E a ∼ π ( ⋅ ∣ s i ) [ Q ^ β ( s i , a ) ] − α D K L ( π ( ⋅ ∣ s i ) ∥ β ^ ( ⋅ ∣ s i ) ) ,其中 α \alpha α 为正则化超参数,控制策略与行为策略的贴近程度
Easy BCQ:对经典的 BCQ 算法进行简化,去掉扰动网络。对每个状态,从 β ^ \hat{\beta} β ^ 中采样 M M M 个候选动作,直接选择 Q ^ β \hat{Q}^\beta Q ^ β 评分最高的动作作为输出 π ^ = [ a = arg max a j { Q ^ β ( s , a j ) : a j ∼ β ^ ( ⋅ ∣ s ) , 1 ≤ j ≤ M } ] \hat{\pi}=[a=\underset{a_j}{\argmax}\{\hat{Q}^\beta(s,a_j):a_j\sim\hat{\beta}(\cdot\vert s),1\leq j\leq M\}] π ^ = [ a = a j a r g m a x { Q ^ β ( s , a j ) : a j ∼ β ^ ( ⋅ ∣ s ) , 1 ≤ j ≤ M } ]
指数加权模仿学习:用指数化的优势函数为数据集中的动作加权,让策略优先模仿高价值的动作,本质是对高质量数据做加权行为克隆 π ^ = arg max π ∑ s i exp ( τ ( Q ^ β ( s i , a i ) − V ^ ( s i ) ) ) log π ( a i ∣ s i ) \hat{\pi}=\underset{\pi}{\argmax}\sum_{s_i}\exp(\tau(\hat{Q}^\beta(s_i,a_i)-\hat{V}(s_i)))\log\pi(a_i\vert s_i) π ^ = π a r g m a x ∑ s i exp ( τ ( Q ^ β ( s i , a i ) − V ^ ( s i ) ) ) log π ( a i ∣ s i ) ,其中的 τ \tau τ 是温度超参数,控制对高优势动作的加权程度
REM
REM 的算法是一种受到 Dropout 启发的 DQN 方法的一种易于实现的扩展,它的核心思想就是:多个 Q 值估计的任意凸组合,本身也是一个合法的 Q 值估计,通过随机凸组合训练,能以极低的计算成本实现指数级数量的虚拟 Q 函数集成,大幅度提升鲁棒性和泛化能力。
当所有的 Q 头都收敛到最优 Q 函数时,它们的任意凸组合也会收敛到最优 Q 函数。因此可以对多个 Q 头的随机凸组合强制执行 Bellman 最优性约束,让模型学习到更鲁棒的 Q 值估计,同时通过随机化引入正则化来缓解过拟合。
首先对每个小批量,从 K − 1 K-1 K − 1 维单纯形上随机采样一个凸组合系数 α = ( α 1 , ⋯ , α K ) \alpha=(\alpha_1,\cdots,\alpha_K) α = ( α 1 , ⋯ , α K ) ,且满足
α 1 + ⋯ + α K = 1 α i ≥ 0 \alpha_1+\cdots+\alpha_K=1\quad\alpha_i\geq0
α 1 + ⋯ + α K = 1 α i ≥ 0
先从均匀分布 U ( 0 , 1 ) U(0,1) U ( 0 , 1 ) 独立采样 K K K 个值 α k ′ \alpha_k^\prime α k ′ ,之后再进行归一化,得到 α \alpha α ,每个小批量都重新采样一次。基于这个随机的凸组合系数,计算凸组合的 TD 误差
Δ θ α = ∑ k α k Q θ k ( s , a ) − r − γ max a ′ ∑ k α k Q θ ′ k ( s ′ , a ′ ) \Delta_\theta^\alpha=\sum_k\alpha_kQ_\theta^k(s,a)-r-\gamma\underset{a^\prime}{\max}\sum_k\alpha_kQ_{\theta^\prime}^k(s^\prime,a^\prime)
Δ θ α = k ∑ α k Q θ k ( s , a ) − r − γ a ′ max k ∑ α k Q θ ′ k ( s ′ , a ′ )
其中第一项 ∑ k α k Q θ k ( s , a ) \sum_k\alpha_kQ_\theta^k(s,a) ∑ k α k Q θ k ( s , a ) 是主网络 K K K 个 Q 头的 Q 值的随机凸组合,作为当前的 Q 值估计。右侧的两项 r + γ max a ′ ∑ k α k Q θ ′ k ( s ′ , a ′ ) r+\gamma\underset{a^\prime}{\max}\sum_k\alpha_kQ_{\theta^\prime}^k(s^\prime,a^\prime) r + γ a ′ max ∑ k α k Q θ ′ k ( s ′ , a ′ ) 是 TD 目标值,用目标网络的 K 个 Q 头的 Q 值按照同一个 α \alpha α 计算,保证贝尔曼一致性针对同一个凸组合的 Q 函数强制执行。则对应的损失函数为
L ( θ ) = E ( s , a , r , s ′ ) ∼ D [ E α ∼ P Δ [ l λ ( Δ θ α ( s , a , r , s ′ ) ) ] ] L(\theta)=E_{(s,a,r,s^\prime)\sim D}\Big[E_{\alpha\sim P_\Delta}\big[l_\lambda(\Delta_\theta^\alpha(s,a,r,s^\prime))\big]\Big]
L ( θ ) = E ( s , a , r , s ′ ) ∼ D [ E α ∼ P Δ [ l λ ( Δ θ α ( s , a , r , s ′ ) ) ] ]
损失函数本质上是让 K K K 个 Q 头的任意凸组合都满足贝尔曼最优性方程,相当于对无穷多的贝尔曼约束做优化,让模型学习到更鲁棒的 Q 值估计。其中的 l λ ( ⋅ ) l_\lambda(\cdot) l λ ( ⋅ ) 函数为 Huber 损失函数,定义如下
l λ ( u ) = { 1 2 u 2 ∣ u ∣ ≤ λ λ ( ∣ u ∣ − 1 2 λ ) o t h e r w i s e l_\lambda(u)=\left\{\begin{aligned}&\frac{1}{2}u^2&&\vert u\vert\leq\lambda\\&\lambda(\vert u\vert-\frac{1}{2}\lambda)&&otherwise\end{aligned}\right.
l λ ( u ) = ⎩ ⎪ ⎪ ⎨ ⎪ ⎪ ⎧ 2 1 u 2 λ ( ∣ u ∣ − 2 1 λ ) ∣ u ∣ ≤ λ o t h e r w i s e
CRR
CRR 即 Critic Regularized Regression,核心是将离线策略的优化转化为价值过滤的行为克隆,从根源上解决了传统离线 RL 的痛点,即分布外动作的 Q 值,自举误差累积,同时实现门槛极低,泛化性极强
策略评估是 RL 的核心步骤,目标是学习一个动作价值函数 Q θ ( s , a ) Q_\theta(s,a) Q θ ( s , a ) ,拟合当前策略 π \pi π 在状态 s s s 下选择动作 a a a 的长期折扣期望回报。TD 损失函数定义如下
E ( s , a , r , s ′ ) ∼ D [ F ( Q θ ( s , a ) , ( r + γ E a ′ ∼ π ( s ′ ) [ Q θ ′ ( s ′ , a ′ ) ] ) ] E_{(s,a,r,s^\prime)\sim D}\Big[F\big(Q_\theta(s,a),(r+\gamma E_{a^\prime\sim\pi(s^\prime)}[Q_{\theta^\prime}(s^\prime,a^\prime)]\big)\Big]
E ( s , a , r , s ′ ) ∼ D [ F ( Q θ ( s , a ) , ( r + γ E a ′ ∼ π ( s ′ ) [ Q θ ′ ( s ′ , a ′ ) ] ) ]
其中函数 F ( ⋅ , ⋅ ) F(\cdot,\cdot) F ( ⋅ , ⋅ ) 为散度度量函数,衡量当前 Q 值估计与贝尔曼目标的差异,CRR 采用分布式 Q 函数,此时的函数为分布间的散度,而非是均方误差。
为了从根源上避免 OOD 动作的 Q 值查询,CRR重构了策略的优化目标,将策略学习转化为价值加权的行为克隆,则 CRR 中策略网络的优化目标为
arg max π E ( s , a ) ∼ D [ f ( Q θ , π , s , a ) log π ( a ∣ s ) ] \underset{\pi}{\argmax}E_{(s,a)\sim D}\Big[f(Q_\theta,\pi,s,a)\log\pi(a\vert s)\Big]
π a r g m a x E ( s , a ) ∼ D [ f ( Q θ , π , s , a ) log π ( a ∣ s ) ]
其中函数 f ( Q θ , π , s , a ) f(Q_\theta,\pi,s,a) f ( Q θ , π , s , a ) 是 CRR 的核心加权函数,满足
非负标量函数,关于 Q θ Q_\theta Q θ 单调递增
为数据集中的每个 ( s , a ) (s,a) ( s , a ) 样本分配权重:价值越高的动作,权重越大;价值越低的动作,权重越小。实现价值过滤
在论文中提出了两种 f f f 函数的设计,如下
二元过滤 f = { 1 A ^ θ ( s , a ) > 0 0 f=\left\{\begin{aligned}&1&&\hat{A}_\theta(s,a)>0\\&0\end{aligned}\right. f = { 1 0 A ^ θ ( s , a ) > 0 ,其中的 A ^ θ ( s , a ) = Q ( s , a ) − V ( s ) \hat{A}_\theta(s,a)=Q(s,a)-V(s) A ^ θ ( s , a ) = Q ( s , a ) − V ( s ) ,表示在状态 s s s 下,选择动作 a a a 比当前策略的平均水平好多少,即选择优势较高的动作
指数过滤 f = exp ( A ^ θ ( s , a ) β ) f=\exp(\frac{\hat{A}_\theta(s,a)}{\beta}) f = exp ( β A ^ θ ( s , a ) ) ,其中的 β \beta β 为温度参数,控制加权的锐度,越大对权重放大越明显
则 CRR 算法的完整流程如下
输入离线数据集 D D D
初始化 Critic 网络 Q θ Q_\theta Q θ ,目标网络 π ϕ \pi_\phi π ϕ ,目标网络 Q θ ′ Q_{\theta^\prime} Q θ ′ 和 π ϕ ′ \pi_{\phi^\prime} π ϕ ′ ,加权函数 f f f
循环执行
从数据集 D D D 中采样批量数据 ( s , a , r , s ′ ) (s,a,r,s^\prime) ( s , a , r , s ′ )
计算策略网络的损失 L = − E ( s , a ) ∼ D [ f ( Q θ , π , s , a ) log π ( a ∣ s ) ] L=-E_{(s,a)\sim D}\Big[f(Q_\theta,\pi,s,a)\log\pi(a\vert s)\Big] L = − E ( s , a ) ∼ D [ f ( Q θ , π , s , a ) log π ( a ∣ s ) ] ,梯度下降更新策略网络参数
计算 TD 损失 E ( s , a , r , s ′ ) ∼ D [ F ( Q θ ( s , a ) , ( r + γ E a ′ ∼ π ( s ′ ) [ Q θ ′ ( s ′ , a ′ ) ] ) ] E_{(s,a,r,s^\prime)\sim D}\Big[F\big(Q_\theta(s,a),(r+\gamma E_{a^\prime\sim\pi(s^\prime)}[Q_{\theta^\prime}(s^\prime,a^\prime)]\big)\Big] E ( s , a , r , s ′ ) ∼ D [ F ( Q θ ( s , a ) , ( r + γ E a ′ ∼ π ( s ′ ) [ Q θ ′ ( s ′ , a ′ ) ] ) ] ,最小化 TD 损失更新 Critic 网络参数
一定步数之后更新目标网络
CQL
CQL 算法即保守 Q-Learning 算法,与 BCQ 从动作空间约束的角度不同,CQL 不约束策略,直接从价值函数保守估计入手,即将算法中偏离数据集的点上的函数 Q 保持在很低的值来减小外推误差。CQL 通过在普通的 Bellman 方程上引入一些额外的限制项来实现这一目标,即直接对 Q 函数施加保守正则化。
在标准的 Q-Learning 中,对于离线数据集 D D D ,标准异策略 Q 学习的损失为 Bellman 的均方误差
L s t d = E ( s , a , r , s ′ ) ∼ D [ ( Q ( s , a ) − ( r + γ max a ′ Q ( s ′ , a ′ ) ) ) 2 ] L_{std}=E_{(s,a,r,s^\prime)\sim D}[(Q(s,a)-(r+\gamma\underset{a^\prime}{\max}Q(s^\prime,a^\prime)))^2]
L s t d = E ( s , a , r , s ′ ) ∼ D [ ( Q ( s , a ) − ( r + γ a ′ max Q ( s ′ , a ′ ) ) ) 2 ]
为了防止 Q 值在各个状态上的过高估计,需要对某些状态上的高 Q 值进行惩罚,考虑一般情况,希望 Q 在某个特定分布 μ ( s , a ) \mu(s,a) μ ( s , a ) 上的期望值最小。对数据集中状态 s s s 按策略 μ \mu μ 得到的动作进行惩罚,得到新的损失函数如下
L = 1 2 L s t d + α E s ∼ D , a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] L=\frac{1}{2}L_{std}+\alpha E_{s\sim D,a\sim\mu(a\vert s)}[Q(s,a)]
L = 2 1 L s t d + α E s ∼ D , a ∼ μ ( a ∣ s ) [ Q ( s , a ) ]
其中 α \alpha α 是平衡因子,上式中最小化求解得到的函数 Q 在任何 ( s , a ) (s,a) ( s , a ) 上的值都比真实值要小,即 Q 函数在所有 ( s , a ) (s,a) ( s , a ) 上都是真实 Q 值的逐点下界(在给定的定义域内,对于每一个点 x x x ,考虑函数值 f ( x ) f(x) f ( x ) 所有可能取值中的最小下界)。但是这会导致 Q 值被过度压低,无法学习到超越行为策略的最优策略。此时放宽条件,只需要保证目标策略 π ( a ∣ s ) \pi(a\vert s) π ( a ∣ s ) 下的期望 Q 值是真实价值 V π ( s ) V^\pi(s) V π ( s ) 的下界,不需要保证每个 ( s , a ) (s,a) ( s , a ) 的 Q 值都是逐点下界。上述损失函数改为
L = 1 2 L s t d + α ( E s ∼ D , a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] − E s ∼ D , a ∼ π θ ( a ∣ s ) [ Q ( s , a ) ] ) L=\frac{1}{2}L_{std}+\alpha\Big(E_{s\sim D,a\sim\mu(a\vert s)}[Q(s,a)]-E_{s\sim D,a\sim\pi_\theta(a\vert s)}[Q(s,a)]\Big)
L = 2 1 L s t d + α ( E s ∼ D , a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] − E s ∼ D , a ∼ π θ ( a ∣ s ) [ Q ( s , a ) ] )
上述公式中的行为策略为 π θ \pi_\theta π θ 。当 μ = π \mu=\pi μ = π 时,上述计算出的 Q 函数虽然不是在每个点上都小于真实值,但其期望是小于真实值的,即 E π ( a ∣ s ) [ Q ( s , a ) ] ≤ V π ( s ) E_{\pi(a\vert s)}[Q(s,a)]\leq V^\pi(s) E π ( a ∣ s ) [ Q ( s , a ) ] ≤ V π ( s ) 。但是当令 μ = π \mu=\pi μ = π 时,在 Q 迭代的每一步都需要先对策略 π θ \pi_\theta π θ 做完整的离线策略评估来计算上述损失函数的最小化,但是离线策略评估非常耗时。由于策略目标 π \pi π 并非与 Q 函数相互独立,而是通过 Q 值最大的动作衍生而来,所以可以用使 Q 函数最大值的 μ \mu μ 来近似 π \pi π ,即
π = arg max μ E s ∼ D , a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] \pi=\underset{\mu}{\argmax}E_{s\sim D,a\sim\mu(a\vert s)}[Q(s,a)]
π = μ a r g m a x E s ∼ D , a ∼ μ ( a ∣ s ) [ Q ( s , a ) ]
另外为了防止过拟合,再加上正则项 R ( μ ) R(\mu) R ( μ ) ,综合起来得到完整的迭代方程
L = 1 2 L s t d + α max μ ( E s ∼ D , a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] − E s ∼ D , a ∼ π θ ( a ∣ s ) [ Q ( s , a ) ] ) + R ( μ ) L=\frac{1}{2}L_{std}+\alpha\underset{\mu}{\max}\Big(E_{s\sim D,a\sim\mu(a\vert s)}[Q(s,a)]-E_{s\sim D,a\sim\pi_\theta(a\vert s)}[Q(s,a)]\Big)+R(\mu)
L = 2 1 L s t d + α μ max ( E s ∼ D , a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] − E s ∼ D , a ∼ π θ ( a ∣ s ) [ Q ( s , a ) ] ) + R ( μ )
正则项 R ( μ ) R(\mu) R ( μ ) 是关于动作分布 μ \mu μ 的正则项,不同的 R ( μ ) R(\mu) R ( μ ) 对应着不同的 CQL 变体
C Q L ( H ) CQL(H) C Q L ( H ) :当正则项 R ( μ ) R(\mu) R ( μ ) 取负熵,即 R ( μ ) = − H ( μ ) R(\mu)=-H(\mu) R ( μ ) = − H ( μ )
对于固定的 Q 函数,上述损失函数中的最大化部分可以写作 max μ E a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] − H ( μ ) \underset{\mu}{\max}E_{a\sim\mu(a\vert s)}[Q(s,a)]-H(\mu) μ max E a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] − H ( μ ) ,其中 ∑ a ( μ ( a ∣ s ) = 1 , μ ( a ∣ s ) > 0 \sum_a(\mu(a\vert s)=1,\mu(a\vert s)>0 ∑ a ( μ ( a ∣ s ) = 1 , μ ( a ∣ s ) > 0 。这是个带约束的凸优化问题,通过拉格朗日乘数法可求得解析最优解 μ ⋆ ( a ∣ s ) = 1 Z exp ( Q ( s , a ) ) \mu^\star(a\vert s)=\frac{1}{Z}\exp(Q(s,a)) μ ⋆ ( a ∣ s ) = Z 1 exp ( Q ( s , a ) ) ,其中配分函数 Z = ∑ a exp ( Q ( s , a ) ) Z=\sum_a\exp(Q(s,a)) Z = ∑ a exp ( Q ( s , a ) )
将最优解带入损失函数公式中,可以得到 L = 1 2 L s t d + α E s ∼ D ( log ∑ a exp ( Q ( s , a ) ) − E a ∼ π ( a ∣ s ) [ Q ( s , a ) ] ) + R ( μ ) L=\frac{1}{2}L_{std}+\alpha E_{s\sim D}\Big(\log\sum_a\exp(Q(s,a))-E_{a\sim\pi(a\vert s)}[Q(s,a)]\Big)+R(\mu) L = 2 1 L s t d + α E s ∼ D ( log ∑ a exp ( Q ( s , a ) ) − E a ∼ π ( a ∣ s ) [ Q ( s , a ) ] ) + R ( μ )
C Q L ( ρ ) CQL(\rho) C Q L ( ρ ) :正则项 R ( μ ) = − D K L ( μ ∥ ρ ) R(\mu)=-D_{KL}(\mu\Vert\rho) R ( μ ) = − D K L ( μ ∥ ρ )
损失函数中最大化部分可以写作 max μ E a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] − D K L ( μ ∥ ρ ) \underset{\mu}{\max}E_{a\sim\mu(a\vert s)}[Q(s,a)]-D_{KL}(\mu\Vert\rho) μ max E a ∼ μ ( a ∣ s ) [ Q ( s , a ) ] − D K L ( μ ∥ ρ ) ,其中 ∑ a ( μ ( a ∣ s ) = 1 \sum_a(\mu(a\vert s)=1 ∑ a ( μ ( a ∣ s ) = 1 ,同样通过拉格朗日乘数法求得解析最优解 μ ⋆ ( a ∣ s ) = 1 Z ρ ( a ∣ s ) exp ( Q ( s , a ) ) \mu^\star(a\vert s)=\frac{1}{Z}\rho(a\vert s)\exp(Q(s,a)) μ ⋆ ( a ∣ s ) = Z 1 ρ ( a ∣ s ) exp ( Q ( s , a ) ) ,其中配分函数 Z = ∑ a ρ ( a ∣ s ) exp ( Q ( s , a ) ) Z=\sum_a\rho(a\vert s)\exp(Q(s,a)) Z = ∑ a ρ ( a ∣ s ) exp ( Q ( s , a ) ) ,而最优解 μ ⋆ \mu^\star μ ⋆ 是基于先验 ρ \rho ρ 的 Q 值加权分布
当 ρ = U n i f ( a ) \rho=\mathrm{Unif}(a) ρ = U n i f ( a ) 时,即均匀先验时,带入后损失与 C Q L ( H ) CQL(H) C Q L ( H ) 很相似,仅配分函数的归一化略有不同
当 ρ = π θ k − 1 \rho=\pi_\theta^{k-1} ρ = π θ k − 1 ,即上一轮策略先验。此时最优解 μ ⋆ ( a ∣ s ) = 1 Z π θ k − 1 ( a ∣ s ) exp ( Q ( s , a ) ) \mu^\star(a\vert s)=\frac{1}{Z}\pi^{k-1}_\theta(a\vert s)\exp(Q(s,a)) μ ⋆ ( a ∣ s ) = Z 1 π θ k − 1 ( a ∣ s ) exp ( Q ( s , a ) ) ,带入通用框架之后,最终损失的正则项变为 L = 1 2 L s t d + α E s ∼ D ( log ( E a ∼ π θ k − 1 ( a ∣ s ) exp ( Q ( s , a ) ) ) − E a ∼ π ( a ∣ s ) [ Q ( s , a ) ] ) + R ( μ ) L=\frac{1}{2}L_{std}+\alpha E_{s\sim D}\Big(\log(E_{a\sim\pi^{k-1}_\theta(a\vert s)}\exp(Q(s,a)))-E_{a\sim\pi(a\vert s)}[Q(s,a)]\Big)+R(\mu) L = 2 1 L s t d + α E s ∼ D ( log ( E a ∼ π θ k − 1 ( a ∣ s ) exp ( Q ( s , a ) ) ) − E a ∼ π ( a ∣ s ) [ Q ( s , a ) ] ) + R ( μ )
C Q L ( v a r ) CQL(var) C Q L ( v a r ) :方差正则变体,基于分布鲁棒优化(DRO)的 CQL 变体,核心是惩罚 Q 值在动作上的方差,避免 Q 值对 OOD 动作过度敏感
在离线 RL 中,只能观察到数据集的经验分布 P ^ ( s , a ) \hat{P}(s,a) P ^ ( s , a ) ,但真实环境的动作分布 P ⋆ ( s , a ) P^\star(s,a) P ⋆ ( s , a ) 一定在其邻域。在 DRO 中用 φ-divergence 定义这个邻域,即 P ϵ = { P ∣ D ϕ ( P ∣ P ^ ) ≤ ϵ } \mathcal{P}_\epsilon=\{P\vert D_\phi(P\vert \hat{P})\leq\epsilon\} P ϵ = { P ∣ D ϕ ( P ∣ P ^ ) ≤ ϵ } ,其中 ϵ \epsilon ϵ 为邻域半径, ϕ \phi ϕ 为散度函数, P ϵ \mathcal{P}_\epsilon P ϵ 是所有与经验分布 P ^ \hat{P} P ^ 的散度不超过 ϵ \epsilon ϵ 的真实分布的集合
在 DRO 框架下,鲁棒 Q 值 是最坏情况下的 Q 值期望 Q r ( s ) = max p ∈ P ϵ E a ∼ P ( a ∣ s ) [ Q ( s , a ) ] Q^r(s)=\underset{p\in\mathcal{P}_\epsilon}{\max}E_{a\sim P(a\vert s)}[Q(s,a)] Q r ( s ) = p ∈ P ϵ max E a ∼ P ( a ∣ s ) [ Q ( s , a ) ] ,即 Q 值需要对经验分布邻域内的所有可能真实分布都保守,避免因分布偏移导致高估
C Q L ( v a r ) CQL(var) C Q L ( v a r ) 选择 χ 2 \chi^2 χ 2 散度作为邻域的散度函数,此时鲁棒 Q 值的上界可以展开为 max p ∈ P ϵ E a ∼ P ( a ∣ s ) [ Q ( s , a ) ] ≤ E a ∼ P ^ [ Q ( s , a ) ] + ϵ ⋅ v a r P ^ ( Q ( s , a ) ) \underset{p\in\mathcal{P}\epsilon}{\max}E{a\sim P(a\vert s)}[Q(s,a)]\leq E_{a\sim\hat{P}}[Q(s,a)]+\sqrt{\epsilon\cdot\mathrm{var}_{\hat{P}}(Q(s,a))} p ∈ P ϵ max E a ∼ P ( a ∣ s ) [ Q ( s , a ) ] ≤ E a ∼ P ^ [ Q ( s , a ) ] + ϵ ⋅ v a r P ^ ( Q ( s , a ) ) 。其中 E a ∼ P ^ [ Q ( s , a ) ] E_{a\sim\hat{P}}[Q(s,a)] E a ∼ P ^ [ Q ( s , a ) ] 为经验分布下的 Q 值期望, v a r P ^ ( Q ( s , a ) ) \mathrm{var}_{\hat{P}}(Q(s,a)) v a r P ^ ( Q ( s , a ) ) 为 Q 值在经验分布下的方差
将上述上界带入 CQL 的损失函数中,可以得到 L = 1 2 L s t d + α E s ∼ d π θ ( s ) ( E a ∼ P ^ ( a ∣ s ) [ Q ( s , a ) ] + v a r P ^ ( Q ( s , a ) ) d π θ ( s ) ∣ D ∣ − E a ∼ π θ ( a ∣ s ) [ Q ( s , a ) ] ) L=\frac{1}{2}L_{std}+\alpha E_{s\sim d^{\pi_\theta}(s)}\Big(E_{a\sim\hat{P}(a\vert s)}[Q(s,a)]+\sqrt{\frac{\mathrm{var}_{\hat{P}}(Q(s,a))}{d^{\pi_\theta}(s)\vert D\vert}}-E_{a\sim\pi_\theta(a\vert s)}[Q(s,a)]\Big) L = 2 1 L s t d + α E s ∼ d π θ ( s ) ( E a ∼ P ^ ( a ∣ s ) [ Q ( s , a ) ] + d π θ ( s ) ∣ D ∣ v a r P ^ ( Q ( s , a ) ) − E a ∼ π θ ( a ∣ s ) [ Q ( s , a ) ] ) 。其中 d π θ ( s ) d^{\pi_\theta}(s) d π θ ( s ) 是行为策略的折扣边际状态分布,衡量状态 s s s 在数据集中出现的频率, ∣ D ∣ \vert D\vert ∣ D ∣ 是数据集的大小,数据集越大,方差惩罚越弱,因为经验分布越接近真实分布
总的来说 CQL 的训练流程如下
初始化 Q 网络 Q ω 1 , Q ω 2 Q_{\omega_1},Q_{\omega_2} Q ω 1 , Q ω 2 ,目标 Q 网络 Q ω 1 ′ , Q ω 2 ′ Q_{\omega_1^\prime},Q_{\omega_2^\prime} Q ω 1 ′ , Q ω 2 ′ 和策略 π θ \pi_\theta π θ 、熵正则化系数 β \beta β ,初始化离线数据集 D D D ,初始化熵正则系数目标值 H H H
更新目标网络参数 ω 1 ′ = ω 1 , ω 2 ′ = ω 2 \omega_1^\prime=\omega_1,\omega_2^\prime=\omega_2 ω 1 ′ = ω 1 , ω 2 ′ = ω 2
对于每一轮的每一训练步中
从数据集 D D D 中采样一批数据
计算 Bellman 目标值 y = r + γ min j = 1 , 2 Q ω j ′ ( s , a ) − α log π θ ( a ′ ∣ s ′ ) y=r+\gamma\underset{j=1,2}{\min}Q_{\omega_j^\prime}(s,a)-\alpha\log\pi_\theta(a^\prime\vert s^\prime) y = r + γ j = 1 , 2 min Q ω j ′ ( s , a ) − α log π θ ( a ′ ∣ s ′ )
计算 Q 网络的损失函数 L L L
更新 Q 网络 ω i = ω i − η ω ∇ ω i L \omega_i=\omega_i-\eta_\omega\nabla_{\omega_i}L ω i = ω i − η ω ∇ ω i L
软更新目标 Q 网络 ω i ′ = τ ω i + ( 1 − τ ) ω i ′ \omega_i^\prime=\tau\omega_i+(1-\tau)\omega_i^\prime ω i ′ = τ ω i + ( 1 − τ ) ω i ′
更新策略网络 π ϕ \pi_\phi π ϕ
计算策略损失 L π = E s ∼ D , a ∼ π ϕ ( a ∣ s ) [ β log π ϕ ( a ∣ s ) − Q ω ( s , a ) ] L_\pi=E_{s\sim D,a\sim\pi_\phi(a\vert s)}\Big[\beta\log\pi_\phi(a\vert s)-Q_\omega(s,a)\Big] L π = E s ∼ D , a ∼ π ϕ ( a ∣ s ) [ β log π ϕ ( a ∣ s ) − Q ω ( s , a ) ]
梯度上升更新参数 ϕ = ϕ − η π ∇ ϕ L π \phi=\phi-\eta_\pi\nabla_\phi L_\pi ϕ = ϕ − η π ∇ ϕ L π
更新熵正则系数
计算熵正则系数损失 L β = E s ∼ D , a ∼ π ϕ ( a ∣ s ) [ − β log π ϕ ( a ∣ s ) − β H ] L_\beta=E_{s\sim D,a\sim\pi_\phi(a\vert s)}[-\beta\log\pi_\phi(a\vert s)-\beta H] L β = E s ∼ D , a ∼ π ϕ ( a ∣ s ) [ − β log π ϕ ( a ∣ s ) − β H ]
梯度上升更新参数 β = β − η β ∇ β L β \beta=\beta-\eta_\beta\nabla_\beta L_\beta β = β − η β ∇ β L β
IQL
IQL 是在 2021 年提出的离线强化学习算法,从根源上解决了离线 RL 的核心痛点:分布偏移导致的值函数过估计,全程无需查询数据集外的动作价值,同时保留了多步动态规划的能力,能从静态离线数据中学习到远超行为策略的最优策略
由于一般的 Q-Learning 的代价函数中,目标值中的 max a ′ Q θ ′ ( s ′ , a ′ ) \underset{a^\prime}{\max}Q_{\theta^\prime}(s^\prime,a^\prime) a ′ max Q θ ′ ( s ′ , a ′ ) 需要枚举所有动作取最大值,其中必然包含在数据集中未出现的分布外动作。而在 IQL 算法中,为了完全避免从未见过的样本对 TD 损失函数的影响,所以根据 SARSA 的形式设计了损失函数
L ( θ ) = E ( s , a , r , s ′ , a ′ ) ∼ D [ ( r + γ Q θ ′ ( s ′ , a ′ ) − Q θ ( s , a ) ) 2 ] L(\theta)=E_{(s,a,r,s^\prime,a^\prime)\sim D}\Big[\big(r+\gamma Q_{\theta^\prime}(s^\prime,a^\prime)-Q_\theta(s,a)\big)^2\Big]
L ( θ ) = E ( s , a , r , s ′ , a ′ ) ∼ D [ ( r + γ Q θ ′ ( s ′ , a ′ ) − Q θ ( s , a ) ) 2 ]
假设 D D D 的容量无限,且无采样误差,则最优化参数应该满足
Q θ ⋆ ( s , a ) ≈ r + γ E s ′ ∼ p ( ⋅ ∣ s , a ) E a ′ ∼ π β ( ⋅ ∣ s ) [ Q θ ′ ( s ′ , a ′ ) ] Q_{\theta^\star}(s,a)\approx r+\gamma E_{s^\prime\sim p(\cdot\vert s,a)}E_{a^\prime\sim\pi_\beta(\cdot\vert s)}\Big[Q_{\theta^\prime}(s^\prime,a^\prime)\Big]
Q θ ⋆ ( s , a ) ≈ r + γ E s ′ ∼ p ( ⋅ ∣ s , a ) E a ′ ∼ π β ( ⋅ ∣ s ) [ Q θ ′ ( s ′ , a ′ ) ]
为了估计在支持数据分布动作上的最大 Q 值,在不查询学习到的 Q 函数的情况下通过使用期望回归
L ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( r + γ max a ′ ∈ A , π β ( a ′ ∣ s ′ ) > 0 Q θ ′ ( s ′ , a ′ ) − Q θ ( s , a ) ) 2 ] L(\theta)=E_{(s,a,r,s^\prime)\sim D}\Big[\Big(r+\gamma\underset{a^\prime\in A,\pi_\beta(a^\prime\vert s^\prime)>0}{\max}Q_{\theta^\prime}(s^\prime,a^\prime)-Q_\theta(s,a)\Big)^2\Big]
L ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( r + γ a ′ ∈ A , π β ( a ′ ∣ s ′ ) > 0 max Q θ ′ ( s ′ , a ′ ) − Q θ ( s , a ) ) 2 ]
IQL 的核心创新点就在于用期望分位数回归隐式近似这个 max \max max 操作,无需枚举动作,也无需查询分布外动作。
期望分位数:对于随机变量 X X X 和 τ ∈ ( 0 , 1 ) \tau\in(0,1) τ ∈ ( 0 , 1 ) 的期望分布数 m τ m_\tau m τ ,是以下非对称最小二乘问题的最优解
arg max m τ E x ∼ X [ L 2 τ ( x − m τ ) ] \underset{m_\tau}{\argmax}E_{x\sim X}[L_2^\tau(x-m_\tau)]
m τ a r g m a x E x ∼ X [ L 2 τ ( x − m τ ) ]
其中的 L 2 τ L_2^\tau L 2 τ 非对称损失函数为
L 2 τ ( u ) = { ∣ τ − 1 ∣ u 2 u < 0 ∣ τ ∣ u 2 L_2^\tau(u)=\left\{\begin{aligned}&\vert\tau-1\vert u^2&&u<0\\&\vert\tau\vert u^2\end{aligned}\right.
L 2 τ ( u ) = { ∣ τ − 1 ∣ u 2 ∣ τ ∣ u 2 u < 0
这个非对称损失是 IQL 的核心,不同 τ \tau τ 的取值对应完全不同的优化目标
τ = 0.5 \tau=0.5 τ = 0 . 5 损失等价于标准的 MSE 损失,此时 m τ m_\tau m τ 就是随机变量的均值
τ > 0.5 \tau>0.5 τ > 0 . 5 对正差值赋予更高的权重
τ → 1 \tau\rightarrow1 τ → 1 权重对差值的倾斜达到极值, m τ m_\tau m τ 会无限逼近随机变量 X X X 的上确界
将上述定义扩展到条件分布,即可通过神经网络拟合给定输入下的条件期望分位数,优化目标为
arg max m τ ( x ) E ( x , y ) ∼ D [ L 2 τ ( y − m τ ( x ) ) ] \underset{m_\tau(x)}{\argmax}E_{(x,y)\sim D}\Big[L_2^\tau\big(y-m_\tau(x)\big)\Big]
m τ ( x ) a r g m a x E ( x , y ) ∼ D [ L 2 τ ( y − m τ ( x ) ) ]
该目标通过随机梯度下降优化。根据上述的分析,在 IQL 中将 SARSA 的 MSE 的损失替换为非对称 L2 损失,如下
L ( θ ) = E ( s , a , r , s ′ , a ′ ) ∼ D [ L 2 τ ( r ( s , a ) + γ Q θ ′ ( s ′ , a ′ ) − Q θ ( s , a ) ) ] L(\theta)=E_{(s,a,r,s^\prime,a^\prime)\sim D}\Big[L_2^\tau\big(r(s,a)+\gamma Q_{\theta^\prime}(s^\prime,a^\prime)-Q_\theta(s,a)\big)\Big]
L ( θ ) = E ( s , a , r , s ′ , a ′ ) ∼ D [ L 2 τ ( r ( s , a ) + γ Q θ ′ ( s ′ , a ′ ) − Q θ ( s , a ) ) ]
但是该损失中的随机性不仅来自于 s ′ s^\prime s ′ 下的动作 a ′ a^\prime a ′ ,还来自于环境的随机转移 s ′ ∼ p ( ⋅ ∣ s , a ) s^\prime\sim p(\cdot\vert s,a) s ′ ∼ p ( ⋅ ∣ s , a ) ,大的 TD 目标值,可能不是因为选择了优质的动作 a ′ a^\prime a ′ ,而是环境随机转移到了一个好的状态,这就会导致值函数学习完全偏离目标。所以可以将其拆分为状态值函数 V ψ ( s ) V_\psi(s) V ψ ( s ) 和状态动作值函数 Q θ ( s , a ) Q_\theta(s,a) Q θ ( s , a ) 的学习,以解决这一问题
状态值函数 V 的损失函数 L V ( ψ ) = E ( s , a ) ∼ D [ L 2 τ ( Q θ ′ ( s , a ) − V ψ ( s ) ) ] L_V(\psi)=E_{(s,a)\sim D}[L_2^\tau(Q_{\theta^\prime}(s,a)-V_\psi(s))] L V ( ψ ) = E ( s , a ) ∼ D [ L 2 τ ( Q θ ′ ( s , a ) − V ψ ( s ) ) ]
优化目标: V ψ ( s ) V_\psi(s) V ψ ( s ) 拟合固定状态 s s s 下的 Q θ ′ ( s , a ) Q_{\theta^\prime}(s,a) Q θ ′ ( s , a ) 关于动作 a a a 的分布的 τ \tau τ 阶期望分位数
随机性仅来自于动作 a a a ,与环境动态完全无关,避免环境随机转移的影响
状态动作值函数 Q 的损失函数 L Q ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( r + γ V ψ ( s ′ ) − Q θ ( s , a ) ) 2 ] L_Q(\theta)=E_{(s,a,r,s^\prime)\sim D}[(r+\gamma V_\psi(s^\prime)-Q_\theta(s,a))^2] L Q ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( r + γ V ψ ( s ′ ) − Q θ ( s , a ) ) 2 ]
其中目标值为 r + γ V ψ ( s ′ ) r+\gamma V_\psi(s^\prime) r + γ V ψ ( s ′ )
对环境动态的随机性通过数据集样本取期望平均,进一步避免环境随机转移的影响
之后定义策略的损失函数
L π ( ϕ ) = E ( s , a ) ∼ D [ exp ( β ( Q θ ′ ( s , a ) − V ψ ( s ) ) ) log π ϕ ( a ∣ s ) ] L_\pi(\phi)=E_{(s,a)\sim D}[\exp(\beta(Q_{\theta^\prime}(s,a)-V_\psi(s)))\log\pi_\phi(a\vert s)]
L π ( ϕ ) = E ( s , a ) ∼ D [ exp ( β ( Q θ ′ ( s , a ) − V ψ ( s ) ) ) log π ϕ ( a ∣ s ) ]
其中的 β ∈ [ 0 , ∞ ) \beta\in[0,\infty) β ∈ [ 0 , ∞ ) 是逆温度超参数,用于控制策略的贪心程度。可以得到 IQL 的完整算法流程
初始化 V 网络参数 ψ \psi ψ ,双 Q 网络参数 θ \theta θ ,目标 Q 网络参数 θ ′ \theta^\prime θ ′ ,策略网络 ϕ \phi ϕ
TD 学习循环迭代
计算 V 网络的损失 L V ( ψ ) = E ( s , a ) ∼ D [ L 2 τ ( Q θ ′ ( s , a ) − V ψ ( s ) ) ] L_V(\psi)=E_{(s,a)\sim D}[L_2^\tau(Q_{\theta^\prime}(s,a)-V_\psi(s))] L V ( ψ ) = E ( s , a ) ∼ D [ L 2 τ ( Q θ ′ ( s , a ) − V ψ ( s ) ) ] ,最小化损失更新 V 网络参数 ψ \psi ψ
计算 Q 网络的损失 L Q ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( r + γ V ψ ( s ′ ) − Q θ ( s , a ) ) 2 ] L_Q(\theta)=E_{(s,a,r,s^\prime)\sim D}[(r+\gamma V_\psi(s^\prime)-Q_\theta(s,a))^2] L Q ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( r + γ V ψ ( s ′ ) − Q θ ( s , a ) ) 2 ] ,最小化损失更新 Q 网络参数 θ \theta θ
软更新目标 Q 网络 θ ′ = ( 1 − α ) θ ′ + α θ \theta^\prime=(1-\alpha)\theta^\prime+\alpha\theta θ ′ = ( 1 − α ) θ ′ + α θ
策略提取循环迭代
计算策略网络的损失 L π ( ϕ ) = E ( s , a ) ∼ D [ exp ( β ( Q θ ′ ( s , a ) − V ψ ( s ) ) ) log π ϕ ( a ∣ s ) ] L_\pi(\phi)=E_{(s,a)\sim D}[\exp(\beta(Q_{\theta^\prime}(s,a)-V_\psi(s)))\log\pi_\phi(a\vert s)] L π ( ϕ ) = E ( s , a ) ∼ D [ exp ( β ( Q θ ′ ( s , a ) − V ψ ( s ) ) ) log π ϕ ( a ∣ s ) ] ,最小化损失更新策略网络参数 ϕ \phi ϕ
TD3+BC
原始 TD3 的策略更新基于确定性策略梯度,仅最大化 Q 值,即
π = arg max π E ( s , a ) ∼ D [ Q ( s , π ( s ) ) ] \pi=\underset{\pi}{\argmax}E_{(s,a)\sim D}\Big[Q(s,\pi(s))\Big]
π = π a r g m a x E ( s , a ) ∼ D [ Q ( s , π ( s ) ) ]
在 TD3+BC 中新增了 MSE 形式的 BC 正则项,让策略输出贴近数据集内的真实动作,将目标函数更新为
π = arg max π E ( s , a ) ∼ D [ λ Q ( s , π ( s ) ) − ( π ( s ) − a ) 2 ] \pi=\underset{\pi}{\argmax}E_{(s,a)\sim D}\Big[\lambda Q(s,\pi(s))-(\pi(s)-a)^2\Big]
π = π a r g m a x E ( s , a ) ∼ D [ λ Q ( s , π ( s ) ) − ( π ( s ) − a ) 2 ]
其中 λ \lambda λ 为权重超参数,平衡 RL 的价值最大化与 BC 的行为约束,从根源上避免策略输出 OOD 动作。之后对数据集内每个状态特征做标准化处理
s i = s i − μ i σ i + ϵ s_i=\frac{s_i-\mu_i}{\sigma_i+\epsilon}
s i = σ i + ϵ s i − μ i
其中 ϵ \epsilon ϵ 是为防止除零的常数。标准化大幅提高了训练稳定性,且离线场景下的数据集固定,可以提前完成归一化。
另外权重超参数 λ \lambda λ 无法适配不同任务的奖励或值函数的尺度差异,所以论文设计了自适应缩放方案
λ = α E ( s , a ) ∣ Q ( s , a ) ∣ \lambda=\frac{\alpha}{E_{(s,a)}\vert Q(s,a)\vert}
λ = E ( s , a ) ∣ Q ( s , a ) ∣ α
其中的 α \alpha α 为是需要调整的超参数,自动平衡了不同任务下 RL 项与 BC 项的权重。