TRPO、PPO是强化学习里比较重要的2种RL算法,由OpenAI于2015年发表,后来DeepMind于2017年基于TRPO发表了一篇DPPO(Distributed PPO),没过多久,OpenAI发表了PPO算法。
TRPO是PPO的前身,因此学习TRPO是必须的。
论文地址,点这里
其中一篇比较重要的Reference:Approximately optimal approximate reinforcement learning
论文参考:
《强化学习进阶 第七讲 TRPO》
《个人认为写得最好的TRPO讲解》
《TRPO和PPO(上)》
《深度强化学习之PG系算法笔记(二)TRPO算法》
《TRPO论文推导》
《深度强化学习之TRPO》
《深度强化学习–TRPO与PPO实现》
实战参考:莫凡python教学
TRPO:Trust Region Policy Optimization,即信任区域策略优化,我刚开始看到这个算法的时候,第一个疑问就是这个信任区域
指的是什么?
TRPO论文的意义在于其背后的理论,对于实践而言更推荐PPO而非TRPO,所以TRPO要着重理解其背后的思想。
TRPO最难得部分在于其优化部分,再加上篇幅原因,我将其放在了另一篇里,文章地址在本篇论文解读的末端部分。
TRPO其实是为了解决策略梯度算法中学习率大小的问题,学习率的大小在PG定理中起着非常重要的作用。
TRPO有2种变体:
这篇论文中开始将RL的目标——期望累计奖励,用符号 η ( π ) \eta(\pi) η(π)表示: η ( π ) = E s 0 , a 0 , ⋯ ∼ π [ ∑ t = 0 ∞ γ t r ( s t ) ] \eta(\pi)=\mathbb{E}_{s_0,a_0,\cdots\sim\pi}[\sum^\infty_{t=0}\gamma^tr(s_t)] η(π)=Es0,a0,⋯∼π[t=0∑∞γtr(st)]我们通常用值函数来表示目标: Q π ( s t , a t ) = E s t + 1 , a t + 1 , ⋯ [ ∑ l = 0 ∞ γ l r ( s t + l ) ] V π ( s t ) = E a t , s t + 1 , ⋯ [ ∑ l = 0 ∞ γ l r ( s t + l ) ] Q^\pi(s_t,a_t)=\mathbb{E}_{s_{t+1},a_{t+1},\cdots}[\sum^\infty_{l=0}\gamma^lr(s_{t+l})]\\ V^\pi(s_t)=\mathbb{E}_{a_t,s_{t+1},\cdots}[\sum^\infty_{l=0}\gamma^lr(s_{t+l})] Qπ(st,at)=Est+1,at+1,⋯[l=0∑∞γlr(st+l)]Vπ(st)=Eat,st+1,⋯[l=0∑∞γlr(st+l)]TRPO算法的核心就是去考虑如何学习一个策略从而让性能度量 J J J单调不减。那么一个很直观的思想就是将新策略的性能度量 J ( π ~ ) J(\tilde{\pi}) J(π~)拆成前一个时间步旧的性能度量 J ( θ ) J(\theta) J(θ)加上某个东西 G G G。即 J ( π ~ ) = J ( π ) + G J(\tilde{\pi})=J(\pi)+G J(π~)=J(π)+G。那么如果每次更新都能保证 G G G非负,就能保证策略的单调性。那么其实这个等式是存在的: η ( π ~ ) = η ( π ) + E s 0 , a 0 , ⋯ ∼ π ~ [ ∑ t = 0 ∞ γ t A π ( s t , a t ) ] (1) \eta(\tilde{\pi})=\eta(\pi)+\mathbb{E}_{s_0,a_0,\cdots\sim\tilde{\pi}}[\sum^\infty_{t=0}\gamma^tA^\pi(s_t,a_t)]\tag{1} η(π~)=η(π)+Es0,a0,⋯∼π~[t=0∑∞γtAπ(st,at)](1)Note:
2个特性
,根据《Sutton强化学习》有 Q π ( s t , π ( a t ∣ s t ) ) = V π ( s t ) Q^\pi(s_t,\pi(a_t|s_t))=V^\pi(s_t) Qπ(st,π(at∣st))=Vπ(st),故有 E s t , a t ∼ π [ γ t A π ( s t , a t ) ] = 0 E s 0 , a 0 , ⋯ ∼ π [ ∑ t = 0 ∞ γ t A π ( s t , a t ) ] = 0 \mathbb{E}_{s_t,a_t\sim\pi}[\gamma^tA^\pi(s_t,a_t)]=0\\\mathbb{E}_{s_0,a_0,\cdots\sim\pi}[\sum^\infty_{t=0}\gamma^tA^\pi(s_t,a_t)]=0 Est,at∼π[γtAπ(st,at)]=0Es0,a0,⋯∼π[t=0∑∞γtAπ(st,at)]=0将新旧策略回报差利用“多变量展开”:
E s 0 , a 0 , ⋯ ∼ π ~ [ ∑ t = 0 ∞ γ t A π ( s t , a t ) ] = ∑ s ∑ t = 0 ∞ γ t P ( s t = s ∣ π ~ ) ∑ a π ~ ( a ∣ s t ) A π ( s t , a ) \mathbb{E}_{s_0,a_0,\cdots\sim\tilde{\pi}}[\sum^\infty_{t=0}\gamma^tA^\pi(s_t,a_t)]=\sum_s\sum^\infty_{t=0}\gamma^tP(s_t=s|\tilde{\pi})\sum_a\tilde{\pi}(a|s_t)A^\pi(s_t,a) Es0,a0,⋯∼π~[t=0∑∞γtAπ(st,at)]=s∑t=0∑∞γtP(st=s∣π~)a∑π~(a∣st)Aπ(st,a)定义 ρ π ( s ) = P ( s 0 = s ) + γ P ( s 1 = s ) + γ 2 P ( s 2 = s ) + ⋯ \rho_\pi(s)=P(s_0=s)+\gamma P(s_1=s)+\gamma^2P(s_2=s)+\cdots ρπ(s)=P(s0=s)+γP(s1=s)+γ2P(s2=s)+⋯,则新旧策略回报差= ∑ s ρ π ~ ( s ) ∑ a π ~ ( a ∣ s ) A π ( s , a ) (2) \sum_s\rho_{\tilde{\pi}}(s)\sum_a\tilde{\pi}(a|s)A^\pi(s,a)\tag{2} s∑ρπ~(s)a∑π~(a∣s)Aπ(s,a)(2)Note:
第一处近似
作者指出,式(2)中带有的 ρ π ~ \rho_{\tilde{\pi}} ρπ~或造成整个式子难以直接优化,个人认为是我们在写代码的时候,更容易去实现旧策略 ρ π \rho_\pi ρπ( π \pi π为当前策略,下个step就要更新)而不是新策略 ρ π ~ \rho_{\tilde{\pi}} ρπ~,所以要做这个近似。并且用一个新的符号 L π ( π ~ ) L_\pi(\tilde{\pi}) Lπ(π~)来表示相对旧策略的新策略产生的回报。因此式(2)更新为:
L π ( π ~ ) = η ( π ) + ∑ s ρ π ( s ) ∑ a π ~ ( a ∣ s ) A π ( s , a ) (3) L_\pi(\tilde{\pi})=\eta(\pi)+\sum_s\rho_\pi(s)\sum_a\tilde{\pi}(a|s)A^\pi(s,a)\tag{3} Lπ(π~)=η(π)+s∑ρπ(s)a∑π~(a∣s)Aπ(s,a)(3)接下来作者参考Kakade在2002年发表的一篇论文,给出了以下结论:当策略网络 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s)可微的时候,将 L π θ 0 ( π θ ) L_{\pi_{\theta_0}}(\pi_\theta) Lπθ0(πθ)和 η ( π θ ) \eta(\pi_\theta) η(πθ)看成关于变量 π θ \pi_\theta πθ的函数,那么对于 ∀ θ 0 \forall \theta_0 ∀θ0有
L π θ 0 ( π θ 0 ) = η ( π θ 0 ) , ∇ θ L π θ 0 ( π θ ) ∣ θ = θ 0 = ∇ θ η ( π θ ) ∣ θ = θ 0 (4) L_{\pi_{\theta_0}}(\pi_{\theta_0})=\eta(\pi_{\theta_0}),\\ \nabla_\theta L_{\pi_{\theta_0}}(\pi_\theta)|_{\theta=\theta_0}=\nabla_\theta\eta(\pi_\theta)|_{\theta=\theta_0}\tag{4} Lπθ0(πθ0)=η(πθ0),∇θLπθ0(πθ)∣θ=θ0=∇θη(πθ)∣θ=θ0(4)用图可以表示成:Note:
定义 π ′ = arg max π L π o l d ( π ) \pi'=\argmax_\pi L_{\pi_{old}}(\pi) π′=πargmaxLπold(π),则新策略 π n e w \pi_{new} πnew表示成当前策略和贪婪策略的混合: π n e w ( a ∣ s ) = ( 1 − α ) π o l d ( a ∣ s ) + α π ′ ( a ∣ s ) (5) \pi_{new}(a|s)=(1-\alpha)\pi_{old}(a|s)+\alpha\pi'(a|s)\tag{5} πnew(a∣s)=(1−α)πold(a∣s)+απ′(a∣s)(5),接下来Kakada就导出了一个不等式:
η ( π n e w ) ≥ L π o l d ( π n e w ) − 2 ϵ γ ( 1 − γ ) 2 α 2 ϵ = max s ∣ E a ∼ π ′ [ A π ( s , a ) ] ∣ (6) \eta(\pi_{new})\ge L_{\pi_{old}}(\pi_{new})-\frac{2\epsilon\gamma}{(1-\gamma)^2}\alpha^2\\ \epsilon=\max_s|\mathbb{E}_{a\sim\pi'}[A^\pi(s,a)]|\tag{6} η(πnew)≥Lπold(πnew)−(1−γ)22ϵγα2ϵ=smax∣Ea∼π′[Aπ(s,a)]∣(6)Note:
式(6)提供了策略单调不减的框架,但是其不适用于普遍的策略,因此这一节的目的就是创造式(6)的普适性。
改变 α \alpha α
定义 D T V ( p ∣ ∣ q ) = 1 2 ∑ i ∣ p i − q i ∣ D_{TV}(p||q)=\frac{1}{2}\sum_i|p_i-q_i| DTV(p∣∣q)=21∑i∣pi−qi∣,则 α = D T V m a x ( π , π ~ ) = max s D T V ( π ( ⋅ ∣ s ) , π ~ ( ⋅ ∣ s ) ) (7) \alpha=D_{TV}^{max}(\pi,\tilde{\pi})=\max_sD_{TV}(\pi(\cdot|s),\tilde{\pi}(\cdot|s))\tag{7} α=DTVmax(π,π~)=smaxDTV(π(⋅∣s),π~(⋅∣s))(7)
改变 ϵ \epsilon ϵ
ϵ = max s , a ∣ A π ( s , a ) ∣ \epsilon=\max_{s,a}|A^\pi(s,a)| ϵ=s,amax∣Aπ(s,a)∣
接下来给出定理1:
Theorem 1.
令 α = D T V m a x ( π o l d ∣ ∣ π n e w ) , ϵ = max s , a ∣ A π ( s , a ) ∣ \alpha=D_{TV}^{max}(\pi_{old}||\pi_{new}),\epsilon=\max_{s,a}|A^\pi(s,a)| α=DTVmax(πold∣∣πnew),ϵ=maxs,a∣Aπ(s,a)∣,则:
η ( π n e w ) ≥ L π o l d ( π n e w ) − 4 ϵ γ ( 1 − γ ) 2 α 2 (8) \eta(\pi_{new})\ge L_{\pi_{old}}(\pi_{new})-\frac{4\epsilon\gamma}{(1-\gamma)^2}\alpha^2\tag{8} η(πnew)≥Lπold(πnew)−(1−γ)24ϵγα2(8)Note:
进一步地,因为 D T V ( p ∣ ∣ q ) 2 ≤ D K L ( p ∣ ∣ q ) D_{TV}(p||q)^2\leq D_{KL}(p||q) DTV(p∣∣q)2≤DKL(p∣∣q),并定义 D K L m a x ( π , π ~ ) = max s D K L ( π ( ⋅ ∣ s ) , π ~ ( ⋅ ∣ s ) ) D_{KL}^{max}(\pi,\tilde{\pi})=\max_sD_{KL}(\pi(\cdot|s),\tilde{\pi}(\cdot|s)) DKLmax(π,π~)=maxsDKL(π(⋅∣s),π~(⋅∣s)),那么式(8)可改为 η ( π ~ ) ≥ L π ( π ~ ) − C D K L m a x ( π , π ~ ) C = 4 ϵ γ ( 1 − γ ) 2 (9) \eta(\tilde{\pi})\ge L_\pi(\tilde{\pi})-CD^{max}_{KL}(\pi,\tilde{\pi})\\C=\frac{4\epsilon\gamma}{(1-\gamma)^2}\tag{9} η(π~)≥Lπ(π~)−CDKLmax(π,π~)C=(1−γ)24ϵγ(9)
接下来就是全文最重要的部分了,作者给出了如何使得策略得到单调提升,即 η ( π 0 ) ≤ η ( π 1 ) ≤ η ( π 2 ) ≤ ⋯ \eta(\pi_0)\leq\eta(\pi_1)\leq\eta(\pi_2)\leq\cdots η(π0)≤η(π1)≤η(π2)≤⋯。证明如下:
Note:
理论层面
的,距离实践还需要接下来的一些处理。这一节的主要目的就是将上述Theorem 1通过一些手段转变为实用的算法。
首先第一步就是将策略参数化,常见的就是用神经网络 θ \theta θ来表示 π θ ( a t ∣ s t ) \pi_\theta(a_t|s_t) πθ(at∣st)。
于是我们的核心优化公式就变成了:
m a x i m i z e θ [ L θ o l d ( θ ) − C D K L m a x ( θ o l d , θ ) ] \mathop{maximize}\limits_{\theta}[L_{\theta_{old}}(\theta)-CD^{max}_{KL}(\theta_{old},\theta)] θmaximize[Lθold(θ)−CDKLmax(θold,θ)]Note:
第二步就是将最大 K L KL KL散度这个奖惩项拉到约束里去。之所以要这么做,是因为惩罚系数 C = 4 ϵ γ ( 1 − γ ) 2 C=\frac{4\epsilon\gamma}{(1-\gamma)^2} C=(1−γ)24ϵγ值太大了(通常 γ = 0.95 ∼ 0.995 \gamma=0.95\sim0.995 γ=0.95∼0.995之间),从而在优化过程中会加大对 K L KL KL散度的偏倚,又因为优化是求最大值,因此奖惩项会变得很小很小,根据 K L KL KL散度的特点,策略的更新步伐就会很小,训练速度很缓慢,因此显然将最大KL散度当成奖惩项不是很合适,那么自然地做法就是将其转变为约束
。
具体做法:
m a x i m i z e θ L θ o l d ( θ ) s . t . D K L m a x ( θ o l d , θ ) ≤ δ (11) \mathop{maximize}\limits_\theta L_{\theta_{old}}(\theta)\\ s.t.\,D^{max}_{KL}(\theta_{old},\theta)\leq\delta\tag{11} θmaximizeLθold(θ)s.t.DKLmax(θold,θ)≤δ(11)Note:
式(11)的约束就是策略参数的置信区域,也就是TRPO名称的由来,它约束了参数 θ \theta θ的值不会更新幅度太大,从而造成策略提升失效的现象,也就是说在 δ \delta δ约束范围之内,可以放心的去按照目标函数去优化参数 θ \theta θ。对于每一个step,都会在安全的区域内进行更新,可以用下图直观的表示Algorithm 1每一步的策略更新:
最大 K L KL KL散度转为约束之后,取消了奖惩系数,就不存在更新步伐过小的现象了。
第二处近似
第三步就是用平均 K L KL KL散度代替最大 K L KL KL散度。之所以这么做,是因为最大 K L KL KL散度需要遍历每一个状态 s s s,从而在实际中变得计算量过大。平均 K L KL KL散度通过期望的形式可以用批量样本的方式去近似,类似于TD算法之于贝尔曼等式的关系。定义: D ˉ K L ρ ( θ 1 , θ 2 ) = E s ∼ ρ [ D K L ( π θ 1 ( ⋅ ∣ s ) ∣ ∣ π θ 2 ( ⋅ ∣ s ) ) ] \bar{D}^\rho_{KL}(\theta_1,\theta_2)=\mathbb{E}_{s\sim\rho}[D_{KL}(\pi_{\theta_1}(\cdot|s)||\pi_{\theta_2}(\cdot|s))] DˉKLρ(θ1,θ2)=Es∼ρ[DKL(πθ1(⋅∣s)∣∣πθ2(⋅∣s))],那么我们的优化目标进一步改为: m a x i m i z e θ L θ o l d ( θ ) s . t . D ˉ K L ρ θ o l d ( θ o l d , θ ) ≤ δ (12) \mathop{maximize}\limits_\theta L_{\theta_{old}}(\theta)\\ s.t.\,\bar{D}_{KL}^{\rho_{\theta_{old}}}(\theta_{old},\theta)\leq\delta\tag{12} θmaximizeLθold(θ)s.t.DˉKLρθold(θold,θ)≤δ(12)
这一节主要是将上一节推演的目标和约束进行近似处理,从而产生最终用于实践的算法。
第三处近似
我们将式(12)进行展开,故式(12)的优化等效于:
m a x i m i z e θ ∑ s ρ θ o l d ( s ) ∑ a π θ ( a ∣ s ) A θ o l d ( s , a ) s . t . D ˉ K L ρ θ o l d ( θ o l d , θ ) ≤ δ (13) \mathop{maximize}\limits_\theta\sum_s\rho_{\theta_{old}}(s)\sum_a\pi_\theta(a|s)A_{\theta_{old}}(s,a)\\ s.t.\,\bar{D}_{KL}^{\rho_{\theta_{old}}}(\theta_{old},\theta)\leq\delta\tag{13} θmaximizes∑ρθold(s)a∑πθ(a∣s)Aθold(s,a)s.t.DˉKLρθold(θold,θ)≤δ(13)第三处近似包括了3个小近似点:
常数
,故在优化过程中会消失,因此我们可以直接用 Q θ o l d ( s , a ) Q_{\theta_{old}}(s,a) Qθold(s,a)来取代 A θ o l d ( s , a ) A_{\theta_{old}}(s,a) Aθold(s,a)。重要性采样技术
,因为无法从策略 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s)中进行采样,毕竟 π θ \pi_\theta πθ是个未来的分布,是未知的,但可以进行计算、求梯度。因此需要一个容易采样的分布 q q q,给出式子: ∑ a π θ ( a ∣ s n ) A θ o l d ( s n , a ) = E a ∼ q [ π θ ( a ∣ s n ) q ( a ∣ s n ) A θ o l d ( s n , a ) ] \sum_a\pi_\theta(a|s_n)A_{\theta_{old}}(s_n,a)=\mathbb{E}_{a\sim q}[\frac{\pi_\theta(a|s_n)}{q(a|s_n)}A_{\theta_{old}}(s_n,a)] a∑πθ(a∣sn)Aθold(sn,a)=Ea∼q[q(a∣sn)πθ(a∣sn)Aθold(sn,a)]通过优化这个式子去更新参数 θ \theta θ。结合上述3个实践处理点以及3处近似(第三处近似包括3个小近似),我们可以得到最终用于实践的优化目标:
m a x i m i z e θ E s ∼ ρ θ o l d , a ∼ q [ π θ ( a ∣ s ) q ( a ∣ s ) Q θ o l d ( s , a ) ] s . t . E s ∼ ρ θ o l d [ D K L ( π θ o l d ( ⋅ ∣ s ) ∣ ∣ π θ ( ⋅ ∣ s ) ) ] ≤ δ (14) \mathop{maximize}\limits_\theta\mathbb{E}_{s\sim\rho_{\theta_{old}},a\sim q}[\frac{\pi_\theta(a|s)}{q(a|s)}Q_{\theta_{old}}(s,a)]\\ s.t.\,\mathbb{E}_{s\sim\rho_{\theta_{old}}}[D_{KL}(\pi_{\theta_{old}}(\cdot|s)||\pi_\theta(\cdot|s))]\leq\delta\tag{14} θmaximizeEs∼ρθold,a∼q[q(a∣s)πθ(a∣s)Qθold(s,a)]s.t.Es∼ρθold[DKL(πθold(⋅∣s)∣∣πθ(⋅∣s))]≤δ(14)Note:
接下来作者将介绍2种采样方式——Single Path和Vine。
Single-Path就像我们普通算法产生样本一样: s 0 ∼ ρ 0 , q ( a ∣ s ) = π θ o l d ( a ∣ s ) s_0\sim\rho_0,\\q(a|s)=\pi_{\theta_{old}}(a|s) s0∼ρ0,q(a∣s)=πθold(a∣s)从而产生一条条轨迹:
s 0 , a 0 , s 1 , a 1 , ⋯ s T − 1 , a T − 1 , s T s 0 , a 0 , s 1 , a 1 , ⋯ s T − 1 , a T − 1 , s T ⋯ s 0 , a 0 , s 1 , a 1 , ⋯ s T − 1 , a T − 1 , s T s_0,a_0,s_1,a_1,\cdots s_{T-1},a_{T-1},s_T\\ s_0,a_0,s_1,a_1,\cdots s_{T-1},a_{T-1},s_T\\ \cdots\\ s_0,a_0,s_1,a_1,\cdots s_{T-1},a_{T-1},s_T s0,a0,s1,a1,⋯sT−1,aT−1,sTs0,a0,s1,a1,⋯sT−1,aT−1,sT⋯s0,a0,s1,a1,⋯sT−1,aT−1,sT
Note:
方差较大
。这个方法就和Vine的中文名——藤蔓一样,会产生很多分支。
具体来说:
①初始状态 s 0 ∼ ρ 0 s_0\sim\rho_0 s0∼ρ0,然后会产生很多条轨迹。
②在这么多轨迹上选取 N N N个状态 s 0 , s 1 , s 2 , ⋯ , s N s_0,s_1,s_2,\cdots,s_N s0,s1,s2,⋯,sN。
③然后对每个状态取 K K K个动作,即 K K K条roll-out
,因此Vine应该算Roll-out算法,是一种只估计每一个当前状态的值函数的在仿真轨迹上学习的方法。如下图所示:
在实践中, a n , k ∼ q ( ⋅ ∣ s n ) = π θ i ( ⋅ ∣ s n ) a_{n,k}\sim q(\cdot|s_n)=\pi_{\theta_i}(\cdot|s_n) an,k∼q(⋅∣sn)=πθi(⋅∣sn)适用于连续动作空间环境; q ( ⋅ ∣ s n ) = u n i f o r m q(\cdot|s_n)=uniform q(⋅∣sn)=uniform策略适用于离散动作空间环境。
Note:
④对于较小的动作空间环境 A = { a 1 , a 2 , ⋯ , a K } \mathcal{A}=\{a_1,a_2,\cdots,a_K\} A={a1,a2,⋯,aK}, L θ o l d L_{\theta_{old}} Lθold在单个 s n s_n sn上的回报为: L n ( θ ) = ∑ k = 1 K π θ ( a k ∣ s n ) Q ( s n , a k ) (15) L_n(\theta)=\sum^K_{k=1}\pi_\theta(a_k|s_n)Q(s_n,a_k)\tag{15} Ln(θ)=k=1∑Kπθ(ak∣sn)Q(sn,ak)(15)然后在 s n ∼ ρ s_n\sim\rho sn∼ρ采样取平均,就可以得到 L θ o l d L_{\theta_{old}} Lθold。
⑤对于较大的动作空间环境, L θ o l d L_{\theta_{old}} Lθold在单个 s n s_n sn上的回报为: L n ( θ ) = ∑ k = 1 K π θ ( a n , k ∣ s n ) π θ o l d ( a n , k ∣ s n ) Q ( s n , a n , k ) ∑ k = 1 K π θ ( a n , k ∣ s n ) π θ o l d ( a n , k ∣ s n ) (16) L_n(\theta)=\frac{\sum^K_{k=1}\frac{\pi_\theta(a_{n,k}|s_n)}{\pi_{\theta_{old}}(a_{n,k}|s_n)}Q(s_n,a_{n,k})}{\sum^K_{k=1}\frac{\pi_\theta(a_{n,k}|s_n)}{\pi_{\theta_{old}}(a_{n,k}|s_n)}}\tag{16} Ln(θ)=∑k=1Kπθold(an,k∣sn)πθ(an,k∣sn)∑k=1Kπθold(an,k∣sn)πθ(an,k∣sn)Q(sn,an,k)(16)Note:
IS技术
,个人认为是大动作空间环境 ∣ A ∣ > K |\mathcal{A}|> K ∣A∣>K,当我们需要选 K K K个动作的时候,需要有一个分布来进行采样,而 π θ \pi_\theta πθ带有参数,是未知的,无法进行动作采样。归一化处理
,因为 K < ∣ A ∣ K<|\mathcal{A}| K<∣A∣,所以想要化成期望的话必须是的概率之和为1.综上所述:
仿真
,在仿真中选择一些状态。这一节主要是讲如何去优化经过采样之后式(14)。
先来总结一下算法流程:
共轭梯度法(CG)是最速下降法(可以看成是学习率不固定的梯度下降法)的改进。理论上共轭梯度法产生的参数更新方向应该是使得式(14)最大化的合适方向 ϕ \phi ϕ,但由于约束的存在,使得这个理论方向会做出更改,因此接下去会使用线性搜索,尝试 ϕ 、 1 2 ϕ 、 1 4 ϕ 、 1 8 ϕ ⋯ \phi、\frac{1}{2}\phi、\frac{1}{4}\phi、\frac{1}{8}\phi\cdots ϕ、21ϕ、41ϕ、81ϕ⋯,知道目标得到了提升。
具体的优化流程如下:
Note:
由于篇幅原因,上述只是简单的描述了下大致优化过程,关于TRPO的具体优化部分,可以参考我的另一篇强化学习算法TRPO之共轭梯度优化。
略
略
略
策略单调不减
的算法,每一个step得更新都可以保证回报单调不减。不等式
(6)中的 α 、 ϵ \alpha、\epsilon α、ϵ进行改变,从而证明出适用于普遍策略的式(8)。从理论算法到实践
算法经历了3步:参数化、奖惩项转约束项、最大 K L KL KL散度替换成平均 K L KL KL散度。共轭梯度
进行优化更新参数 θ \theta θ,也是本文最难理解的地方。