DDPG算法是训练一个deterministic policy来处理动作连续的问题,主要是基于DQN的思想,训练一个Q-functon来衡量动作的Q值。一般的DQN方法得到下面这个Q的最优值是很容易的,因为动作是离散的,取对应Q值最大的动作即可。但是在连续动作上就不太好处理了。
原始的Q-Learning的贝尔曼方程是:
贝尔曼方程可以用来学习最优的Q函数,目标函数为:
因为连续动作没法像离散动作那样直接得到Q的最大值,所以训练一个actor ,让这个actor输出的动作使Q最大。目标函数就变成了:
其中如下:
更新时先更新Q网络,再固定Q网络更新actor网络。
还有几个tricks:
- 训练跟DQN一样,使用经验池,一次取一个batch,off-line进行训练。经验池要大一些,可以使得取到的数据不相关。
- 使用target network,Q网络跟actor都要用,将变成
- target network的更新是“soft”的,,让target network的更新变慢,提高学习的稳定性。
- 通过在动作上加噪声的方法进行动作的探索,,是随机噪声。
总体算法流程: