DDPG(Deep Deterministic Policy Gradient)是连续控制领域的经典强化学习算法,是结合PG和DQN的一种off-policy方法。
可以看作是DQN的改进,在DQN的Q网络基础上引入Actor网络预测一个使Q值最大的动作值,从而能够应对连续动作空间,且使用了DQN中的目标网络和经验复现技巧。
Deep指深度网络,Deterministic指确定性策略也就是Actor输出的是一个动作值而不是动作概率分布,虽然叫Policy Gradient但却是AC架构。
1. Critic网络
- 作用:估计Q值,而不是A2C中估计V值,所以其实是DQN中的Q网络
- 输入:状态,动作
- 输出:Q值
- 目标:使Q值估计尽可能准确
- 所以Loss就是TD_error,当前预测值与目标值的最小均方误差
2. Actor网络
- 作用:提出一个给定状态的动作
- 输入:状态
- 输出:一个动作值
- 目标:选择Q值尽可能高的动作,也就是最大化Q值
- 所以Loss就是-Q(s, a)
3. 主要技巧
- 用了两个目标网络,从而增加训练的稳定性。所以一共是四个网络
- 用了ReplayBuffer,存储(s, a, r, s')
- 训练时给Actor输出的action增加均值为0的高斯噪声后再执行,有利于探索
4. 补充
- 随机性策略:输出动作的概率分布,再从中采样得到动作。最后一层通常用Softmax,之后用Categorical分布采样(如果只有两个动作也可以不用softmax,直接输出其中一个动作的概率,之后用Bernoulli分布采样)。
- 确定性策略:输出一个动作。同样的state必然输出同样的action。最后一层通常用双曲正切函数tanh映射到(-1, 1),之后再根据实际动作取值范围进行scale。
- 伪代码中两个目标网络更新公式里的tao,以及actor和critic各自的学习率,都可以调整
图片来源:
https://blog.csdn.net/hezzfew/article/details/109534023
https://zhuanlan.zhihu.com/p/84321382