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

为处理连续动作空间的情况,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 实现了双重延迟深度确定性策略梯度智能体类;前两者代码与书中基本一致,后者稍作修改,减少了一些代码量,但实现逻辑不变,此处不再展示。