zoukankan      html  css  js  c++  java
  • *端策略优化算法(PPO)

    策略梯度算法(PG)

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

    信赖域策略优化(TRPO)

    TRPO要优化的目标函数如下:
    m a x i m i z e θ E ^ [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ] maximize_ heta hat{mathbb{E}}[frac{pi_{ heta(a_t|s_t)}}{pi_{ heta_{old}}(a_t|s_t)}hat{A}_t] maximizeθE^[πθold(atst)πθ(atst)A^t]
    s u b j e c t   t o   E t ^ [ K L [ π θ o l d ( ⋅ ∣ s t ) ∣ ∣ π θ ( ⋅ ∣ s t ) ] ] ≤ U subject to hat{mathbb{E}_t}[KL[pi_{ heta_{old}}(·|s_t)||pi_ heta(·|s_t)]] leq U subject to Et^[KL[πθold(st)πθ(st)]]U

    *端策略优化算法(PPO)

    截断替代目标(PPO1)

    r t ( θ ) = π θ ( a t ∣ s t ) π o l d ( a t ∣ s t ) r_t({ heta})=frac{pi_{ heta(a_t|s_t)}}{pi_{old}(a_t|s_t)} rt(θ)=πold(atst)πθ(atst),那么 r t ( θ o l d ) = 1 r_t( heta_{old})=1 rt(θold)=1。TRPO把目标函数替换为:
    L C P L ( θ ) = E ^ [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ] = E ^ t [ r t ( θ ) A ^ t ] L^{CPL}( heta) =hat{mathbb{E}}[frac{pi_{ heta(a_t|s_t)}}{pi_{ heta_{old}}(a_t|s_t)}hat{A}_t]=hat{mathbb{E}}_t[r_t( heta)hat{A}_t] LCPL(θ)=E^[πθold(atst)πθ(atst)A^t]=E^t[rt(θ)A^t]

    L C P L L^{CPL} LCPL指的是前述TRPO中的保守策略迭代,如果不加约束,最大化 L C P L L^{CPL} LCPL会产生较大幅度的梯度更新。为了惩罚策略的变化(使得 r t ( θ ) r_t( heta) rt(θ)远离1,新旧策略的KL散度不能太大),使用了以下的目标函数:
    L C L I P ( θ ) = E ^ [ m i n ( r t ( θ ) A ^ t , c l i p ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L^{CLIP}( heta)=hat{mathbb{E}}[min(r_t( heta)hat{A}_t, clip(r_t({ heta}),1-epsilon, 1+epsilon)hat{A}_t)] LCLIP(θ)=E^[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t)]
    原论文中取 ϵ = 0.2 epsilon=0.2 ϵ=0.2,直观示意图如下:
    在这里插入图片描述
    即:

    当A>0时,如果 r t ( θ ) > 1 + ϵ r_t( heta)>1+epsilon rt(θ)>1+ϵ,则 L C L I P ( θ ) = ( 1 + ϵ ) A ^ t L^{CLIP}( heta)=(1+epsilon)hat{A}_t LCLIP(θ)=(1+ϵ)A^t;如果 r t ( θ ) < 1 + ϵ r_t( heta)<1+epsilon rt(θ)<1+ϵ,则 L C L I P ( θ ) = r t ( θ ) A ^ t L^{CLIP}( heta)=r_t( heta)hat{A}_t LCLIP(θ)=rt(θ)A^t

    当A<0时,如果 r t ( θ ) > 1 − ϵ r_t( heta)>1-epsilon rt(θ)>1ϵ,则 L C L I P ( θ ) = r t ( θ ) A ^ t L^{CLIP}( heta)=r_t( heta)hat{A}_t LCLIP(θ)=rt(θ)A^t;如果 r t ( θ ) < 1 − ϵ r_t( heta)<1-epsilon rt(θ)<1ϵ,则 L C L I P ( θ ) = ( 1 − ϵ ) A ^ t L^{CLIP}( heta)=(1-epsilon)hat{A}_t LCLIP(θ)=(1ϵ)A^t

    自适应KL惩罚系数 (PPO2)

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

    • 使用多个minibatch SGD,优化KL惩罚的目标
      L K L P E N ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t − β K L [ π θ o l d ( ⋅ ∣ s t ) , π ( ⋅ ∣ s t ) ] ] L^{KLPEN}( heta)=hat{mathbb{E}}_t[frac{pi_{ heta(a_t|s_t)}}{pi_{ heta_{old}}}(a_t|s_t)hat{A}_t-eta KL[pi_{ heta_{old}}(·|s_t), pi(·|s_t)]] LKLPEN(θ)=E^t[πθoldπθ(atst)(atst)A^tβKL[πθold(st),π(st)]]

    • 计算 d = E ^ [ K L [ π θ o l d ( ⋅ ∣ s t ) , π ( ⋅ ∣ s t ) ] ] d=hat{mathbb{E}}[KL[pi_{ heta_{old}}(·|s_t), pi(·|s_t)]] d=E^[KL[πθold(st),π(st)]]

    如果 d < d t a r g / 1.5 , β < − β / 2 d<d_{targ}/1.5, eta <-eta/2 d<dtarg/1.5,β<β/2
    如果 d > d t a r g ∗ 1.5 , β < − β ∗ 2 d>d_{targ}*1.5, eta<-eta*2 d>dtarg1.5,β<β2

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

    更复杂的版本

    L t C L I P + V F + S ( θ ) = E ^ t [ L t C L I P ( θ ) − c 1 L t V F ( θ ) ] + c 2 S [ π θ ] ( s t ) ] L_t^{CLIP+VF+S}( heta) = hat{E}_t[L_t^{CLIP}( heta)-c_1L_t^{VF}( heta)]+c_2 S[pi_{ heta}](s_t)] LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)c1LtVF(θ)]+c2S[πθ](st)]
    其中 c 1 c1 c1 c 2 c2 c2是系数, S S S表示熵奖励, L t V F L_t^{VF} LtVF是平方误差损失 ( V θ ( s t ) − V t t a r g ) 2 (V_ heta(s_t)-V_t^{targ})^2 (Vθ(st)Vttarg)2

    优势估计函数为
    A ^ t = − V ( s t ) + r t + γ r t + 1 + . . . + γ T − t + 1 r T − 1 + γ T − t V ( s T ) 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=V(st)+rt+γrt+1+...+γTt+1rT1+γTtV(sT)

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

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

    如下所示:

    A l g o r i t h m   P P O , A c t o r − C r i t i c   S t y l e Algorithm PPO, Actor-Critic Style Algorithm PPO,ActorCritic Style
    f o r   i t e r a t i o n = 1 , 2 , . . . , d o for iteration=1,2,...,do for iteration=1,2,...,do
    f o r   a c t o r = 1 , 2 , . . . , N , d o qquad for actor=1,2,...,N, do for actor=1,2,...,N,do
    R u n   p o l i c y   π θ o l d qquad qquad Run policy pi_{ heta_{old}} Run policy πθold in environment for T timesteps
    C o m p u t e   a d v a n t a g e   e s t i m a t e s A ^ 1 , . . . , A ^ T qquad qquad Compute advantage estimates hat{A}_1,...,hat{A}_{T} Compute advantage estimatesA^1,...,A^T
    e n d f o r qquad end for endfor
    O p t i m i z e   s u r r o g a t e   L   w r t   θ , w i t h   K   e p o c h s   a n d   m i n i b a t c h   s i z e   M < = N T Optimize surrogate L wrt heta, with K epochs and minibatch size M <= NT Optimize surrogate L wrt θ,with K epochs and minibatch size M<=NT
    e n d   f o r end for end for

    推荐阅读:

    李宏毅机器学*系列-强化学*之*端策略优化PPO
    该博文从Import Sampling的角度叙述了PPO的演化。

    个人认为写得最好的TRPO讲解
    该博文从数学方面叙述了PPO的推导。

  • 相关阅读:
    Atitit.js图表控件总结
    atitit.attilax的软件 架构 理念.docx
    Atitit.异常处理 嵌套  冗长的解决方案
    Atitit.异常处理 嵌套  冗长的解决方案
    Atitit.atiagent  agent分销系统 代理系统 设计文档
    Atitit.atiagent  agent分销系统 代理系统 设计文档
    Atitit ati licenseService    设计原理
    Atitit ati licenseService    设计原理
    Atitit.项目修改补丁打包工具 使用说明
    Atitit.项目修改补丁打包工具 使用说明
  • 原文地址:https://www.cnblogs.com/wanghongze95/p/13842435.html
Copyright © 2011-2022 走看看