策略梯度算法法 (PG)
策略梯度迭代,通过计算策略梯度的估计,并利用随机梯度上升算法进行迭代。其常用的梯度估计形式为:
E^t[∇θlogπθ(at∣st)A^t]
其中πθ为随机策略,A^t是优势函数在时间步t的估计,其损失函数为:
LPG(θ)=E^t[logπθ(at∣st)A^t]
信赖域策略优化(TRPO)
TRPO要优化的目标函数如下:
maximizeθE^[πθold(at∣st)π(at∣st)A^t]
subject to Et^[KL[πold(⋅∣st)∣∣πθ(⋅∣st)]]≤U
近端策略优化算法(PPO)
截断替代目标(PPO1)
令rt(θ)=πold(at∣st)πθ(at∣st),那么r(θold)=1。TRPO把目标函数替换为:
LCPL(θ)=E^[πθold(at∣st)π(at∣st)A^t]=E^t[rt(θ)A^t]
LCPL指的是前述TRPO中的保守策略迭代,如果不加约束,最大化LCPL会产生较大幅度的梯度更新。为了惩罚策略的变化(使得rt(θ)远离1,新旧策略的KL散度不能太大),使用了一下的目标函数:
LCLIP(θ)=E^[min(rt(θ)A^t,clip(rtθ),1−ϵ,1+ϵ)A^t]
原论文中取ϵ=0.2,直观示意图如下:
即:
当A>0时,如果rt(θ)>1+ϵ,则LCLIP(θ)=(1+ϵ)A^t;如果rt(θ)<1+ϵ,则LCLIP(θ)=rt(θ)A^t;
当A<0时,如果rt(θ)>1−ϵ,则LCLIP(θ)=rt(θ)A^t;如果rt(θ)<1−ϵ,则LCLIP(θ)=(1−ϵ)A^t;
自适应KL惩罚系数
在TRPO中,使用"自适应惩罚系数"β来约束KL散度,在该算法的最简单实例中,在每一步策略更新中执行以下步骤:
-
使用多个minibatch SGD,优化KL惩罚的目标
LKLPEN(θ)=E^t[πθoldπθ(at∣st)(at∣st)A^t−βKL[πθold(⋅∣st),π(⋅∣st)]]
-
计算d=E^[KL[πθold(⋅∣st),π(⋅∣st)]]
如果d<dtarg/1.5,β<−β/2
如果d>dtarg∗1.5,β<−β∗2
实验中,PPO2的效果可能没有PPO1的效果好。
更复杂的版本
LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)−c1LtVF(θ)]+c2S[πθ](st)]
其中c1,c2是系数,S表示熵奖励,LtVF是平方误差损失(Vθ(st)−Vttarg)2
优势估计函数为
A^t=−V(st)+rt+γrt+1+...+γT−t+1rT−1+γT−tV(sT)
另外,我们可以使用广义优势函数来扩广A^t,当λ=1时,它趋近于上面的等式
A^t=δ+(γλ)δt+1+...+...+γλT−t+1δT−1
where δt=rt+γV(st+1−V(st))
使用固定长度轨迹的近端策略优化(PPO)算法
如下所示:
Algorithm PPO,Actor−Critic Style
for iteration=1,2,...,do
for actor=1,2,...,N,do
Run policy πθold in environment for T timesteps
Compute advantage estimatesA^1,...,A^T
endfor
Optimize surrogate L wrt θ,with K epochs and minibatch size M<=NT
end for