3.4 Off-policy Actor-Critic: DPG, DDPG
category
type
status
slug
date
summary
tags
password
icon
本系列为学习赵世钰老师的《强化学习的数学原理》所作的学习笔记.
之前我们介绍的策略梯度方法:REINFORCE, QAC, and A2C, 都是On-policy方法. A2C的梯度更新公式中:
我们利用策略去获得采样数据, 并不断的更新. 因此它既是behavior policy也是target policy.
但是如果我们想要从已有的策略和数据中学习到经验, 然后更新我们的策略, 也就是Off-policy方法. 我们可以使用Importance sampling来实现这点.
3.4.1 Importance sampling
3.4.1.1 定义
假设有一个随机变量, 它服从分布, 我们的目标是求期望.
我们有一组采样数据, 但是它服从分布. 我们是否可以利用分布的采样DPG数据, 来估计分布的期望呢? 这就是Importance sampling解决的问题.
对做以上变换, 并将定义为, 我们发现两个不同分布的期望是相等的.
因此, 只需要求解的期望即可, 我们将采样数据的均值定义为
显然是可以近似的, 因此将其展开:
被定义为mportance weight, 如果原始分布的概率, 代表这个样本比较重要.
如果我们已经知道了, 那为什么不直接计算期望呢?
因为我们能获取每个样本的原始分布概率, 但是不一定有它的完整解析式(比如当概率由神经网络输出时). 或者是非常大时, 无法计算期望, 用样本代替.
3.4.1.2 例子
假设有离散变量, 服从分布:
它的期望是:
如果新的分布为:
它的期望是:
在分布下对数据进行采样, 如下图:

样本为1和-1时它的值分别为:
计算所有采样的期望, 如上图, 可以看到它最后趋近于原始期望0.
3.4.2 off-policy的策略梯度理论
3.4.2.1 定义
基于Importance sampling, 定义是behavior policy. 目标是学习策略产生的数据, 更新目标策略. 我们的目标函数定义为:
其中是策略时状态值的静态分布, 它的梯度更新公式为:
其中状态分布的定义为:
其中是在策略下, 从状态到的discounted总概率:
我们可以看到off-policy的梯度公式与之前有两点不同:
- 动作服从分布:
- 添加了importance weight
因此我们可以通过策略产生的采样数据, 来近似计算策略的梯度.
3.4.2.2 算法流程
我们运用上一节介绍的A2C方法, 添加基线:
并将其用状态值近似:
对应的随机梯度更新公式为:
类似的, 可以用TD error近似:
完整的算法伪代码如下:

3.4.3 确定性 actor-critic
3.4.3.1 定义
到目前为止,在策略梯度方法中使用的策略都是随机的. 因为他们每个动作都有对应的概率:. 但是如果策略是确定性的呢? 即状态只对应唯一的动作:
需要说明的是, 函数的输入是状态和参数, 输出是动作, 它是从状态空间到动作空间的映射. 它可以是线性函数(DPG), 也可以是神经网络(DDPG).
确定性策略的梯度公式为:
是状态分布.
3.4.3.2 算法流程
动作函数的参数梯度更新公式:
应用随机梯度之后:
算法完整流程:

需要指出的是, 确定性策略的梯度公式不涉及到动作, 因为动作是由状态直接决定的, 不需要对动作进行采样.
我们知道, Sarsa中更新需要动作值需要输入:, 其中. 这些数据中:
- 是与环境交互采样数据, 它由策略生成;
- 必须由策略生成, 因为在值更新中, 新策略需要由它们来计算
因此是target policy, 是behavior policy, 确定性策略梯度法是off-policy的.
原始的策略梯度法是用线性函数来拟合的, 也就是DPG, 后来引入了神经网络拟合, 也就是DDPG.
上一篇
动手学控制理论
下一篇
端到端-理论与实战视频课程
Loading...