文章目录
- DDPG(Deep Deterministic Policy Gradient)
- 离散动作 v.s. 连续动作
- 随机策略 v.s. 确定性策略
- DDPG
- Trick: target network + Replay Memory
- Exploration v.s. Exploitation
- Twin Delayed DDPG(TD3) “双”“延迟”深度确定性策略网络
DDPG(Deep Deterministic Policy Gradient)
离散动作 v.s. 连续动作
动作空间的可数性,很好理解。例如,离散:只有上下左右四个动作;连续:方向盘转多少度
随机策略 v.s. 确定性策略
- 对随机性的策略来说,输入某一个状态 s,采取某一个 action 的可能性并不是百分之百,而是有一个概率 P 的,就好像抽奖一样,根据概率随机 sample 一个动作。
- 而对于确定性的策略来说,它没有概率的影响。当神经网络的参数固定下来了之后,输入同样的 state,必然输出同样的 action,这就是确定性的策略。
常见的处理:
- 随机性策略神经网络的输出会加上 softmax 层, 以保证所有的动作概率和为1
- 确定性策略神经网络的输出先加一层
DDPG
- Deterministic 直接输出确定性动作
- 策略更新是单步的
- 策略网络参数是 ,Q 网络参数是
- 称这样的结构为
Actor-Critic
的结构。
优化:
- DQN只需优化Q网络,且类似于一个
regression problem
, - DDPG需要优化策略网络和Q网络
- 策略网络就是为了最大化Q值,所以
- Q网络的优化和DQN一样
Trick: target network + Replay Memory
注意,因为 DDPG 使用了经验回放这个技巧,所以 DDPG 是一个 off-policy
的算法。
Exploration v.s. Exploitation
DDPG
通过 off-policy
的方式来训练一个确定性策略。因为策略是确定的,如果 agent 使用同策略来探索,在一开始的时候,它很可能不会尝试足够多的 action 来找到有用的学习信号。为了让 DDPG 的策略更好地探索,我们在训练的时候给它们的 action 加了噪音(通常是均值为0的 gaussian noise)。但是测试的时候就不会加噪声了
Twin Delayed DDPG(TD3) “双”“延迟”深度确定性策略网络
虽然 DDPG 有时表现很好,但它在超参数和其他类型的调整方面经常很敏感。DDPG 常见的问题是已经学习好的 Q 函数开始显著地高估 Q 值,然后导致策略被破坏了,因为它利用了 Q 函数中的误差。
解决方法:引入三个技巧
- “双”:**截断的双Q学习(clipped double Q-learning):**TD3 学习两个 Q-function(因此名字中有 “twin”)。TD3 通过 minimize MSE 来同时学习两个 Q-function: 和 。两个 Q-function 都使用一个 target,两个 Q-function 中给出较小的值会被作为如下的 Q-target:
- “延迟”:延迟的策略更新(“Delayed” Policy Updates):相关实验结果表明,同步训练动作网络和评价网络,却不使用目标网络,会导致训练过程不稳定;但仅固定动作网络时,评价网络往往能够收敛到正确的结果。因此 TD3 算法以较低的频率更新动作网络,较高频率更新评价网络,通常每更新两次评价网络才更新一次策略。
- 目标策略平滑(Target Policy smoothing):TD3 引入了 smoothing 的思想。TD3 在目标动作中加入噪音,通过平滑 Q 沿动作的变化,使策略更难利用 Q 函数的误差。工作原理如下:
其中 ϵ 本质上是一个噪声,是从正态分布中取样得到的,即
TD3 的作者给出了对应的实现:TD3 Pytorch implementation