Policy Gradient

本文档记录了一些国内外大学关于 policy gradient 相关内容的介绍及个人总结
* http://home.deib.polimi.it/restelli/MyWebSite/pdf/rl7.pdf
* http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching_files/pg.pdf
* http://lamda.nju.edu.cn/yuy/GetFile.aspx?File=adl-rl/ADL-RL.pdf
* http://mi.eng.cam.ac.uk/~mg436/LectureSlides/MLSALT7/L5.pdf
* https://www.scss.tcd.ie/~luzs/t/cs7032/td-notes.pdf
* http://incompleteideas.net/book/bookdraft2017nov5.pdf

方法 值函数 策略
Value-based 对值函数进行估计 隐含的
Policy-based 无值函数 对策略进行估计
Actor-critic 对值函数进行估计 对策略进行估计

简介

  • 值函数估计,如 Q-Learning、Sarsa 等,可以学到一个近似确定的策略,但是收敛速度会比较慢。
  • policy gradient 是自然语言处理领域应用较多的一种强化学习方法,它的优化目标为给定策略 πθ(a|s) ,找出最合适的 θ

    • 评价策略 πθ

      J(θ)=Sμ(s)Vπ(θ)(s)ds=Sdπθ(s)Aπ(a|s)R(s,a)dads

      其中 dπ(θ) 为策略 π(θ) 平稳分布。

    • 参数更新:

      θπ=θπ+αdJ(θ)dθ|θ=θπ

  • 与理论上可以达到最优策略的值函数估计相比,policy gradient 常常得到的是局部极小值

Policy Gradient Methods

Finite Difference Methods (FD)

  • 特点

    • black-box
    • 简单
    • 易受噪音干扰
    • 效率较低
    • 即使策略不可微分也适用
  • 主要思想:对目标函数参数 θ 各个维度分别求偏导

    • uk :第 k 维为 1 的单位向量
    • ϵ :步长
    • 更新策略:

      Δθk=ϵuk

      ΔJk=J(θ)θkJ(θ+ϵuk)J(θ)ϵ

      gFD=(ΔΘΔΘ)1ΔΘΔJ

Likelihood Ratio Methods

  • 特点

    • white-box
    • 加入探索(随机因素)的策略
    • 充分利用策略的相关知识
    • 假设策略梯度已知
  • 主要思想:基于已知的策略梯度进行计算

    τ 是什么???一条采样轨迹???

    • 策略的目标函数(评价策略):

      J(θ)=?pθ(τ|π)R(τ)dτ

    • 目标函数的梯度:

      θJ(θ)=θ?pθ(τ|π)R(τ)dτ=?θpθ(τ|π)R(τ)dτ

      其中:

      θpθ(τ|π)=pθ(τ|π)θlogpθ(τ|π)

      代入,有:

      θJ(θ)=?pθ(τ|π)θlogpθ(τ|π)R(τ)dτ=?[θlogpθ(τ|π)R(τ)]1Kk=1Kθlogpθ(τk|π)R(τk)

      得到上式,可以发现只要通过采样就能够计算出目标函数的梯度了。对于采样得到的轨迹 τ 的概率 pθ(τ) ,有:

      pθ(τ)=μ(s1)t=1TP(st+1|st,at)πθ(at|st)

      对上式取对数,由于 μ(s1) P(st+1|st,at) 是确定的,可以得到:

      logpθ(τ)=t=1Tlogπθ(at|st)+const

      求导可得:

      θlogpθ(τ)=t=1Tθlogπθ(at|st)

  • Characteristics Eligibility:在之前采样轨迹的梯度的基础上形式化定义如下:

    θlogπθ(a|s)

    • Softmax Policy

      对状态-动作对定义了特征向量 ϕ(s,a) ,对应的策略为 πθ(s,a)eϕ(s,a)θ ,有:

      θlogπθ(a|s)=ϕ(s,a)?πθ[ϕ(s,)]

    • 高斯策略

      用于连续动作空间,定义了状态的特征向量 ϕ(s) ,方差可以是固定值也可以是参数化的,如固定为 σ2 ,则动作满足所定义的高斯分布 a(μ(s),σ) ,有:

      θlogπθ(a|s)=(aμ(s))ϕ(s)σ2

  • Policy Gradients Theorem

    • One-Step MDPs

      回到最初定义如何评价策略 πθ 的地方,将其从连续动作、连续状态空间替换为离散的,并加入约束条件:

      • sd() :初始状态即为稳态
      • 在一个 time-step 之后结束,奖励为: r=R(s,a)

      在这样的 One-Step MDPs 中,策略的目标函数为:

      J(θ)=?πθ[r]=Sd(s)Aπθ(a|s)R(s,a)

      与之前求导方式类似,能够得到 One-Steps MDPs 目标函数的梯度:

      θJ(θ)=?[θlogπθ(a|s)r]

    • Multi-Steps MDPs

      将 One-Step MDPs 中立即反馈的奖赏更改为长期的值函数 Qπ(s,a)

    • Policy Gradients Theorem

      对于任何可微分策略 πθ(a,s) ,其任何目标函数 J

      • J=J1
      • J=JavR ???
      • J=11γJavV ???

      对应的策略梯度为:

      θJ(θ)=?πθ[θlogπθ(a|s)Qπθ(s,a)]

Monte-Carlo Policy Gradient

  • vt :对 Qπθ 的无偏采样

算法

def REINFORCE():
    theta.init_random()
    for all episodes {s[1],a[1],r[2],...,s[T-1],a[T-1],r[T]~pi}:
        for t in range(1,T):
            theta.update(alpha,pi,a[t],s[t],v[t])
    return theta

根据如下公式对参数进行更新:

θθ+αθlogπθ(at|st)vt

存在问题

  • 不稳定,方差过大

Actor-Critic Policy Gradient

  • 特点

    为了解决 MCPG 中方差过大的问题,引入 critic 对状态-动作对值函数进行近似估计

    Qw(s,a)Qπθw(s,a)

  • 参数集合

    • critic 评估:更新状态-动作值函数参数 w
    • actor (所选的)效果提升:在 critic 建议的方向上更新策略参数 θ

基于状态-动作对 critic 的 actor-critic 算法

  • 主要思想:借助时序差分的思想,状态-动作对值函数为特征向量的线性组合(与 softmax policy 类似) Qw(s,a)=ϕ(s,a)w
  • 算法:

    个人感觉比较像值函数估计中的异策略算法 Q-Learning,发现国内版本(ref:俞扬)和国外的版本不太一样,而且感觉国外版本的有点问题,所以这里参考俞扬老师的版本

    def QAC():
        theta.init()
        state.init()
        for all step: # 什么时候停止???
            action = pi_epsilon.sample(state)
            state_dot, reward = action.do()
            action_dot = pi.sample(state_dot)
            delta.update(w,reward,state_dot,action_dot,state,action)
            theta.update(w,state,action) # 此步更新的是 pi,不是 pi_epsilon
            w.update(alpha,delta,state,action)
            state = state_dot
            action = action_dot

    δ θ w 的更新函数分别如下:

    δ=r+γQw(s,a)Qw(s,a)

    θ=θ+αθlogπθ(s,a)Qw(s,a)

    w=w+αδπ(s,a)

Compatible Function Approximation

Action-Critic 算法虽然能够解决 MCPG 方差过大的问题,但对策略的估计依然是有偏的,需要借助于准确的 policy gradient 选择合适的动作值函数来解决这一问题。

  • Compatible Function Approximation Theorem

    • 约束条件 1:值函数的近似与策略兼容(???梯度相等叫兼容)

      wQw(s,a)=θlogπθ(a|s)

    • 约束条件 2:借助于参数 w 能够最小化近似值函数与策略对应真实的值函数之间的均方误差

      ϵ=?πθ[(Qπθ(s,a)Qw(s,a))2]

    满足以上两个约束条件时,通过对 ϵ 求导在极值点可得 Action-Critic 的策略梯度为:

    θ?πθ[θlogπθ(a|s)Qw(s,a)]

Advantage Function Critic

Action-Critic 中另一种解决方差过大的方法是引入 baseline function,该函数不改变原目标函数梯度,即:

?πθ[θlogπθ(s,a)B(s)]=sSdπθ(s)aθπθ(s,a)B(s)=sSdπθ(s)B(s)aθπθ(s,a)=0

可以将状态值函数 Vπθ(s) 作为 baseline function,则策略梯度改写为:

θJ(θ)=?πθ[θlogπθ(a|s)(Qπθ(s,a)Vπθ(s))]

其中 Aπθ(s,a)=Qπθ(s,a)Vπθ(s) 称为 Advantage Function,此时如果希望能够得到准确的策略梯度,不仅需要对状态-动作对值函数 Qπθ(s,a) 进行指导,同时需要引入对状态值函数的指导参数 v ,可以得到 Advantage Function 的近似估计:

A(s,a)=Qw(s,a)Vv(s)

类似于之前仅依赖于 Q 的模型一样借助时序差分学习的思想对两个值函数进行更新,对应的误差为:

δπθ=r+γVπθ(s)Vπθ(s)

该误差的期望为:

?πθ[δπθ|s,a]=?πθ[r+γVπθ(s)]Vπθ(s)=Qπθ(s,a)Vπθ(s)

可以看出在时序差分学习中误差的期望即为 Advantage Function,所以也可以将策略梯度写为 θJ(θ)=?πθ[θlogπθ(a|s)δπθ] ,由于 δπθ 仅与状态值函数 Vπθ 相关,所以实际上只要对通过 v 进行指导即可。

原文中认为可以直接将时序差分学习误差作为策略梯度

不同时间范围内各种 Critic 方法的参数更新

  • Monte-Carlo 采样:利用对 Qπθ 的无偏采样 vt

    Δθ=α(vtVv(st))θlogπθ(at|st)

  • TD(0),即 One-Step MDPs:依赖时序差分的中下一时刻的状态 st+1

    Δθ=α(r+γVv(st+1)Vv(st))θlogπθ(at|st)

《Reinforcement Learning: An Introduction》中指出 forward-view 和 backward-view TD( λ ) 本质是相同的

  • forward-view TD( λ ):Multi-Steps MDPs, λ[0,1] vλt=(1λ)n=1λn1vnt

    Δθ=α(vλtVv(st))θlogπθ(at|st)

  • backward-view TD( λ )

    Δθ=αδet

    其中:

    • Eligibility traces: et+1=λet+θlogπθ(a|s)
    • δ=r+γVv(st+1)Vv(st)

与 forward-view 相比,backward-view 不需要用到完整的轨迹信息,所以感觉在序列生成任务上比较适用。

Natural Policy Gradient

Natural Policy Gradient 通过一个微小的固定量改变策略,找到最接近 vanilla gradient 的梯度方向(文中特指了梯度上升方向)。

̃ θJ(θ)=G1(θ)θJ(θ)

其中 G(θ) 为 Fisher 信息矩阵:

G(θ)=?πθ[θlogπθ(a|s)θlogπθ(a|s)]

基于 Compatible Function Approximation,可以设近似状态-动作值函数 Qw(s,a) ,有:

wQw(s,a)=θlogπθ(a|s)

策略梯度的目标函数可表示为:

θJ(θ)=?πθ[θlogπθ(a|s)Qπθ(s,a)]=?[θlogπθ(a|s)θlogπθ(a|s)w]=G(θ)w

对应的 Natural Policy Gradient 即为 w ,这样参数更新就简化为了仅依赖于指导参数:

θt+1=θt+αtwt

总结

本文包含了各种 Policy Gradient 算法策略梯度更新的公式,整理如下:

  • REINFORCE: ?πθ[θlogπθ(a|s)vt
  • Q Actor-Critic: ?πθ[θlogπθ(a|s)Qw(s,a)
  • Advantage Actor-Critic: ?πθ[θlogπθ(a|s)Aw(s,a)
  • TD Actor-Critic: ?πθ[θlogπθ(a|s)δ
  • TD( λ ) Actor-Critic: ?πθ[θlogπθ(a|s)δe
  • Natural Actor-Critic: G1(θ)θJ(θ)

你可能感兴趣的:(Reinforcement,Learning,Policy,Gradient,模式识别与机器学习)