近端策略优化算法(PPO)

策略梯度算法法 (PG)

策略梯度迭代,通过计算策略梯度的估计,并利用随机梯度上升算法进行迭代。其常用的梯度估计形式为:
E^t[θlogπθ(atst)A^t] \hat{\mathbb{E}}_t[\nabla_\theta log \pi_\theta(a_t | s_t)\hat{A}_t]
其中πθ\pi_\theta为随机策略,A^t\hat{A}_t是优势函数在时间步t的估计,其损失函数为:
LPG(θ)=E^t[logπθ(atst)A^t] L^{PG}(\theta)=\hat{\mathbb{E}}_t[log_{\pi_\theta}(a_t|s_t)\hat{A}_t]

信赖域策略优化(TRPO)

TRPO要优化的目标函数如下:
maximizeθE^[π(atst)πθold(atst)A^t] maximize_\theta \hat{\mathbb{E}}[\frac{\pi(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t]
subject to Et^[KL[πold(st)πθ(st)]]U subject\ to \ \hat{\mathbb{E}_t}[KL[\pi_{old}(·|s_t)||\pi_\theta(·|s_t)]] \leq U

近端策略优化算法(PPO)

截断替代目标(PPO1)

rt(θ)=πθ(atst)πold(atst)r_t({\theta})=\frac{\pi_{\theta(a_t|s_t)}}{\pi_{old}(a_t|s_t)},那么r(θold)=1r(\theta_{old})=1。TRPO把目标函数替换为:
LCPL(θ)=E^[π(atst)πθold(atst)A^t]=E^t[rt(θ)A^t] L^{CPL}(\theta) =\hat{\mathbb{E}}[\frac{\pi(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t]=\hat{\mathbb{E}}_t[r_t(\theta)\hat{A}_t]

LCPLL^{CPL}指的是前述TRPO中的保守策略迭代,如果不加约束,最大化LCPLL^{CPL}会产生较大幅度的梯度更新。为了惩罚策略的变化(使得rt(θ)r_t(\theta)远离1,新旧策略的KL散度不能太大),使用了一下的目标函数:
LCLIP(θ)=E^[min(rt(θ)A^t,clip(rtθ),1ϵ,1+ϵ)A^t] L^{CLIP}(\theta)=\hat{\mathbb{E}}[min(r_t(\theta)\hat{A}_t, clip(r_t{\theta}),1-\epsilon, 1+\epsilon)\hat{A}_t]
原论文中取ϵ=0.2\epsilon=0.2,直观示意图如下:
近端策略优化算法(PPO)
即:

当A>0时,如果rt(θ)>1+ϵr_t(\theta)>1+\epsilon,则LCLIP(θ)=(1+ϵ)A^tL^{CLIP}(\theta)=(1+\epsilon)\hat{A}_t;如果rt(θ)<1+ϵr_t(\theta)<1+\epsilon,则LCLIP(θ)=rt(θ)A^tL^{CLIP}(\theta)=r_t(\theta)\hat{A}_t

当A<0时,如果rt(θ)>1ϵr_t(\theta)>1-\epsilon,则LCLIP(θ)=rt(θ)A^tL^{CLIP}(\theta)=r_t(\theta)\hat{A}_t;如果rt(θ)<1ϵr_t(\theta)<1-\epsilon,则LCLIP(θ)=(1ϵ)A^tL^{CLIP}(\theta)=(1-\epsilon)\hat{A}_t

自适应KL惩罚系数

在TRPO中,使用"自适应惩罚系数"β\beta来约束KL散度,在该算法的最简单实例中,在每一步策略更新中执行以下步骤:

  • 使用多个minibatch SGD,优化KL惩罚的目标
    LKLPEN(θ)=E^t[πθ(atst)πθold(atst)A^tβKL[πθold(st),π(st)]] L^{KLPEN}(\theta)=\hat{\mathbb{E}}_t[\frac{\pi_{\theta(a_t|s_t)}}{\pi_{\theta_{old}}}(a_t|s_t)\hat{A}_t-\beta KL[\pi_{\theta_{old}}(·|s_t), \pi(·|s_t)]]

  • 计算d=E^[KL[πθold(st),π(st)]]d=\hat{\mathbb{E}}[KL[\pi_{\theta_{old}}(·|s_t), \pi(·|s_t)]]

如果d<dtarg/1.5,β<β/2d<d_{targ}/1.5, \beta <-\beta/2
如果d>dtarg1.5,β<β2d>d_{targ}*1.5, \beta<-\beta*2

实验中,PPO2的效果可能没有PPO1的效果好。

更复杂的版本

LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)c1LtVF(θ)]+c2S[πθ](st)] L_t^{CLIP+VF+S}(\theta) = \hat{E}_t[L_t^{CLIP}(\theta)-c_1L_t^{VF}(\theta)]+c_2 S[\pi_{\theta}](s_t)]
其中c1c1c2c2是系数,SS表示熵奖励,LtVF(Vθ(st)Vttarg)2L_t^{VF}是平方误差损失(V_\theta(s_t)-V_t^{targ})^2

优势估计函数为
A^t=V(st)+rt+γrt+1+...+γTt+1rT1+γTtV(sT) \hat{A}_t = -V(s_t)+r_t+\gamma r_{t+1}+...+\gamma^{T-t+1}r_{T-1}+\gamma^{T-t}V(s^T)

另外,我们可以使用广义优势函数来扩广A^t\hat{A}_t,当λ=1\lambda=1时,它趋近于上面的等式
A^t=δ+(γλ)δt+1+...+...+γλTt+1δT1 \hat{A}_t=\delta+(\gamma\lambda)\delta_{t+1}+...+...+{\gamma\lambda^{T-t+1}}\delta_{T-1}
where δt=rt+γV(st+1V(st))where \ \delta_t = r_t+\gamma V(s_{t+1}-V(s_t))

使用固定长度轨迹的近端策略优化(PPO)算法

如下所示:

Algorithm PPO,ActorCritic StyleAlgorithm \ PPO, Actor-Critic \ Style
for iteration=1,2,...,dofor \ iteration=1,2,...,do
for actor=1,2,...,N,do\qquad for \ actor=1,2,...,N, do
Run policy πθold\qquad \qquad Run \ policy \ \pi_{\theta_{old}} in environment for T timesteps
Compute advantage estimatesA^1,...,A^T\qquad \qquad Compute \ advantage \ estimates \hat{A}_1,...,\hat{A}_{T}
endfor\qquad end for
Optimize surrogate L wrt θ,with K epochs and minibatch size M<=NTOptimize \ surrogate \ L \ wrt \ \theta, with \ K \ epochs \ and \ minibatch \ size \ M <= NT
end forend \ for