欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

深入讲解:DDPG算法与连续动作的深度Q学习(原系列第14部分:Deep Q Learning 第4部分)

最编程 2024-07-29 15:00:56
...

本文主要内容来源于 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
  1. 生成 Sample 放入Replay Buffer 的时候, 需要找到让 Q 最大的 Action。
  2. 计算 Target Value 的时候, 需要找到让Q 值最大的 Action。

因为我们不知道 Q_{\phi}(s_{t}, a_{t}) 这个函数,所以我们无法直接求解。 对于离散型 Action, 因为取值有限, 所以我们可以挨个尝试。 但对于连续型 Action, 这个办法就不可行了。

用神经网络计算最佳 Action:

DDPG 给出的解决方案是, 直接用一个函数来计算最佳 Action 。

遇事不决,神经网络

这里 \mu_{\theta}(s) 就是在 s 状态下的最佳 Action。 DDPG 吸收了 Double DQN 解决 Overestimate 的经验, 因此对于 \mu_{\theta}(s) 也有一个对应的 \mu_{\theta^{\prime}}(s) 作为 Target Network。

求解 \mu_{\theta}(s)

\mu_{\theta}(s) 使用来计算 Q 值的, 所以我们可以把它的收益函数写成:

J_{\mu}=E[Q(s, \mu(s))] = \frac{1}{N} \sum_{i=1}^{N} Q\left(s_{i}, \mu\left(s_{i}\right)\right)

对应的, 它的梯度可以写成:

\nabla_{\theta^{\mu}} J_{\mu}=E\left[\nabla_{\mu} Q(s, \mu(s)) \nabla_{\theta^{\mu}} \mu(s)\right]

求解 Q_{\phi}(s, a)

\mu_{\theta}(s) 带入 Double DQN 的Target 函数, 我们就可以得到一个新的 Target 函数

新的Target 函数
生成 Repla Buffer

在生成 Repla Buffer 的时候,我们就可以使用 \mu_{\theta}(s)

Soft Update

Double DQN 在训练了 N 步以后,会用 Current Network 的参数直接替换 Target Network 的参数, 我们称之为 Hard Update。 DDPG 不会等N 步再替换, 而是每步都Update 参数, 但是它使用 Soft Update。 需要注意的是, 这时候有2个Current Network , 2 个 Target Network

  • Q_{\phi}(s, a) : 计算Q值的 Current Network
  • Q_{\phi^{\prime}}(s, a) : 计算Q值的 Target Network
  • \mu_{\theta}(s) : 计算Action的 Current Network
  • \mu_{\theta^{\prime}}(s) : 计算Action的 Target Network

另外, Soft Update 也会涉及到一个超参数 \tau, 用来控制每次更新时,保留多少原始值(一般取 0.999)。

Soft Update
\begin{aligned} &\theta_{\operatorname{targ}}^{\mu} \leftarrow \tau \theta_{\operatorname{targ}}^{\mu}+(1-\tau) \theta^{\mu} \\ &\theta_{\operatorname{targ}}^{Q} \leftarrow \tau \theta_{\operatorname{targ}}^{Q}+(1-\tau) \theta^{Q} \end{aligned}

DDPG 伪代码

DDPG 有点复杂,贴2份伪代码, 第一份是 CS285的比较抽象, 第二份是 DeepMind 的。

DDPG
Pseudocode

参考代码 GitHub


参考资料
  1. Deep Deterministic Policy Gradient
  2. Deep Deterministic Policy Gradient (DDPG): Theory and Implementation