DDPG(Deep Deterministic Policy Gradient)
深度确定性策略梯度:用到神经网络policy网络,输入状态,输出确定性策略(连续动作 一个具体的浮点数,没有概率的影响,所以当神经网络参数确定下来,输入相同状态,必然得到相同输出),更新参数用的策略梯度(单步更新)。
提出原因:为了让 DQN 可以扩展到连续的动作空间。
改进方式:直接在 DQN 基础上加了一个策略网络来直接输出动作值,所以 DDPG是一边学习 Q 网络,一边学习策略网络。(既有Q网络,又有策略网络的结构称为actor-critic)
实现:
1.优化策略网络:目的 是 输出的 确定性策略 使Q值最大,所以策略梯度构造的loss要加一个负号,最小化loss就是最大化Q
2.在DQN的基础上,所以还有Q网络要优化,和DQN优化一样,q_target是真实的reward r加上下一时刻的Q',让Q网络的输出值逼近q_target,即loss function 是MSE loss()均方差值,放到优化器Adam,自动最小化
3.为了稳定Q_target,DDPG 分别给 Q 网络和策略网络都搭建了 target network。两个网络也是固定一段时间的参数之后再跟评估网络同步一下最新的参数。
4.训练用到数据是(s,a,r,s'),和DQN一样的经验回放,off-policy
5.探索和利用:训练时加入噪音,最近的结果表明 不相关的、均值为 0 的 Gaussian noise 的效果好 原作者推荐 使用时间相关的 OU noise。测试时,是为了查看策略利用它学到的东西的表现,action中不加噪音。
TD3
双延迟深度确定性策略梯度(Twin Delayed DDPG,简称 TD3)
出现原因:DDPG 常见的问题是已经学习好的 Q 函数开始显著地高估 Q 值,然后导致策略被破坏了,因为它利用了 Q 函数中的误差。【?】
改进方式:
1.截断的双 Q 学习(Clipped Dobule Q-learning) 。
2.延迟策略更新(“Delayed” Policy Updates)
同步训练动作网络和评价网络,却不使用目标网络,会导致训练过程不稳定;但是仅固定动作网络时,评价网络往往能够收敛到正确的结果。因此 TD3 算法以较低的频率更新动作网络,通常每更新两次评价网络就更新一次策略。
3.目标策略平滑(Target Policy smoothing) 。
TD3 在目标动作中加入噪音,通过平滑 smoothing Q 沿动作的变化,使策略更难利用 Q 函数的误差。【?】
4. 探索和利用:与DDPG一样
是一种正则化方法
TD3 的作者给出了对应的实现:TD3 Pytorch implementation
强化学习的很多算法估计对参数和初始条件很敏感I(DDPG)