美文网首页深度强化学习
深度强化学习算法总结

深度强化学习算法总结

作者: 过去_未来 | 来源:发表于2020-04-13 18:28 被阅读0次

    学习 Deep Reinforcement Learning 的过程中,通过阅读经典算法的论文,并在 Pytorch 上实现这些算法,项目在 Github 上 https://github.com/RITCHIEHuang/DeepRL_Algorithms,这里做一些总结和记录。

    深度学习的发展为强化学习的发展带来了飞速发展,但随之而来的 Reinforcement Learning 也必须承受 Deep Learning 的痛点, 因此许多深度强化学习算法都是在填补 Reinforcement Learning 在 Deep Learning 中的坑 : (

    强化学习框架, 来源: Lil'Log

    1. 简介

    强化学习旨在与环境(Environment)交互中学习一个能够智能决策的智能体(Agent)。交互过程是一个时间序列:Environment 给定一个 Agent 的初始状态 s,Agent 根据当前状态s 选择一个动作 a, 并执行该动作 a,Environment 基于 Agent 的状态和动作 (s, a) 给出一个奖励信号(reward) r 和 Agent 下一时刻的状态 s', 然后这个过程不断重复。
    注意到 reward 在强化学习中是非常关键的指标,它指明了 Agent 的策略好不好,所以 Reinforcement 的优化都基于 reward

    强化学习的过程是一个时间上的序列,它会积累所有交互的历史,在 Deep Reinforcement Learning 中我们通常会用某种数据结构存储下这些交互的历史。由于交互过程无法实现并行,所以 Reinforcement Learning 会更加耗费算力,这种交互和我们人类的某种试错非常相似,也就是俗话说———“知错而能改,善莫大焉”,“前事不忘,后事之师” …… 因此,我们更坚信 Reinforcement Learning 是一种更可靠的方法,相比 Deep Learning 的黑盒,显得更符合人类本质 : )

    Reinforcement Learning 主要分为 Value based 和 Policy based 两种。
    Value based :主要学习一个 Q value 或者 Value (这两者之间是可以相互转换的),相较于 Policy based 方法更间接 (indirect);
    Policy based :直接对 Agent 选择动作的策略(Policy)进行优化,就省略了根据Value 来选择 Action 的过程,因此 Policy based 方法现阶段更受研究者的青睐,相应地也就发展出了许多算法。

    2. Value based Algorithm

    在 Deep Reinforcement Learning 的领域里,Value based 算法从 Q-learning 衍生出来,这里主要是基于 Deep Q-learning (之后我们称之 DQN) 发展出来的一系列算法。

    在几个 Gym 环境下验证一下算法性能:


    DQNs performance on gym

    2.1 Vanilla DQN

    这里的 Vanilla 不是香草,而是最原始、最低配的 DQN。它直接源于 Q-learning,但是利用 Deep Learning 参数化 Q 网络,记作 Q_\theta

    参数更新公式如下:
    \begin{aligned} y &= r(s_t, a_t) + \gamma \max Q_{\theta_t}(s_{t + 1}, a_{t + 1}) \\ \theta_{t + 1} &\leftarrow \theta_{t} - \alpha \nabla_{\theta_t} \left( y - Q_{\theta_t}(s_t, a_t) \right)^2 \end{aligned}

    算法伪代码如下:


    DQN Algorithm

    DQN 很简单,它和 Q-learning几乎一致, 但它总是使用 \max 来估计下一时刻的 Q-value,因此会造成 over-estimation,即其估计总会偏高。

    参考论文:
    [1]. Playing Atari with Deep Reinforcement Learning

    2.2 Double DQN

    上面提到DQN会存在 over-estimation 的问题,Double DQN就是从这个角度出发,为了减弱这种 over-estimation而设计的方法。它使用两个网络:行为网络\theta_{\beta} 和目标网络 \theta_{target},目标网络总是滞后于行为网络(每隔一定的步长更新),因此这种 over-estimation也相应滞后,从而达到缓解的目的。

    参数更新公式如下:
    \begin{aligned} y &= r(s_t, a_t) + \gamma \max Q_{\theta_t} \left(s_{t + 1}, \arg \max_{a} Q_{\theta_{target}} (s_{t+1},a) \right)\\ \theta_{t + 1} &\leftarrow \theta_{t} - \alpha \nabla_{\theta_t} \left( y - Q_{\theta_t}(s_t, a_t) \right)^2 \end{aligned}

    算法伪代码如下:


    Double DQN Algorithm

    参考论文:
    [1]. Deep Reinforcement Learning with Double Q-learning

    2.3 Dueling DQN

    Dueling DQN试图通过修改 Deep Q Network 的结构来达到对Q Value 的估计,具体来说将Q Value 拆解成 Value + Advantage Value,也就突出了在特定的 state 选择 action 所带来的 value 的影响。

    来一张图片直观地感受一下:


    Dueling DQN Network Structure

    Q Value 计算公式:
    Q(s, a) = V_{\theta_V}(s) + A_{\theta_A}(s, a) - \frac{1}{|\mathcal A|} \sum_{a'} A(s, a')

    至于训练可以采用 DQN 也可以采用 Double DQN的方式,因此就不再贴算法了。

    参考论文:
    [1]. Dueling Network Architectures for Deep Reinforcement Learning

    3. Policy based Algorithm

    这里主要罗列的算法是基于 Policy Gradient,看到 Gradient,就知道是梯度,这一系列的算法就是将 Policy 建立成一个分布 \pi_\theta(a|s),所谓 Policy Gradient 就是 \nabla_{\theta} \pi_\theta(a | s) 的各种变体。

    自己实现了以下算法,在 Mujoco 环境上跑了一个 Benchmark,可以直观地感受一下各种算法的性能。


    Performance on Mujoco

    3.1 REINFORCE

    REINFOCE 是 on-policy 最基础的 model-free 算法,它从理论上给出了状态转移模型无关的算法,并成为许多算法改进的起点,它在 Policy Gradient 系列的算法体系中起了开创性的作用。

    REINFORCE 策略参数更新公式
    \begin{aligned} \nabla_{\theta} J(\theta) &=\sum_{t=0}^{T-1} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} | s_{t}\right) G_{t} \\ \theta &= \theta + \alpha \nabla_{\theta} J(\theta) \end{aligned}

    下面给出算法流程:


    REINFORCE Algorithm, 来源: Toronto Lecture

    参考:
    [1]. Deriving Policy Gradients and Implementing REINFORCE
    [2]. http://www.cs.toronto.edu/~tingwuwang/REINFORCE.pdf

    3.2 Advantage Actor Critic

    也就是常听说的 A2C,和 REINFORCE 基本类似,不过这里为了降低 G_t 的方差,引入了 \hat A_t 来凸显动作本身的价值,同时确保了该估计仍是无偏的。

    3.3 Trust Region Policy Optimization

    3.4 Proximal Policy Optimization

    3.5 Deep Deterministic Policy Gradient

    3.6 Twin Delayed Deep Deterministic Policy Gradient

    3.7 Soft Actor Critic

    参考:
    [1]. Richard S. Sutton and Andrew G. Barto. Reinforcement Learning: An Introduction; 2nd Edition. 2017.
    [2]. OpenAI Spinning Up Documents.
    [3]. Lil'Log: A (Long) Peek into Reinforcement Learning

    相关文章

      网友评论

        本文标题:深度强化学习算法总结

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