本文主要讲解有关 DDPG 算法的有关内容。
一、DDPG 算法
DDPG 是 Deep Deterministic Policy Gradient 的缩写,其中深度 (Deep) 代表 DQN;确定性(Deterministic)是指不再先生成各个动作的概率然后再选择概率最高的动作,而是直接输出一个确定性的动作;Policy Gradient 就不用解释了吧。
因为在 Actor-Critic 中连续状态中前后状态具有相关性,所以会导致神经网络只能片面的看待问题,甚至导致神经网络学不到东西、收敛慢。为了解决这个问题,DDPG 使用了类似于 DQN 的经验回放池。在实操中,一开始时先由 Actor 随机的采取动作,当经验回放池存储满后,再从里面随机选择 batch 个样本进行网络参数更新。
DDPG 可以看作是 Actor-Critic 算法和 DQN 算法的结合,该算法中还是有 Actor 和 Critic 两个网络。与 Actor-Critic 算法不同的是 Actor 网络直接采用 Critic 网络对自己动作的评估值 TD-error 作为 Actor 网络的损失函数。而两者的 Critic 网络的损失函数是相同的。
因为 DDPG 还结合 DQN 算法,所以 Actor 和 Critic 网络又分别有两个—— target 网络和 eval 网络。与 DQN 一样,eval 网络的参数保持最新,而 target 网络的参数隔一段时间后才会更新。
总结一下,Actor-target 网络和 Critic-target 网络是一对,前者做动作,后者对动作进行评估,然后前者再根据评估值改变自己选择动作的概率。同理 Actor-eval 网络和 Critic-eval 网络是一对,前者做动作,后者对动作进行评估,不同的是,前者没有自己的损失函数,而是靠 Actor-target 来更新自己的参数。而 Actor-target 网络和 Actor-eval 网络是一对,它们的存在是为了打乱观测值前后的相关性。同理 Critic-target 和 Critic-eval 这两个网络也是如此。
由于 Actor-Critic 算法中是先 Critic 更新参数然后再 Actor 更新参数,而 DDPG 与之相反,这使得 DDPG 中获得两个网络的输出和更新两个网络的参数这两个阶段是分离的(先同时得到两个网络的输出,再更新两个网络的参数)。所以说 DDPG 的网络结构写起来是比较蛋疼的,具体情况建议大家根据代码自己理顺两个网络中数据的传递流程。
二、DDPG 中的 Tricks
(1)soft-replacement
在把 eval 网络的参数赋值给 target 网络时,不再是 hard replacement,而是软替换 soft replacement,这样可以避免不收敛的问题。hard replacement 就是每隔一定的步数就将 eval 网络中的参数赋值给 target 网络,而 soft replacement 就是每一步都对 target 网络的参数更新一部分。
(2) 为 action 增加噪声
这样可以增加网络的鲁棒性。
三、DDPG 算法流程
- 本文作者: 俎志昂
- 本文链接: zuzhiang.cn/2019/10/28/DDPG/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!