最“全”面的算法介绍:寻根究底探讨策略梯度

本文旨在为强化学习——策略梯度中最重要的一类控制算法提供简明而全面的介绍。作者将逐步讨论这些算法,从基础得出众所周知的结果。本文针对的是希望学习强化学习中任何主题的读者。

最“全”面的算法介绍:寻根究底探讨策略梯度

介绍

强化学习(RL)指的是学习问题和机器学习的子领域,近来由于很多原因,这一领域备受大家关注。(比如说,基于RL的系统打败了Go的世界冠军、RL掌握了各种各样的Atari游戏等等。)科研人员更是直言它富有极大的发展潜力。现在让我们更进一步的走进它。

强化学习是对学习问题的最一般的描述,其目的是使长期目标最大化。系统描述由一个代理组成,该代理通过其在离散时间步骤中的操作与环境交互获得奖励。

典型代理——环境反馈回路如下图所示。

最“全”面的算法介绍:寻根究底探讨策略梯度

强化学习的特征与人类如何有效地行动惊人地相似:体验世界、积累知识并利用所学来处理新情况。像许多人一样,这一吸引人的"天性"(尽管是一个更加棘手的表述)让作者兴奋,希望你也是如此。

背景和定义

RL背后的大量理论存在于"奖励假设"的假设之下,该假设概括地指出,代理人的所有目标都可以用一个叫做奖励的单一标量来解释。这点的确存在争议,但目前还很难反驳。更正式地说,奖励假设如下:

奖励假设即所有我们所说的目标和目的都可以被认为是所接收标量信号(称为奖励)的累积和的期望值的最大化。

作为一名RL从业者和研究人员,一个人的工作就是为一个给定的问题寻找一套正确的奖励,这个问题称为奖励塑造。

代理人必须通过一个称为马尔可夫决策过程的理论框架来进行正式工作,该过程由在每个状态下要做出的决策(要采取何种行动?)组成。这就产生了一系列的状态。这其中,行动和奖励被称为轨迹,

最“全”面的算法介绍:寻根究底探讨策略梯度

目标是使这套奖励最大化。更正式地说,我们看看马尔可夫决策过程框架:

马尔可夫决策过程:(折扣)马尔可夫决策过程(MDP)是一个元组(S,A,R,p,γ),例如

最“全”面的算法介绍:寻根究底探讨策略梯度

其中S_t,S_(t + 1)∈S(状态空间)、A_(t + 1)∈A(动作空间)、R_(t + 1)、R_t∈R(奖励空间)流程、G_t是折扣收益。

简而言之,MDP定义了转换到新状态的概率,在给定当前状态和执行操作的情况下获得一些奖励。这个框架在数学上是令人满意的,因为它是一阶马尔可夫。这是一种奇特的说法,即接下来发生的任何事情都只依赖于现在而不是过去。这个框架的另一个重要部分是折扣因子γ。它总结随着时间的推移而获得的奖励,对未来的奖励具有不同程度的重要性,得出折扣奖励的概念。正如人们所预期的那样,更高的γ会导致未来奖励的更高敏感度。然而,在γ= 0的极端情况下不考虑未来的奖励。

环境p的动态不在代理人的控制之下。为了内化这一点,可以想象站在一个有风的环境中的场地,并每秒都在四个方向中的一个方向迈出一步。风太大了,你很难朝着与北、东、西、南完全一致的方向移动。风场的动力学p给出了下一秒进入到新状态的概率。这当然不在你的(代理人)控制之下。

但是,如果你以某种方式了解了环境的动态,并朝着除北、东、西或南以外的方向移动呢?马尔可夫策略是代理人控制的。当代理人遵循策略π时,它会产生称为轨迹的状态、行为和奖励顺序。

策略:策略被定义为给定状态的行为的概率分布

最“全”面的算法介绍:寻根究底探讨策略梯度

考虑到所有这些定义,让我们看看RL问题是如何形式化的。

策略梯度

强化学习代理的目标是在遵循策略π时最大化"预期"奖励。像任何机器学习设置一样,我们定义一组参数θ(例如复数多项式的系数或者神经网络中单位的权重和偏差)。用参数表示这个策略π_θ(为简洁起见也写成π)。如果我们将给定轨迹τ的总奖励表示为r(τ),我们可以得出以下定义。

强化学习目标:根据参数化策略最大化"预期"的奖励

最“全”面的算法介绍:寻根究底探讨策略梯度

所有有限的MDP至少有一个最优策略(可以给出最大的奖励),在所有的最优策略中至少有一个是固定的和具有确定性的。

像任何其他机器学习问题一样,如果我们可以找到最大化J的参数θ,我们就能解决这个问题。在机器学习文献中解决这个最大化问题的标准方法是使用梯度上升(或下降)。在梯度上升中,我们使用以下规则继续浏览参数

最“全”面的算法介绍:寻根究底探讨策略梯度

挑战来了,我们如何找到包含期望的目标梯度?积分在计算环境中总是很糟糕。我们需要找到解决方法。第一步是从预期的扩展开始重新开始梯度(略有滥用符号)。

最“全”面的算法介绍:寻根究底探讨策略梯度

策略梯度定理:期望奖励的导数是策略π_θ对数的奖励和梯度乘积的期望值

最“全”面的算法介绍:寻根究底探讨策略梯度

现在,让我们扩展π_θ(τ)的定义。

最“全”面的算法介绍:寻根究底探讨策略梯度

为了理解这个计算,让我们分解它 P代表在某些状态s_0中开始的遍历分布。从那时起,我们应用概率乘积法则,因为每个新的行动概率都与前一个概率无关。在每个步骤中,我们使用策略π_θ和环境动力学采取一些行动决定要转换过渡到新状态。乘以T用步长表示轨迹的长度。等同地,取log:

最“全”面的算法介绍:寻根究底探讨策略梯度

这个结果本身很美,因为这告诉我们,我们并不需要知道状态P的遍历分布和环境动力学p。这是至关重要的,因为对于大多数实际目的来说,很难对这两个变量进行建模。因此,所有使用此结果的算法都被称为"无模型算法",因为我们不会"模拟"环境。

"期望"(或者相当于一个积分项)仍然存在。一个简单而有效的方法是对大量轨迹进行采样并将其平均。这是一个近似值,但也是一个没有偏差的值,类似于近似在连续空间上的一个积分,其中有一组离散的点。这种技术在形式上被称为马尔可夫链蒙特卡罗(MCMC),广泛用于概率图形模型和贝叶斯网络来近似参数概率分布。

我们以上处理中未触及的一个术语是对轨迹r(τ)的奖励。即使参数化策略的梯度不依赖于奖励,该术语也会在MCMC采样中增加很多方差。实际上,每个R_t都有T个方差来源。然而,我们可以使用奖励G_t,因为从优化RL目标的角度来看,过去的奖励没有任何贡献。因此,如果用折现奖励G_t代替r(τ),我们得到称为REINFORCE的经典算法策略梯度算法。随着我们进一步讨论,这并不能完全解决这个问题。

最“全”面的算法介绍:寻根究底探讨策略梯度

增强(基线)

重申一下,REINFORCE算法计算策略梯度为

增强梯度

最“全”面的算法介绍:寻根究底探讨策略梯度

我们仍然没有解决采样轨迹中的方差问题。解决此问题的一种方法是重新设计上面定义的RL目标,即最大似然估计(Maximum Likelihood Estimate)。在MLE设置中,简单地说,无论初始估计多么糟糕,在数据极限内,模型都会收敛到真实参数。然而,在数据样本具有高方差的情况下,稳定模型参数可能是非常困难的。在我们的情况下,任何不稳定的轨迹都可能导致策略分配出现次优变化。奖励的规模加剧了这个问题。

因此,我们试着通过引入另一个称为基线b的变量来优化奖励的差异。为了保持梯度估计无偏差,基线独立于策略参数。

基线增强

最“全”面的算法介绍:寻根究底探讨策略梯度

我们必须证明梯度与附加术语(轻微滥用符号)保持不变。

最“全”面的算法介绍:寻根究底探讨策略梯度

在理论和实践中使用基线可以减少方差,同时保持梯度仍然无偏差。基线可以使用状态值的当前状态。

状态值:状态值被定义为在策略π_θ之后给定状态的预期奖励。

最“全”面的算法介绍:寻根究底探讨策略梯度

Actor—Critic方法

找到一个好的基线本身就是一个挑战,而计算它又是另一个挑战。相反,让我们使用参数ω近似得到V ^ω_(s)。 所有使用可学习的V ^ω_(s)来引导梯度的算法被称为Actor-Critic算法,因为这个值函数估计像"演员"(代理人的策略)的"批评者"(好的v / s坏值)。 然而这一次,我们必须计算演员和批评者的梯度。

一步引导奖励:单步引导奖励获取即时奖励,并通过使用轨迹中下一状态的引导值估计来估计奖励。

最“全”面的算法介绍:寻根究底探讨策略梯度

Actor—Critic策略梯度

最“全”面的算法介绍:寻根究底探讨策略梯度

不言而喻,我们还需要更新评论者的参数ω。这里的目标通常被认为是均方损失(或较不严重的Huber损失)并且使用随机梯度下降来更新参数。

批评者的目标

最“全”面的算法介绍:寻根究底探讨策略梯度

确定性策略梯度

通常,在机器人技术中,可控制策略是可用的,但这些操作不是随机的。在这样的环境下,很难像前面看到的那样建立随机策略。一种方法是将噪声注入控制器中。更重要的是,随着控制器维数的增加,先前看到的算法开始变得不适用。由于这种情况,我们不应该直接学习大量的概率分布,而是直接了解给定状态的确定性行为。因此,以最简单的形式,得到最大化目标就是我们所需要的。

确定性行为

最“全”面的算法介绍:寻根究底探讨策略梯度

然而,对于大多数实际目的而言,这种最大化操作在计算上是不可行的。相反,我们希望做的是构建一个函数近似器来近似这个argmax,因此称其为确定性策略梯度(DPG)。

我们用下面的等式来总结这一点。

DPG目标

最“全”面的算法介绍:寻根究底探讨策略梯度

确定性策略梯度

最“全”面的算法介绍:寻根究底探讨策略梯度

这个数值变成了我们可以用MCMC抽样再次估计的另一个期望值。

通用强化学习框架

现在我们可以得出一个通用的算法,以查看我们学到的所有东西是如何结合在一起的。所有新算法通常都是下面给出的算法的变体

最“全”面的算法介绍:寻根究底探讨策略梯度

代码

对于熟悉Python的读者来说,这些代码片段旨在成为上述理论思想的更具体的表示。这些已经都是从实际代码的学习循环中取出来的。

策略梯度(同步Actor—Critic)

最“全”面的算法介绍:寻根究底探讨策略梯度

深层确定性策略梯度

最“全”面的算法介绍:寻根究底探讨策略梯度

完整的实现

可以在atactivatedgeek / torchrl上查看完整管道的完整模块化实施。


分享到:


相關文章: