基于离线策略的强化学习(PPO)

离线策略强化学习

对于基于策略的强化学习,通过建立带 θ \theta θ的策略模型,通过策略梯度进行优化,梯度如下 ∇ θ U = E τ − p θ ( τ ) [ ∇ θ l o g P θ ( τ ) R ( τ ) ] \nabla_\theta U=E_{\tau -p_\theta(\tau)}[\nabla_\theta log P_\theta(\tau)R(\tau)] θU=Eτpθ(τ)[θlogPθ(τ)R(τ)]
该方法是在线策略(on-policy),即学习更新的策略和与环境交互采样的策略是同一个,这带来一个问题,当进行策略参数 θ \theta θ更新后,原来旧 θ \theta θ的策略采样的数据就无法在用了,需要用新的策略采样才能进行梯度计算。这样样本利用率低,训练时间长。
因此需要将目标策略和采样策略进行分离,利用重要性采样进行梯度计算。

重要性采样

假设 f ( x ) f(x) f(x)服从 p ( x ) p(x) p(x)分布,求x的期望 E ( x ) = ∫ p ( x ) x d x E(x)=\int p(x)xdx E(x)=p(x)xdx
我们想用采样的方式进行计算,但是服从 p ( x ) p(x) p(x)分布的样本不好得到,相反,服从 q ( x ) q(x) q(x)分布的样本好得到。因此我们想用 q ( x ) q(x) q(x)分布的样本来代替 p ( x ) p(x) p(x)分布的样本,显然这是有误差的,因此需要对期望进行修正。
基于离线策略的强化学习(PPO)_第1张图片
其中 p ( x ) q ( x ) {p(x) \over q(x)} q(x)p(x)称为重要因子,相当于把 q ( x ) q(x) q(x)分布的样本当场是真实 p ( x ) p(x) p(x)分布的样本来计算时,需要乘上这个重要因子修正,保证这么做是可以的。
存在的问题
要求这两个分布要比较接近,差别不能太大。意味着目标学习策略的参数 θ \theta θ和采样策略的参数 θ ′ \theta ^{\prime} θ要比较接近。

离线策略梯度

设学习目标的策略为 π θ π_\theta πθ,采样策略为 π θ ′ π_{\theta^{\prime}} πθ
∇ θ U = E τ − p θ ( τ ) [ ∇ θ l o g P θ ( τ ) R ( τ ) ] \nabla_\theta U=E_{\tau -p_\theta(\tau)}[\nabla_\theta log P_\theta(\tau)R(\tau)] θU=Eτpθ(τ)[θlogPθ(τ)R(τ)]
就变成了
∇ θ U = E τ − p θ ′ ( τ ) [ P θ ( τ ) P θ ′ ( τ ) ∇ θ l o g P θ ( τ ) R ( τ ) ] \nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(\tau)\over P_{\theta^\prime}(\tau)} \nabla_\theta log P_\theta(\tau)R(\tau)] θU=Eτpθ(τ)[Pθ(τ)Pθ(τ)θlogPθ(τ)R(τ)]
R ( τ ) R(\tau) R(τ)用优势函数表示 A θ ( s t , a t ) A_\theta(s_t,a_t) Aθ(st,at),该优势函数其实是采样策略 π ′ π^{\prime} π与环境采样得到的,因此实际为 A θ ′ ( s t , a t ) A_{\theta^{\prime}}(s_t,a_t) Aθ(st,at), P θ ( τ ) P_\theta(\tau) Pθ(τ)用之前得到的状态-动作对表示, P θ ( s t , a t ) P_\theta(s_t,a_t) Pθ(st,at)

∇ θ U = E τ − p θ ′ ( τ ) [ P θ ( s t , a t ) P θ ′ ( s t , a t ) ∇ θ l o g P θ ( s t , a t ) A θ ′ ( s t , a t ) ] \nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(s_t,a_t)\over P_{\theta^\prime}(s_t,a_t)} \nabla_\theta log P_\theta(s_t,a_t)A_{\theta^{\prime}}(s_t,a_t)] θU=Eτpθ(τ)[Pθ(st,at)Pθ(st,at)θlogPθ(st,at)Aθ(st,at)]
P θ ( s t , a t ) = P θ ( a t ∣ s t ) P θ ( s t ) P_\theta(s_t,a_t) =P_\theta(a_t|s_t)P_\theta(s_t) Pθ(st,at)=Pθ(atst)Pθ(st)
上式就变成
∇ θ U = E τ − p θ ′ ( τ ) [ P θ ( a t ∣ s t ) P θ ( s t ) P θ ′ ( a t ∣ s t ) P θ ′ ( s t ) ∇ θ l o g P θ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] \nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(a_t|s_t)P_\theta(s_t)\over P_{\theta^\prime}(a_t|s_t)P_{\theta^\prime}(s_t)} \nabla_\theta log P_\theta(a_t|s_t)A_{\theta^{\prime}}(s_t,a_t)] θU=Eτpθ(τ)[Pθ(atst)Pθ(st)Pθ(atst)Pθ(st)θlogPθ(atst)Aθ(st,at)]
由于要求,两个的分布差距不能太大,为了计算方便, P θ ( s t ) P θ ′ ( s t ) {P_\theta(s_t) \over P_{\theta^\prime}(s_t) } Pθ(st)Pθ(st)可以看出是1。
∇ θ U = E τ − p θ ′ ( τ ) [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) ∇ θ l o g P θ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] \nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(a_t|s_t)\over P_{\theta^\prime}(a_t|s_t)} \nabla_\theta log P_\theta(a_t|s_t)A_{\theta^{\prime}}(s_t,a_t)] θU=Eτpθ(τ)[Pθ(atst)Pθ(atst)θlogPθ(atst)Aθ(st,at)]
根据 ∇ θ Z = Z ∇ θ l o g Z \nabla_\theta Z=Z\nabla_\theta logZ θZ=ZθlogZ
可得 ∇ θ U = E τ − p θ ′ ( τ ) [ 1 P θ ′ ( a t ∣ s t ) ∇ θ P θ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] \nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{1\over P_{\theta^\prime}(a_t|s_t)} \nabla_\theta P_\theta(a_t|s_t)A_{\theta^{\prime}}(s_t,a_t)] θU=Eτpθ(τ)[Pθ(atst)1θPθ(atst)Aθ(st,at)]
则逆推可以得到该梯度的目标函数
U θ = E τ − p θ ′ ( τ ) [ P θ ( a t ∣ s t ) P θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] U_\theta=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(a_t|s_t)\over P_{\theta^\prime}(a_t|s_t)} A_{\theta^{\prime}}(s_t,a_t)] Uθ=Eτpθ(τ)[Pθ(atst)Pθ(atst)Aθ(st,at)]
PPO
采样策略和目标学习策略的分布不能差异太大,为了对目标函数进行这个条件约束,可以在目标函数中,加入KL散度,进行约束。
在这里插入图片描述
这里的KL散度并不是计算参数 θ \theta θ θ ′ \theta^{\prime} θ数值之间的差距大小,而是由这两个参数所决定的策略分布的差异,即通过一些同样状态,输入策略函数,比较两者的输出的动作差异大不大。因为可能两个分布的参数差距很小,但是实际得到的分布结果会差很多,而这里要求的是分布的差距不能太大。
基于离线策略的强化学习(PPO)_第2张图片
基本流程,通过 π θ ′ π_{\theta^{\prime}} πθ采取一些样本,利用目标函数通过这些样本进行反复更新目标策略 π θ π_{\theta} πθ的参数,之后计算下两个策略之间的差异,超过事先设定的最大值,增大对散度项的惩罚。更新一下采样策略的参数,继续采样。
PPO2
PPO需要计算对于KL散度的计算比较麻烦,因此有了简化算法PPO2,两个分布不能差距太大的约束条件,利用对梯度剪切实现。
基于离线策略的强化学习(PPO)_第3张图片
基于离线策略的强化学习(PPO)_第4张图片
当A大于0时,我们希望增加这个动作的概率,梯度越大越好,但是梯度大这意味着两个策略的比值 π θ π θ ′ π_\theta \over π_{\theta^{\prime}} πθπθ要大,但是要求又不能太大,因此设定最大为1+ ϵ \epsilon ϵ,当计算出来的梯度大于这个值时,就取这个值。A小于0同理。

参考

https://zhuanlan.zhihu.com/p/78680750

你可能感兴趣的:(强化学习)