• 强化学习-学习笔记14 | 策略梯度中的 Baseline


    本篇笔记记录学习在 策略学习 中使用 Baseline,这样可以降低方差,让收敛更快。

    14. 策略学习中的 Baseline

    14.1 Baseline 推导

    • 在策略学习中,我们使用策略网络 π(a|s;θ) 控制 agent,

    • 状态价值函数

      Vπ(s)=EAπ[Qπ(s,A)]=aπ(a|s;θ)Qπ(a,s)

    • 策略梯度:

       Vπ(s) θ=EAπ[lnπ(A|s;θ)θQπ(s,A)]

    在策略梯度算法中引入 Baseline 主要是用于减小方差,从而加速收敛

    Baseline 可以是任何 独立于 动作 A 的数,记为 b。

    Baseline的性质:

    • 这个期望是0: EAπ[b lnπ(A|s;θ)θ]=0

      • 因为 b 不依赖 动作 A ,而该式是对 A 求期望,所以可以把 b 提出来,有:bEAπ[ lnπ(A|s;θ)θ]

      • 而期望 E 这一项可以展开:baπ(a|s;θ)lnπ(A|s;θ)θ

        这个性质在策略梯度算法用到的的两种形式有提到过。

      • 用链式法则展开后面的导数项,即: lnπ(A|s;θ)θ=1π(a|s;θ)π(a|s;θ)θ

      • 这样整个式子为:baπ(a|s;θ)1π(a|s;θ)π(a|s;θ)θ=baπ(a|s;θ)θ

      • 由于连加是对于 a 进行连加,而内部求导是对于 θ 进行求导,所以求和符号可以和导数符号交换位置:

        baπ(a|s;θ)θ

        这是数学分析中 级数部分 的内容。

      • aπ(a|s;θ)=1,所以有b1θ=0

    根据上面这个式子的性质,可以向 策略梯度中添加 baseline

    • 策略梯度 with baseline:$$\frac{\partial \ V_\pi(s)}{\partial \ \theta}=\mathbb{E}{A\sim\pi}[\frac{\partial ln \pi(A|s;\theta)}{\partial \theta}\cdot Q\pi(s,A)]- \mathbb{E}{A\sim\pi}[b\cdot \frac{\partial \ \ln\pi(A|s;\theta)}{\partial\theta}] \=\mathbb{E}{A\sim\pi}[\frac{\partial ln \pi(A|s;\theta)}{\partial \theta}\cdot(Q_\pi(s,A)-b)]$$
    • 这样引入b对期望 E 没有影响,为什么要引入 b 呢?
      • 策略梯度算法中使用的并不是 严格的上述式子,而是它的蒙特卡洛近似;
      • b不影响期望,但是影响蒙特卡洛近似;
      • 如果 b 好,接近 Qπ,那么会让蒙特卡洛近似的方差更小,收敛速度更快。

    14.2 策略梯度的蒙特卡洛近似

    上面我们得到: Vπ(st) θ=EAtπ[lnπ(At|st;θ)θ(Qπ(st,At)b)]

    但直接求期望往往很困难,通常用蒙特卡洛近似期望。

    • g(At)=[lnπ(At|st;θ)θ(Qπ(st,At)b)]

    • 根据策略函数 π 随机抽样 at ,计算 g(at),这就是上面期望的蒙特卡洛近似;g(at)=[lnπ(at|st;θ)θ(Qπ(st,at)b)]

    • g(at) 是对策略梯度的无偏估计;

      因为:EAtπ[g(At)]=Vπ(st)θ,期望相等。

    • g(at) 是个随机梯度,是对策略梯度 EAtπ[g(At)]的蒙特卡洛近似

    • 在实际训练策略网络的时候,用随机梯度上升更新参数θ:θθ+βg(at)

    • 策略梯度是 g(at) 的期望,不论 b 是什么,只要与 A 无关,就都不会影响 g(At) 的期望。为什么不影响已经在 14.1 中讲过了。

      • 但是 b 会影响 g(at)
      • 如果 b 选取的很好,很接近 Qπ,那么随机策略梯度g(at)的方差就会小;

    14.3 Baseline的选取

    介绍两种常用的 baseline。

    a. b=0

    第一种就是把 baseline 取0,即与之前相同: Vπ(s) θ=EAπ[lnπ(A|s;θ)θQπ(s,A)]

    b. b= Vπ

    另一种就是取 b 为 Vπ,而 Vπ 只依赖于当前状态 st,所以可以用来作为 b。并且 Vπ 很接近 Qπ,可以降低方差加速收敛。

    因为 Vπ(st)=E[Qπ(st,At)],作为期望,V 很接近 Q。

    14.4 Reinforce with Baseline

    把 baseline 用于 Reinforce 算法上。

    a. 基本概念

    • 折扣回报:Ut=Rt+γRt+1+γ2Rt+2+...

    • 动作价值函数:Qπ(st,at)=E[Ut|st,at].

    • 状态价值函数:Vπ(st)=EA[Qπ(st,A)|st]

    • 应用 baseline 的策略梯度:使用的是上面第二种 baseline:

       Vπ(st) θ=EAtπ[g(At)]=EAtπ[lnπ(At|st;θ)θ(Qπ(st,At)Vπ(st))]

    • 对动作进行抽样,用 g(at) 做蒙特卡洛近似,为无偏估计(因为期望==策略梯度):atπ(|st;θ)

      g(at) 就叫做 随机策略梯度,用随机抽取的动作 对应的值来代替期望,是策略梯度的随即近似;这正是蒙特卡洛方法的应用。

      • g(at)=[lnπ(at|st;θ)θ(Qπ(st,at)b)]

    但上述公式中还是有不确定的项:Qπ  Vπ,继续近似:

    • 用观测到的 ut 近似 Qπ,因为 Qπ(st,at)=E[Ut|st,at].这也是一次蒙特卡洛近似。

      这也是 Reinforce 算法的关键。

    • 用神经网络-价值网络 v(s;w) 近似 Vπ

    所以最终近似出来的 策略梯度 是:

     Vπ(st) θg(at)lnπ(at|st;θ)θ(utv(s;w))

    当我们知道 策略网络π、折扣回报ut 以及 价值网络v,就可以计算这个策略梯度。

    我们总计做了3次近似:

    1. 用一个抽样动作 at 带入 g(at) 来近似期望;

    2. 用回报 ut 近似动作价值函数Qπ

      1、2都是蒙特卡洛近似;

    3. 用神经网络近似状态价值函数Vπ

      函数近似。

    b. 算法过程

    我们需要建立一个策略网络和一个价值网络,后者辅助训练前者。

    • 策略网络:

    image

    • 价值网络:

    image

    • 参数共享:

    image

    用 Reinforce 算法训练策略网络,用回归方法训练价值网络。

    • 在一次训练中 agent 获得轨迹:s1,a1,r1,s2,a2,r2,...

    • 计算 ut=i=tnγitri

    • 更新策略网络

      1. 得到策略梯度: Vπ(st) θlnπ(at|st;θ)θ(utv(s;w))

      2. 梯度上升,更新参数:θθ+βlnπ(at|st;θ)θ(utv(st;w))

        utv(st;w)δt

        θθβlnπ(at|st;θ)θδt

    • 更新价值网络

      回顾一下价值网络的目标:VπUt 的期望,训练价值网络是让v接近期望 Vπ

      1. 用观测到的 ut 拟合 v,两者之间的误差记为

        prediction error:δt=v(st;w)ut

      2. 求导得策略梯度: δ2/2w=δtv(st;w)w

      3. 梯度下降更新参数:wwαδtv(st;w)w

    • 如果轨迹的长度为n,可以对神经网络进行n次更新

    14.5 A2C算法

    a.基本概念

    Advantage Actor Critic. 把 baseline 用于 Actor-Critic 上。

    所以需要一个策略网络 actor 和一个价值网络 critic。但与 第四篇笔记AC算法有所不同。

    • 策略网络还是 π(a|s;θ),而价值网络是 v(s;w),是对Vπ 的近似,而不是第四篇笔记中的 Qπ

      因为 V 不依赖于动作,而 Q 依赖动作和状态,故 近似V 的方法可以引入 baseline。

    • A2C 网络结构:

    image

    14.4 中的结构相同,区别在于训练方法不同。

    b. 训练过程

    1. 观察到一个 transition(stat,rt,st+1)

    2. 计算 TD target:yt=rt+γv(st+1;w)

    3. 计算 TD error:δt=v(st;w)yt

    4. 用策略网络梯度更新策略网络θ:θθβδtlnπ(at|st;θ)θ

      注意!这里的 δt​ 是前文中的 utv(st;w)δt

    5. 用TD更新价值网络:wwαδtv(st;w)w

    c. 数学推导

    A2C的基本过程就在上面,很简洁,下面进行数学推导。

    1.价值函数的性质
    • Qπ

      • TD算法推导时用到过这个式子:Qπ(st,at)=ESt+1,At+1[Rt+γQπ(St+1,At+1)]

      • 随机性来自 St+1,At+1,而对之求期望正好消掉了随机性,可以把对 At+1 的期望放入括号内,RtAt+1 无关,则有 定理一

        Qπ(st,at)=ESt+1[Rt+γEAt+1[Qπ(St+1,At+1)]=ESt+1[Rt+γVπ(st+1)]

      • 即:Qπ(st,at)=ESt+1[Rt+γVπ(st+1)]

    • Vπ

      • 根据定义: Vπ(st)=E[Qπ(st,At)]

      • 将 Q 用 定理一 替换掉:

        Vπ(st)=EAtESt+1[Rt+γVπ(St+1)]=EAt,St+1[Rt+γVπ(St+1)]

      • 这就是 定理二Vπ(st)=EAt,St+1[Rt+γVπ(St+1)]

    这样就将 Q 和 V 表示为期望的形式,A2C会用到这两个期望,期望不好求,我们是用蒙特卡洛来近似求期望

    • 观测到 transition(st,at,rt,st+1)

    • Qπ

      • Qπ(st,at)rt+γVπ(st+1)
      • 训练策略网络;
    • Vπ

      • Vπ(st)rt+γVπ(st+1)
      • 训练价值网络,这也是TD target 的来源;
    2. 更新策略网络

    即使用 baseline 的策略梯度算法。

    • g(at)=[lnπ(at|st;θ)θ(Qπ(st,at)Vπ(st))]策略梯度的蒙特卡洛近似。

    • 前面Dueling Network提到过,QπVπ是优势函数 Advantage Function.

      这也是 A2C 的名字来源。

    • Q 和 V 都还不知道,需要做近似,14.5.c.1 中介绍了:

      • Qπ(st,at)rt+γVπ(st+1)
      • 所以是:g(at)lnπ(at|st;θ)θ[(rt+γVπ(st+1))Vπ(st)]
      • Vπ 进行函数近似 v(s;w)
      • 则得最终:g(at)lnπ(at|st;θ)θ[(rt+γv(st+1;w))v(st;w)]

      用上式更新策略网络。

    • rt+γv(st+1;w) 正是 TD target yt

    • 梯度上升更新参数:θθβlnπ(at|st;θ)θ(ytv(st;w))

      这样的梯度上升更好。

    因为以上式子中都有 V,所以需要近似计算 V:

    g(at)lnπ(at|st;θ)θ[(rt+γVπ(st+1))Vπ(st)]evaluation made by the critic

    3. 更新价值网络

    采用 TD 算法 更新价值网络,根据 14.5.b 有如下式子:

    • Vπ(st)rt+γVπ(st+1)
    • 对上式得 Vπ 做函数近似, 替换为 v(st;w),v(st+1;w)
    • v(st;w)rt+γv(st+1;w)TD target yt
    • 训练价值网络就是要让 v(s;w) 接近 yt
      • TD error: δt=v(st;w)yt
      • 梯度: δt2/2w=δtv(st;w)w
      • 更新:wwαδtv(st;w)w
    4. 有关的策略梯度

    在A2C 算法中的策略梯度:g(at)lnπ(at|st;θ)θ[(rt+γv(st+1;w))v(st;w)]

    会有这么一个问题,后面这一项是由价值网络给出对策略网络选出的动作进行打分,那么为什么这一项中没有动作呢,没有动作怎么给动作打分呢?

    • 注意这两项:
    • (rt+γv(st+1;w)) 是执行完 at 后作出的预测
    • v(st;w) 是未执行 at 时作出的预测;
    • 两者之差意味着动作 at 对于 V 的影响程度
    • 而在AC算法中,价值网络给策略网络的是 q,而在A2C算法中, 价值网络给策略网络的就是上两式之差 advantage.

    image

    14.6 RwB 与A2C 的对比

    • 两者的神经网络结构完全一样

    image

    • 不同的是价值网络

      • RwB 的价值网络只作为 baseline,不评价策略网络,用于降低随机梯度造成的方差;
      • A2C 的价值网络时critic,评价策略网络;
    • RwB 是 A2C 的特殊形式。这一点下面 14.7 后会讲。

    14.7 A2C with m-step

    单步 A2C 就是上面所讲的内容,具体请见 14.5.b

    而多步A2C就是使用 m 个连续 transition

    • yt=i=0m1γirt+1+γmv(st+m;w)
    • 具体参见m-step
    • 剩下的步骤没有任何改变,只是 TD target 改变了。

    下面解释 RwB 和 A2C with m-step 的关系:

    • A2C with m-step 的TD target:yt=i=0m1γirt+1+γmv(st+m;w)
    • 如果使用所有的奖励,上面两项中的第二项(估计)就不存在,而第一项变成了
      • yt=ut=i=tnγitri
      • 这就是 Reinforce with baseline.

    x. 参考教程

  • 相关阅读:
    深度学习崛起十年:“开挂”的OpenAI革新者
    自动驾驶---OpenSpace之Hybrid A*规划算法
    计算机Android毕业设计论文基于Uniapp+SSM实现的作业管理app
    java虚拟机详解篇十二(方法调用和方法的绑定机制)
    分析股票怎么进行量化交易?
    类和函数的泛化、偏特化和全特化
    python pyewbio介绍如果实现网页跳转
    springboot项目下logback配置
    高纬度矩阵乘法的意义
    C# string字符串内存管理深入分析(全程干货)
  • 原文地址:https://www.cnblogs.com/Roboduster/p/16469451.html