第八章:执行者 / 评论者方法

将策略梯度算法和自益相结合:一方面,用含参函数近似价值函数,然后利用这个价值函数的近似值来估计回报值;另一方面,利用估计得到的回报值估计策略梯度,进而更新策略参数。这两方面又被称为评论者(critic)和执行者(actor),所以该类算法被称为执行者 / 评论者算法(actor-critic algorithm)。

一、同策执行者 / 评论者算法

执行者 / 评论者算法同样使用含参函数 表示偏好,以及取 为梯度方向进行迭代更新,其中 。J. Schulman 等人在文章《High-dimensional continuous control using generalized advantage estimation》中指出, 并不拘泥于以上形式,还可以为以下几种形式:

其中,前两者是使用价值函数 来估计回报的,而时序差分则是用 代表回报,再减去基线函数 以减小学习过程中的方差。但由于实际使用时的真实价值函数是不知道的,所以采用自益的方法用价值估计 作为回报,即 ,这里估计值 就是评论者。另外,只有采用了自益的方法,即用价值估计来估计回报,并引入了偏差,才是执行者 / 评论者算法;用价值估计来做基线并没有带来偏差,所以带基线的简单策略梯度算法不属于执行者 / 评论者算法。

当使用 作为回报估计,并取 时的同策算法称为动作价值执行者 / 评论者算法:

当使用 作为回报估计,并取 时的同策算法称为优势执行者 / 评论者算法;相当于在基本的执行者 / 评论者算法中引入基线函数 得到的,其中 是优势函数的估计。由于采用 估计优势函数需要两个函数分别表示 ,为了简化,可以使用 作为目标,这样优势函数的估计就变为单步时序差分的形式

如果优势执行者 / 评论者算法在执行过程中不是每一步都更新参数,而是在回合结束后用整个轨迹来进行更新,就可以把算法分为经验搜集和经验使用两个部分,这样的分隔可以让该算法同时有很多执行者在同时执行。每个执行者在一定的时机更新参数,同时更新策略参数 和价值参数 ,每个执行者的更新都是异步的,所以这样的并行算法称为异步优势执行者 / 评论者算法(Asynchronous Advantage Actor-Critic, A3C)。异步优势执行者 / 评论者算法中的自益部分,不仅可以采用单步时序差分,也可以使用多步时序差分;另外,还可以对函数参数的访问进行控制,使得所有执行者统一更新参数,这样的并行算法称为优势执行者 / 评论者算法(Advantage Actor-Critic, A2C)。

算法 8-2 和算法 8-3 分别给出了这两个算法(书中给出的 8-2 优势执行者 / 评论者算法似乎不是上面所提到的并行算法)

线

(原作者注:算法 8-3 的步骤 2.3.2 中没有考虑累计折扣是为了遵循论文原文。)

执行者 / 评论者算法能够和资格迹结合,与之前函数近似中使用资格迹的方法类似,这里的资格迹也是给对应的函数近似价值参数进行加权更新的。算法 8-4 给出了带资格迹的优势执行者 / 评论者算法。

二、基于代理优势的同策算法

在迭代过程中不直接优化期望目标,而是试图优化期望目标的近似——代理优势,这类算法称为面向代理优势的执行者 / 评论者算法。在很多问题上,这些算法会比简单的执行者 / 评论者算法得到更好的性能。

暂略

三、信任域算法

暂略

四、重要性采样异策执行者 / 评论者算法

执行者 / 评论者算法可以和重要性采样结合,得到异策的执行者 / 评论家算法(Off-Policy Actor-Critic, OffPAC)。用 表示行为策略,则梯度方向可由 变为 。这时,更新策略参数 时就应该试图减小 ,具体算法如下:

Z. Wang 等在文章《Sample efficient actor-critic with experience replay》中提出了带经验回放的执行者 / 评论者算法(Actor-Critic with Experiment Replay, ACER)。

暂略

五、柔性执行者 / 评论者算法

暂略

六、案例:双节倒立摆(Acrobot-v1)

本节使用 gym 库中的双节倒立摆(Acrobot-v1)作为实验对象。该对象由两节杆子连接组成,并将其中一根杆子未连接的一端固定住,环境的状态和动作取值在源代码中都有说明;奖励则是每执行一个动作返回 -1 ,回合结束时的奖励值为 0 ;当回合步数达到 500 或活动端(未固定的那节杆子)在垂直方向上高于原点(固定点)至少一节杆子的高度时,该回合结束;目的是以尽可能少的步数结束回合。另外,该对象的动力学方程式已知的,但非常复杂,即使知道该表达式,也不可能求出最优动作的闭式解。

代码中的智能体类 QAC 实现了动作价值执行者 / 评论者类,与书中代码基本一致。 AdvantageAC 实现了优势执行者 / 评论者类,稍微改写了下,使之继承于 QACElibilityTraceAC 实现了带资格迹的优势执行者 / 评论者类,但书中源代码在计算评论者的资格迹时,可能是由复制粘贴造成的疏忽,将 乘以了折扣 ;根据算法 8-4 ,折扣 只出现在行动者的资格迹计算中,因此将该操作按算法纠正了;不过经简单的两次测试发现,是否纠正似乎对结果影响并不明显。具体代码此处不再展示。

其他算法暂略