第九章:连续动作空间的确定性策略

为处理连续动作空间的情况,D. Silver 等在文章《Deterministic Policy Gradient Algorithms》中提出了确定性策略的方法。

对于连续动作空间里的确定性策略, 并不是通常意义上的函数,它对策略参数 的梯度 也不复存在。第二章曾提到确定性策略可以表示为 ,这种表示可以绕过由于 并不是通常意义上的函数而带来的困难。

当策略是一个连续动作空间上的确定性策略 时,策略梯度定理为:

证明:确定性策略的状态价值和动作价值满足以下关系:

以上两式对 求梯度,有:

将 的表达式代入 的表达式中,再对 求关于 的期望,并考虑到 (其中 任取),有:

这样就得到了 到 的递推式,然后对于最终关注的梯度值 有:

式右边,证毕。

对于连续动作空间中的确定性策略,更常使用的是另外一种形式:

其中的期望是针对折扣的状态分布(discounted state distribution):

而言的。证明:

(在上式证明中,个人认为标红的项应该改为被积变量 更为恰当;因为 是随机变量 的可能取值,在对 求期望的积分表达式中,不应该出现随机变量 。)

一、同策确定性算法

根据策略梯度定理的确定性版本,将算法 8-1 中策略改进的迭代式和其他与策略相关的部分做相应修改,即可有连续动作空间中的确定性执行者 / 评论者算法。由于确定性策略输出确定,无法对环境进行充分探索,因此在训练的时候需要在策略的动作空间添加扰动实现探索,具体算法如下:

算法基本的同策确定性执行者评论者算法输入:环境(无数学描述)。输出:最优策略的估计。参数:优化器(隐含学习率),折扣因子,控制回合数和回合内步数的参数。(初始化)任意值,任意值。(带自益的策略更新)对于每个回合执行以下操作:(初始化累计折扣)。(决定初始状态动作对)选择状态,对加扰动(如正态分布随机变量扰动)得到动作。如果回合未结束,执行以下操作:(采样)根据状态和动作得到奖励和下一个状态;(执行)用加扰动得到;(估计回报);(更新价值)更新以减小,如;(策略改进)更新以减小,如;(更新累计折扣);(更新状态)。

在有些任务中,动作的效果经过低通滤波器处理后反映在系统中,而独立同分布的 Gaussian 噪声不能有效实现探索。例如在某个任务中,动作的直接效果是改变一个质点的加速度,如果在这个任务中用独立同分布的 Gaussian 噪声叠加在动作上,那么对质点位置的整体效果是在没有噪声的位置附近移动。这样的探索就没有办法为质点的位置提供持续的偏移,使得质点到比较远的位置。这类任务中,常常用 Ornstein Uhlenbeck 过程作为动作噪声,它是用下列随机微分方程定义的(以一维的情况为例):

其中 是参数( ), 是标准 Brownian 运动。当初始扰动是在原点的单点分布(即限定 ),并且 时,上述方程的解为:

(证明:略)

这个解的均值为 0 ,方差为 ,协方差为 ,(证明:略)。

对于 总有 ,所以 ,据此可知,使用 Ornstein Uhlenbeck 过程让相邻扰动正相关,进而让动作向相近的方向偏移。

(以上 Ornstein Uhlenbeck 过程的内容书中描述很少, 不好理解本质,所以证明省略了,后续需要再查阅相关资料。)

二、异策确定性算法

确定性执行者 / 评论者算法也可以利用行为策略得到其异策版本。但对于确定性算法,行为策略并不对目标策略绝对连续,不再简单使用重采样。考虑非确定性版本的异策执行者 / 评论者算法的策略梯度可表示为:

(根据第八章的内容,上式中左边的 应该已经包含在 中;另外在该式的推导中,没有想明白 怎么消去的。)

从这个角度看,可以通过最大化目标 实现迭代。确定性版本的异策执行者 / 评论者算法从这个角度出发,试图最大化 ,那么其梯度为:

这个表达式与同策的情形相比,期望运算针对的表达式相同,但是期望针对的分布不同,即行为策略确定了轨迹的分布,它体现在了期望上。由于行为策略能够促进探索,所以异策算法有时会比同策算法性能好。

基于以上,可以得到异策确定性执行者 / 评论者算法(Off-Policy Deterministic Actor-Critic, OPDAC)。由于在异策算法迭代更新策略参数时,对环境使用的是行为策略决定的动作,所以需要额外计算目标策略的动作;在更新价值函数时,采用的是 Q 学习,依然需要计算目标策略的动作。具体算法如下:

算法基本的异策确定性执行者评论者算法同算法(初始状态)选择状态。如果回合未结束,执行以下操作:(执行)用得到;(采样)根据状态和动作得到奖励和下一个状态;(估计回报);同算法(更新状态)。

将基本的异策确定性执行者 / 评论者算法和深度 Q 网络中常用的技术(经验回放、目标网络)结合,即可得到深度确定性策略梯度算法(Deep Deterministic Policy Gradient, DDPG),算法 9-3 给出了该算法。另外,在更新目标网络时,为了避免参数更新过快,还引入了目标网络的学习率 目标 。

算法深度确定性策略梯度算法(假设总是在动作空间内)输入:环境(无数学描述)。输出:最优策略的估计。参数:学习率,折扣因子,控制回合数和回合内步数的参数,目标网络学习率目标。(初始化)任意值,目标,任意值,目标。循环执行以下操作:(积累经验)从起始状态出发,执行以下操作,直到满足终止条件:对加扰动得到动作(如用正态分布随机变量扰动);执行动作,观测到收益和下一状态;将经验存储在经验存储空间。(更新)在更新的时机,执行一次或多次以下更新操作:(回放)从存储空间采样一批经验;(估计回报)目标目标,;(更新价值)更新以减小;(策略改进)更新以减小,如;(更新目标)在恰当的时机更新目标网络和目标策略,目标目标目标目标,目标目标目标目标。

S. Fujimoto 等人在文章《Addressing function approximation error in actor-critic methods》中给出了双重延迟深度确定性策略梯度算法(Twin Delay Deep Deterministic Policy Gradient, TD3),结合了深度确定性策略梯度算法和双重 Q 学习。

对于确定性策略梯度算法,动作已经由含参策略 决定了,双重网络则要由双重延迟深度确定性策略梯度算法维护两份学习过程的价值网络参数 和目标网络参数 目标 ()。在估计目标时,选取两个目标网络得到的结果中较小的那个,即 目标 ,具体算法如下:

算法双重延迟深度确定性策略梯度算法同算法(初始化)任意值,目标,任意值,目标,。同算法(扰动动作)为目标动作目标加受限的扰动,得到动作,;(估计回报),;(更新价值)更新以减小,;(策略改进)更新以减小,如;(更新目标)在恰当的时机更新目标网络和目标策略,目标目标目标目标(),目标目标目标目标。

三、案例:倒立摆控制(Pendulum-v0)

本节使用 Gym 库中的倒立摆控制问题(Pendulum-v0)。该问题的对象是一根一端固定的棍子,以固定点为原点,垂直向上为 轴方向,水平向右为 轴方向;观测值为棍子活动端的坐标 和角速度 ;动作为连续值,是一个施加在活动端的力矩 ;奖励值也是一个和状态与动作有关的连续值 ;任务是在给定的时间内(200 步)总收益越大越好,即相当于尽可能的保持木棍静止直立。其他更详细的数据可参阅源代码。

该问题的状态空间、动作空间、奖励空间都是连续的空间,问题整体的空间变得相当大;而且最大的力矩也无法将倒立摆从单边直接推至直立状态,因此智能体需要学会利用重力将倒立摆荡上至直立位置。

代码中类 OrnsteinUhlenbeckProcess 实现了 Ornstein Uhlenbeck 过程;智能体类 DDPG 实现了深度确定性策略梯度智能体类,以及智能体类 TD3 实现了双重延迟深度确定性策略梯度智能体类;前两者代码与书中基本一致,后者稍作修改,减少了一些代码量,但实现逻辑不变,此处不再展示。