zoukankan      html  css  js  c++  java
  • 强化学习的算法分类

    强化学习——强化学习的算法分类

    上一篇文章回顾了强化学习的核心概念,这里继续通过Open AI 的Spinning Up 项目总结强化学习(RL)的算法,通过分类和对比的方法系统介绍强化学习的算法。

    1. 算法分类

     
    现代强化学习算法分类


    ---图片来自Open AI Spinning up 项目---

    由于强化学习是一个更新速度非常快的领域,所以准确地全面地分类是相当困难的,Spinning up 项目组给出的这个分类虽然并不全面,但是对初学者来说是非常有用了。

    可以看出强化学习可以分为Model-Free(无模型的) 和 Model-based(有模型的) 两大类。Model-Free 又分成基于Policy Optimization(策略优化)和Q-learning。Model-based 又分为模型学习(Learn the Model)和给定模型(Given the Model)两大类。

    部分算法的全名和论文链接见文末附录

    2. Model-Free vs Model-Based

    在之前的文章也阐述过两者的区别,当时主要是以引入Model-based的算法的角度简略地比较了两者的优劣。Spinning up 项目组也对两者的区别和优劣做了系统的比较。

    • 两个算法的区别主要是Agent是否知道或要计算出环境的模型 。
    • 拥有模型的好处是:Agent可以根据模型看到会发生什么,并提前规划(Planning)行动路径。
    • 拥有模型的坏处是,真实模型和学习到带模型是有误差的,这种误差会导致Agent虽然在模型中表现很好,但是在真实环境中可能打不到预期结果。
    • Model-Free的算法往往更易于实现和调整,截止到目前(2018年9月),Model-Free的算法更受欢迎。

    3. 要学习什么(学习对象)

    RL学习的内容无非是如下几个方面

    • 策略,不管是随机的还是确定性的
    • 行动价值函数(Q (s,a))
    • 值函数(V(s))
    • 环境模型
    3.1. Model-Free 学习对象

    Spinning Up 项目组就是根据学习的对象分成Policy Optimization(对象是策略),和Q-Learning(对象是Q(s,a))的。

    (1) Policy Optimization
    基于策略的强化学习就是参数化策略本身,获得策略函数πθ(a|s), 我们训练策略函数的目标是什么呢?是获得最大奖励。优化策略函数就是优化目标函数可以定义为J(πθ).

    Policy Optimization 通常是on-policy的,也就是每次更新策略采用最新策略产生的数据。

    Policy Optimization的经典例子包含A2C / A3C,和PPO

    (2) Q-Learning

    • Q-Learning 就是通过学习参数化Q函数Qθ(s,a)从而得* 到最优Q*(s,a)的。
    • 典型地方法是优化基于Bellman方程的目标函数。
    • Q-Learning 通常是Off-Policy的,这就意味着训练的数据可以是训练期间任意时刻的数据。

    Q-Learning 的经典例子包含DQNC51

    3.2. Policy Optimization和Q-Learning 的权衡与融合

    Policy Optimization直接了当地优化你想要的对象(策略),因此Policy Optimization稳定性和可信度都较好,而Q-learning是采用训练Qθ的方式间接优化策略,会遇到不稳定的情况。但是Q-learning的优点是利用数据的效率较高(Off-policy的原因?)

    Policy Optimization和Q-Learning并非水火不相容,有些算法就融合和平衡了两者的优缺点:

    • DDPG, 同时学出一个确定性策略和Q函数,并用他们互相优化。
    • SAC 是一种变体,它使用随机策略、熵正则化和一些其它技巧来稳定学习,同时在 benchmarks 上获得比 DDPG 更高的分数。

    4. Model-Based RL学习对象

    Model-Based RL不像Model-Free RL那样容易分类,很多方法都有交叉。Spinning up 项目组给出了几个例子,但他们也声称这些例子是无法全部覆盖Model-Based强化学习的,这些例子中模型要么是已知给定的,要么是通过学习得到的。

    4.1 纯动态规划(Pure Planning)

    Pure Planning 是一个基础的算法,其策略并不显示的表达出来,而是使用规划技术来选择行动。比如 模型预测控制 (model-predictive control, MPC)。

    在MPC中:
    第一步:Agent首先观察环境,并通过模型预测出所有可以行动的路径(路径包含多连续个行动)。
    第二步:Agent执行规划的第一个行动,然后立即舍去规划剩余部分。
    第三步:重复第一、二步。

    例如,MBMF 在一些深度强化学习的标准基准任务上,基于学习到的环境模型进行模型预测控制

    4.2 Expert Iteration(专家迭代)

    这个算法是Pure Planing 的升级版,它将策略显示地表达出来,并通过学习得到这个最优策略π*θ(a|s)

    Agent用规划算法(类似于MT树搜索)在模型中通过采样生成候选行动。通过采样生成的行动比单纯通过策略本身生成的行动要好,所以它是"专家"。通过"专家"指导,迭代更新并优化策略。

    • ExIt 算法用这种算法训练深层神经网络来玩 Hex
    • AlphaZero 这种方法的另一个例子
    4.3 免模型方法的数据增强

    这个方法是将模型采样中生成的数据用来训练Model-Free的策略或者Q函数。训练的数据可以单纯是模型采样生成的,也可以是真实经历的数据与模型采样数据的结合。

    • MBVE 用假数据增加真实经验
    • World Models 全部用假数据来训练智能体,所以被称为:“在梦里训练”
    4.4 将规划嵌入策略

    该算法是将规划(Planning)嵌入策略中作为策略的一个子程序,这样在用任意Model-Free训练的过程中,如何和何时规划也被学习到了。这个算法的优点就是当模型与现实环境存在较大的偏差,策略也可以选择忽略规划。

    • 更多例子,参见 I2A

    附录:部分算法全名及论文链接
    A2C / A3C (Asynchronous Advantage Actor-Critic): Mnih et al, 2016
    PPO (Proximal Policy Optimization): Schulman et al, 2017
    TRPO (Trust Region Policy Optimization): Schulman et al, 2015
    DDPG (Deep Deterministic Policy Gradient): Lillicrap et al, 2015
    TD3 (Twin Delayed DDPG): Fujimoto et al, 2018
    SAC (Soft Actor-Critic): Haarnoja et al, 2018
    DQN (Deep Q-Networks): Mnih et al, 2013
    C51 (Categorical 51-Atom DQN): Bellemare et al, 2017
    QR-DQN (Quantile Regression DQN): Dabney et al, 2017
    HER (Hindsight Experience Replay): Andrychowicz et al, 2017
    World Models: Ha and Schmidhuber, 2018
    I2A (Imagination-Augmented Agents): Weber et al, 2017
    MBMF (Model-Based RL with Model-Free Fine-Tuning): Nagabandi et al, 2017
    MBVE (Model-Based Value Expansion): Feinberg et al, 2018
    AlphaZero: Silver et al, 2017

  • 相关阅读:
    LeetCode 40. 组合总和 II(Combination Sum II)
    LeetCode 129. 求根到叶子节点数字之和(Sum Root to Leaf Numbers)
    LeetCode 60. 第k个排列(Permutation Sequence)
    LeetCode 47. 全排列 II(Permutations II)
    LeetCode 46. 全排列(Permutations)
    LeetCode 93. 复原IP地址(Restore IP Addresses)
    LeetCode 98. 验证二叉搜索树(Validate Binary Search Tree)
    LeetCode 59. 螺旋矩阵 II(Spiral Matrix II)
    一重指针和二重指针
    指针的意义
  • 原文地址:https://www.cnblogs.com/bonelee/p/12653148.html
Copyright © 2011-2022 走看看