深度强化学习

一、PPO [2017]

  1. 近年来,人们提出了几种不同的方法从而用神经网络函数近似器来进行强化学习。领先的竞争者是 deep Q-learning《Human-level control through deep reinforcement learning》)、平凡的策略梯度policy gradient方法(《Asynchronous methods for deep reinforcement learning》),以及 trust region / natural 策略梯度方法(《Trust region policy optimization》)。然而,在开发一种 scalable (用于大型模型和并行实现)、数据高效和鲁棒(无需超参数调优即可在各种问题上取得成功)的方法方面仍有改进空间:

    • Q-learning (带 function approximation )在许多简单的问题上都失败了,而且人们对其理解不深。
    • 平凡的策略梯度方法的数据效率和鲁棒性很差。
    • trust region policy optimization: TRPO 相对复杂,而且与包含噪声(如 dropout )或参数共享(在策略函数和价值函数之间参数共享、或与辅助任务之间参数共享)的架构不兼容。

    论文 《Proximal Policy Optimization Algorithms》 试图通过引入一种算法来改善目前的状况,这种算法可以达到 TRPO 的数据效率和可靠性能,同时只使用一阶优化first-order optimization 。论文提出了一个具有 clipped probability ratio 的新目标,它形成了对策略性能的悲观估计(即,下限)。为了优化策略,作者在来自策略的数据采样、以及对被采样的数据进行若干个 epoch 的优化之间交替进行。

    论文的实验比较了各种不同版本的代理目标 surrogate objective 的性能,发现具有 clipped probability ratio 的版本表现最好。论文还将 PPO 与之前文献中的几种算法进行了比较:

    • continuous control 任务上,PPObaseline 算法表现得更好。
    • Atari 任务上,PPO 的表现(就样本复杂度而言)明显优于 A2C ,与ACER 相似,但是 PPO 要简单得多。

1.1 背景:策略优化

  1. 策略梯度方法:策略梯度方法的工作原理是,计算策略梯度的估计值并应用到随机梯度上升算法中。最常用的梯度估计器的形式是 :

    (1)g^=E^t[θlogπθ(atst)A^t]

    其中:

    • πθ 为一个随机策略。
    • A^t=Qπ(st,at)Vπ(st)timestep t 时的 advantage function 的一个估计,其中 Qπ(s,a) 为动作状态价值函数,Vπ(s) 为状态价值函数。
    • E^t[] 为在一个有限的 batch 上样本的经验均值。这里的样本是在一个交替执行采样和优化的算法中获取。

    推导过程:

    定义回报 Ut 为从 t 时刻开始的所有奖励之和,它依赖于时刻 t 开始的所有状态和动作:St,At,St+1,At+1, ,这些状态和动作都是随机变量(这里大写字母代表随机变量,小写字母代表对应的观察值)。现在我们观察到 t 时刻的状态为 st 、动作为 at ,而之后的状态和动作是未知的、随机的,因此 Ut 是随机变量。

    定义动作状态价值函数: Qπ(st,at)=E[UtSt=at,At=at] ,它是关于 (st,at) 的条件期望。定义状态价值函数:Vπ(st)=EAtπ(st;θ)[Qπ(st,At)]

    如果一个策略很好,那么对于所有的状态 S ,状态价值 Vπ(S) 的均值应该相当大。因此定义目标函数:

    (2)J(θ)=ES[Vπ(S)]

    因此策略学习可以描述为最优化问题:

    (3)maxθJ(θ)

    策略梯度为:

    (4)θJ(θ)

    根据:

    (5)Vπ(s)θ=θaAπ(as;θ)×Qπ(s,a)=aA(π(as;θ)×Qπ(s,a))θ=aAπ(as;θ)θ×Qπ(s,a)+EAπ(s;θ)[Qπ(s,A)θ]=aAπ(As;θ)×1π(As;θ)×π(as;θ)θ×Qπ(s,a)+EAπ(s;θ)[Qπ(s,A)θ]=aAπ(As;θ)×logπ(as;θ)θ×Qπ(s,a)+EAπ(s;θ)[Qπ(s,A)θ]=EAπ(s;θ)[logπ(As;θ)θ×Qπ(s,A)]+EAπ(s;θ)[Qπ(s,A)θ]EAπ(s;θ)[logπ(As;θ)θ×Qπ(s,A)]

    因此:

    (6)θJ(θ)=θES[Vπ(S)]=ES[θVπ(S)]ESEA[logπ(AS;θ)θ×Qπ(S,A)]

    为了训练更稳定,我们用 advantage function A~(S,A)=Qπ(S,A)Vπ(S) 来代替 Qπ(S,A) ,因此得到:

    (7)θJ(θ)=ES,A[θlogπ(AS;θ)×A~]

    用采样值来估计 θJ(θ),则得到:

    (8)g^=E^t[θlogπθ(atst)A^t]

    其中 A^tA~ 的经验估计。

    使用自动微分软件的实现方法是构建一个目标函数,这个目标函数的梯度是策略梯度估计器 policy gradient estimator 。估计器 g^ 是通过对目标函数进行微分得到:

    (9)LPG(θ)=E^t[logπθ(atst)A^t]

    虽然使用相同的轨迹 trajectory 对这个损失函数 LPG 进行多步优化是很有吸引力的,但这样做的理由并不充分。根据经验,这种优化经常导致破坏性的 large policy update (见实验部分;结果没有显示,但与 "no clipping or penalty"setting 相似或更差)。

  2. Trust Region 方法:在 TRPO 方法中,一个目标函数(即,surrogate objective )被最大化,同时约束了 policy update 的大小。具体而言:

    (10)maxθE^t[πθ(atst)πθold(atst)A^t] subject to E^t[KL[πθold(st),πθ(st)]]δ

    其中:θold 为更新之前的策略参数,KLKL 距离函数,δ 为一个正的超参数。

    注意,对于 θ 而言,θold 就是一个常数,因此 maxθE^t[πθ(atst)πθold(atst)A^t] 等价于 maxθE^t[πθ(atst)A^t] 。从下式可以看出二者区别:

    (11)θlogπθ=θπθπθ,θπθπθold=θπθπθold

    因此,后者在分母上用更新之前的策略参数 θold 来代替 πθ

    在对目标函数进行线性近似、以及对约束进行二次近似之后,这个问题可以有效地使用共轭梯度算法进行近似解决。

    证明 TRPO 的理论实际上建议使用惩罚项而不是约束,也就是说,解决无约束的优化问题:

    (12)maxθE^t[πθ(atst)πθold(atst)A^tβ×KL[πθold(st),πθ(st)]]

    其中 βKL 惩罚项的系数。

    这源于这样一个事实:即某个 surrogate objective (计算状态上的最大 KL 值,即 max[KL(,)] ,而不是平均 KL 值,即 Et[KL(,)])对策略 π 的性能形成了一个下限(即一个悲观的下界)。

    TRPO 使用硬约束而不是惩罚,因为很难选择一个 β 值从而在不同问题上表现良好;或者甚至很难选择一个 β 值从而在单个问题中表现良好,因为在学习过程中问题的特性会发生变化。因此,为了实现我们一阶算法的目标(即,模仿对 TRPO 的单调改进 monotonic improvement ),实验表明,仅仅选择一个固定的惩罚系数 β 、以及使用 SGD 优化这个无约束优化问题的目标函数是不够的,还需要进行额外的修改。

1.2 PPO

1.2.1 Clipped Surrogate Objective

  1. rt(θ)probability ratio

    (13)rt(θ)=πθ(atst)ππold(atst)

    则有 r(θold)=1

    因此 TRPO 最大化一个 surrogate objective

    (14)LCPI(θ)=E^t[πθ(atst)πθold(atst)A^t]=E^t[rt(θ)A^t]

    上标 CPI 指的是保守的策略迭代 conservative policy iteration: CPI《Approximately optimal approximate reinforcement learning》)。

  2. 如果没有约束,最大化 LCPI(θ) 会导致过度的 large policy update 。因此,我们现在考虑如何修改目标从而惩罚那些使 rt(θ) 远离 1 的策略更新。我们提出的主要目标函数为:

    (15)r~t(θ)=clip(rt(θ),1ϵ,1+ϵ)LCLIP(θ)=E^t[min(rt(θ)A^t,r~t(θ)A^t)]

    其中 ϵ 为一个超参数,如 ϵ=0.2

    这个目标函数的动机如下。min 函数内的第一个项是 LCPI(θ),第二项是 clip(rt(θ),1ϵ,1+ϵ)A^t 。因此,通过裁剪 probability ratio 从而修改 surrogate objectiveLCLIP(θ) 消除了将 rt(θ) 移出区间 [1ϵ,1+ϵ] 的动机。最后,我们取 clipped objectiveunclipped objective 的最小值,所以最终的目标函数是 unclipped objective 的下限(即,悲观的下界)。

    注意:

    • θθold 附近的一阶展开时(其中 rt(θ)=1),LCLIP(θ)=LCPI(θ)
    • 然而,当 θ 远离 θold时,LCLIP(θ)LCPI(θ)变得不同。

    下图描绘了 LCLIP(θ) 中固定单个 t 值时,目标函数随着 r 的变化。注意 probability ratio r 被截断在 1ϵ1+ϵ,取决于 advantage A (这里指的是 advantage function ,而不是 Action )是正还是负。

  3. 下图提供了关于 surrogate objective LCLIP(θ) 的另一个直观来源。它显示了当我们沿着策略更新方向插值时,几个目标是如何变化的,这是由 continuous control problem 上的 proximal policy optimization (我们很快将介绍的算法)得到的。我们可以看到, LCLIP(θ)LCPI(θ) 的下限,针对策略更新过大带有惩罚。

1.2.2 Adaptive KL Penalty Coefficient

  1. 另一种方法,可以作为 clipped surrogate objective 的替代品,或者作为它的补充,是使用作用在 KL 散度上的惩罚,并调整惩罚系数从而使我们在每次策略更新时达到 KL 散度的某个目标值 dtarg 。在我们的实验中,我们发现 KL 惩罚的表现比 clipped surrogate objective 更差。然而,我们在这里包括它,因为它是一个重要的 baseline

  2. 在这个算法的最简单的实现中,我们在每次策略更新中执行以下步骤:

    • 执行 minibatch SGD 若干个 epoch 从而优化 KL-penalized objective

      (16)LKLPEN(θ)=E^t[πθ(atst)πθold(atst)A^tβ×KL[πθold(st),πθ(st)]]
    • 计算 d=E^t[KL[πθold(st),πθ(st)]]

      • 如果 d<dtarg/1.5,则 ββ/2
      • 如果 d>dtarg×1.5,则 ββ×2

    更新后的 β 值用于下一次策略更新。有了这个方案,我们偶尔会看到当 KL 散度与 dtarg 明显不同时,策略发生更新。然而,策略更新是罕见的,因为 β 会迅速调整从而使得 KL 散度靠近 dtarg

    上面的超参数 1.52 是启发式选择的,但该算法对它们并不十分敏感。β 的初始值是另一个超参数,但在实践中并不重要,因为算法会迅速调整 β

1.2.3 PPO

  1. 前面几节的 surrogate loss 可以通过对典型的策略梯度进行的微小改变来计算和微分。对于使用自动微分的实现方式,我们只需构建损失 LCLIP(θ)LKLPEN(θ) 来代替 LPG(θ) ,并对新的目标进行多步随机梯度上升。

    大多数用于方差缩减 variance-reducedadvantage-function estimators 的技术都使用了学到的状态价值函数 state-value function V(s),例如,generalized advantage estimation《High-dimensional continuous control using generalized advantage estimation》)、或者 《Asynchronous methods for deep reinforcement learning》中的 inite-horizon estimators 。如果使用一个在策略函数和价值函数之间共享参数的神经网络架构,我们必须使用一个损失函数来结合 policy surrogatevalue function error 。这个目标函数可以通过增加熵奖励 entropy bonus 来进一步增强,从而确保充分的探索,正如过去的工作 《Asynchronous methods for deep reinforcement learning》《Simple statistical gradient-following algorithms for connectionist reinforcement learning》 所建议的。结合这些项,我们得到以下目标,它在每轮迭代中都被最大化(或被近似地最大化):

    (17)LtCLIP+VF+S(θ)=E^t[min(rt(θ)A^t,r~t(θ)A^t)LCLIPc1×(Vθ(st)Vttarg)2LVF+c2S[πθ](st)]

    这里有两个函数:策略函数 πθ()、价值函数 Vθ(),它们共享相同的神经网络架构,因此具有相同的参数 θ 。此外,Vttargt 时刻的目标价值(例如,来自于一个独立训练的价值网络)。

    其中:

    • c1,c2 都是作为系数的超参数。

    • 第一项对应于 LCLIP,第二项对应于均方误差(作用于价值函数),第三项中 S 定义了 entropy bonus (鼓励 πθ(s) 的分布尽可能分散)。

      S[πθ](st)=aAπθ(ast)×logπθ(ast)

  2. 有一种策略梯度的实现方式,在 《Asynchronous methods for deep reinforcement learning》 中得到了推广并且很适合用于 RNN网络:在 T 个时间步中执行策略(其中 T 远小于 episode 长度),并使用收集的样本进行更新,这个时间段被称作 trajectory segment 。这种方式需要一个 advantage estimator ,该estimator 不会查看超出时间步 T 的信息。 《Asynchronous methods for deep reinforcement learning》 中使用的 estimator 为:

    (18)A^t=V(st)+r˘t+γr˘t+1++γTt+1r˘T1+γTtV(sT)

    其中: r˘tt 时刻的奖励; t 指定了在给定的长度为 Ttrajectory segment 中位于 [0, T] 之间的时间索引。

    γr˘t+1++γTt+1r˘T1+γTtV(sT) 作为 Q(st,at) 的估计,可以理解为:t 时刻的动作导致后续的一连串收益。

    推广这一选择,我们可以使用 generalized advantage estimation 的截断版本:

    (19)A^t=δt+(γλ)δt+1++(γλ)Tt+1δT1

    其中 δt=r˘t+γV(st+1)V(st)

    λ=1 时,这个generalized advantage estimation 就简化回原始的形式。

    一个使用固定长度 trajectory segment (长度为 T )的近似策略优化proximal policy optimization: PPO 算法如下所示。每次迭代,N 个(并行的)actors 中的每一个都收集 T timesteps 的数据。然后,我们在这 NT timesteps 的数据上构建 surrogate loss ,并用 minibatch SGD (或者通常为了更好的性能,用 Adam)对其进行优化 Kepochs

  3. PPO Actor-Critic Style

    • 输入:

      • 初始的策略 πθold
      • 外层迭代次数 Oactor 数量 N ,内层 trajectory segment 长度 T ,外层 minibatch size M
    • 输出:更新后的策略 πθ

    • 算法步骤:

      • 外层迭代:iteration=1,2,...O

        • 内层迭代:actor = 1,2,..., N

          在环境中执行策略 πθold ,指定 T timesteps

          计算 advantage estimates A^1,,A^T

        关于 θ 优化 surrogate loss ,一共优化 Kepoch ,其中 minibatch size MNT

        θoldθ

1.3 实验

1.3.1 Surrogate Objective 的比较

  1. 首先,我们在不同的超参数下比较几个不同的 surrogate objective

    (20) No clipping or penalty : Lt(θ)=Et[rt(θ)A^t]Clipping :Lt(θ)=Et[min(rt(θ)A^t,r~t(θ)A^t)]KL penalty :Lt(θ)=Et[rt(θ)A^tβ×KL[πθold,πθ]]
    • 对于 KL penalty ,可以使用一个固定的惩罚系数 β、或者使用 target KL value dtarg 的自适应系数。
    • 我们也尝试过在 log space (而不是线性空间)中进行剪裁,但发现其性能并没有提高。

    因为我们正在为每个算法搜索超参数,所以我们选择了一个计算量小的 benchmark 来测试算法。也就是说,我们使用了在OpenAI Gym 中实现的 7 个模拟机器人任务,它们使用了 MuJoCo 物理引擎。我们在每个任务上做 1M timesteps 的训练。除了用于裁剪的超参数( ϵ)和 KL penaltyβ,dtarg )都是我们超参数搜索而来,其他的超参数在下表中提供。

  2. 我们使用了一个全连接的MLP 来表示策略函数。这个 MLP 有两个隐藏层,隐层维度为 64 ,采用 tanh 非线性激活函数,输出高斯分布的平均值,并有可变的标准差。我们不在策略函数和价值函数之间共享参数(因此 c1irrelevant 的),我们也不使用 entropy bonus

    意思是 c1=0 ?因为策略函数和价值函数没有共享参数,因此没有 Vθ(st)

    每个算法都在所有 7 种环境下运行,每种环境下有 3 个随机种子。我们通过计算最后 100episodes 的平均总奖励来评估算法的每次运行。我们对每个环境的分数进行 shiftscale ,使随机策略给出的分数为 0、最好策略给出的分数为 1 ,并对 21 次运行进行平均,从而为每个算法 setting 产生一个单一的标量。

    结果如下表所示。请注意,对于 No clipping or penaltysetting ,得分是负的,因为在其中一个环境(half cheetah)上它导致了一个非常负的分数,这比最初的随机策略更糟糕。

    Clipping 的效果在这三者之间最好。

1.3.2 Continuous Domain 中的算法比较

  1. 接下来,我们将 PPO (具有 clipped surrogate objective)与文献中的其他几种方法进行比较,这些文献中的方法被认为对 continuous problems 有效。我们与以下算法的超参数调优的实现进行了比较:

    • trust region policy optimization《Trust region policy optimization》)。
    • cross-entropy method: CEM《Learning Tetris using the noisy cross-entropy method》)。
    • 带有自适应步长的平凡策略梯度。
    • A2C《Asynchronous methods for deep reinforcement learning》)。
    • 带有 trust regionA2C《Sample Efficient Actor-Critic with Experience Replay》)。

    A2C 代表 advantage actor critic ,是 A3C 的一个同步版本,我们发现它的性能与异步版本(即 A3C )相同或更好。对于PPO,我们使用了上一节中的超参数,其中 ϵ=0.2。我们看到,PPO 在几乎所有的 continuous control environments 上都优于以前的方法。

1.3.3 Continuous Domain 中的示例

  1. 为了展示 PPO 在高维连续控制问题 high-dimensional continuous control problems 上的性能,我们对涉及三维人形机器人的一组问题进行了训练,在这些问题中,机器人必须跑动、转向、并从地面上站起来,并且同时可能被方块击中。我们测试的三个任务是:

    • RoboschoolHumanoid :仅向前运动。
    • RoboschoolHumanoidFlagrun :每隔 200timestepposition of target 随机变化,或只要达到目标则 position of target 就随机变化。
    • RoboschoolHumanoid-FlagrunHarder:机器人被方块砸中,需要从地上站起来。

    Figure 5 是学习策略的静止画面,Figure 4 是这三个任务的学习曲线。下表中提供了超参数。在同期的工作中, 《Emergence of Locomotion Behaviours in Rich Environments》 使用PPO 的自适应 KL 变体来学习三维机器人的运动策略。

1.3.4 Atari Domain 中的算法比较

  1. 我们还在 Arcade Learning Environment 这个 benchmark 上运行 PPO ,并与 A2C《Asynchronous methods for deep reinforcement learning》)和 ACER《Sample Efficient Actor-Critic with Experience Replay》)的 well-tuned 实现进行比较。对于这三种算法,我们使用了与 《Asynchronous methods for deep reinforcement learning》 相同的策略网络架构。下表中提供了 PPO 的超参数。对于其他两种算法,我们使用了经过调优的超参数,从而在该 benchmark 上的性能最大化。

    下表和下图提供了所有 49 个游戏的结果和学习曲线。

  2. 我们考虑了以下两个评分指标:

    • 整个训练期间每个 episode 的平均奖励(有利于快速学习)。
    • 训练的最后 100episodes 的每个 episode 平均奖励(有利于最终表现)。

    下表显示了每种算法 "获胜" 的游戏数量,我们通过对三次试验的平均得分指标来计算胜利者。