本文主要内容来源于 Berkeley CS285 Deep Reinforcement Learning
在前面的章节中,我们讨论的Action 都是离散的; 比如玩游戏的时候, 上下左右。 但是在实际生活中, 有些Action 是连续的。 本节讨论在 Deep Q Learning 中如何处理连续型 Action。
我们要讨论的算法是 Deep Deterministic Policy Gradient(DDPG)。 有些人会把 DDPG 归为 Actor - Critic 的一种, 因为它包括了一个关于 Policy 的网络; 但是直觉它和 Double DQN 也很接近。
我们先列出一些 DDGP 的特点:
- DDPG 是 off-policy 算法
- DDPG 只能用于连续型的 Action
- DDPG 可以当做是 DRL 在连续性 Action 上的入门算法
为什么 DQN 不能处理连续型 Action
DQN 在处理连续型 Action 的时候, 有如下问题:
DNQ- 生成 Sample 放入Replay Buffer 的时候, 需要找到让 Q 最大的 Action。
- 计算 Target Value 的时候, 需要找到让Q 值最大的 Action。
因为我们不知道 这个函数,所以我们无法直接求解。 对于离散型 Action, 因为取值有限, 所以我们可以挨个尝试。 但对于连续型 Action, 这个办法就不可行了。
用神经网络计算最佳 Action:
DDPG 给出的解决方案是, 直接用一个函数来计算最佳 Action 。
遇事不决,神经网络这里 就是在 状态下的最佳 Action。 DDPG 吸收了 Double DQN 解决 Overestimate 的经验, 因此对于 也有一个对应的 作为 Target Network。
求解
使用来计算 Q 值的, 所以我们可以把它的收益函数写成:
对应的, 它的梯度可以写成:
求解
把 带入 Double DQN 的Target 函数, 我们就可以得到一个新的 Target 函数
新的Target 函数生成 Repla Buffer
在生成 Repla Buffer 的时候,我们就可以使用 。
Soft Update
Double DQN 在训练了 N 步以后,会用 Current Network 的参数直接替换 Target Network 的参数, 我们称之为 Hard Update。 DDPG 不会等N 步再替换, 而是每步都Update 参数, 但是它使用 Soft Update。 需要注意的是, 这时候有2个Current Network , 2 个 Target Network
- : 计算Q值的 Current Network
- : 计算Q值的 Target Network
- : 计算Action的 Current Network
- : 计算Action的 Target Network
另外, Soft Update 也会涉及到一个超参数 , 用来控制每次更新时,保留多少原始值(一般取 0.999)。
Soft Update
DDPG 伪代码
DDPG 有点复杂,贴2份伪代码, 第一份是 CS285的比较抽象, 第二份是 DeepMind 的。
DDPG Pseudocode
网友评论