美文网首页
深度强化学习(14)DDPG & 连续型Action - Dee

深度强化学习(14)DDPG & 连续型Action - Dee

作者: 数科每日 | 来源:发表于2022-02-18 06:46 被阅读0次

    本文主要内容来源于 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

    相关文章

      网友评论

          本文标题:深度强化学习(14)DDPG & 连续型Action - Dee

          本文链接:https://www.haomeiwen.com/subject/sgeelrtx.html