强化学习入门(一)强化学习的基础概念及Gym库,Parl库介绍

一、强化学习初印象

让机器像人一样学习:

  • 对已知环境进行规划
  • 对未知环境进行探索/试错

案例:

Multi-Agent Hide and Seek,OpenAI 的 AI 多角色捉迷藏游戏

地址://openai.com/blog/emergent-tool-use

参考资料:

《Reinforcement Learning: An Introduction》

伯克利 2018 Deep RL 课程://rail.eecs.berkeley.edu/deeprlcourse/

强化学习入门路线:

  • 基础入门:基础概念及原理
  • 理论补充:专业教材,高校课程
  • 经典算法复现:DQN,DDPG,PPO,A3C
  • 前沿论文阅读:顶会论文

资料推荐:

  • 书籍:经典书《Reinforcement Learning: An Introduction》(强化学习导论)——强化学习教父 Richard Sutton 经典教材
  • 理论课:2015 David Silver 经典强化学习公开课,UC Berkeley CS285,斯坦福 CS234

动手实践:

  • Sarsa
  • Q-learning
  • DQN
  • Policy Gradient
  • DDPG

进阶:经典论文

前沿研究方向:

  • Model-based RL
  • Hierarchical RL
  • Multi Agent RL
  • Meta Learning

二、什么是强化学习

核心思想:

智能体 Agent 在环境 enviroment 中学习

根据环境状态 State

执行动作 Action

并根据环境反馈 Reward 来指导下一步动作

两个组成部分:

  • Agent 智能体
  • Enviroment 环境

三要素:

  • State 状态(全局)/ Observation 观察值(局部)
  • Action 动作
  • Reward 反馈/奖励

应用:

  • 游戏
  • 运动与平衡
  • 个性化与推荐
  • 股票
  • 交通治理
    截屏2020-06-17 上午10.17.27.png

强化学习与其他机器学习

三大板块:监督学习,非监督学习,强化学习

都用到了深度学习作为工具

  • 监督学习:分类,回归(独立同分布数据)

  • 非监督学习:聚类

  • 强化学习:决策(序列决策数据)
    截屏2020-06-17 上午10.18.46.png

强化学习的 2 种学习/优化方案:

  • 基于价值 Value-based (每一步 State 给奖励)—— 最终 Agent 获得每一步最优解(确定性策略)
    • Sarsa
    • Q-learning
    • DQN
  • 基于策略 Policy-based (最终给出奖励)—— 最终 Agent 获得每一步的概率分布(随机性策略)
    • Policy gradient
      截屏2020-06-17 上午10.21.44.png

强化学习算法分类:

  • 基于模型 Model-based
    • 动态规划
  • 无模型 Model-free
    • 基于价值 Value-based
      • on-Policy:Sarsa
      • off-Policy:Q-learning,DQN
    • 基于策略 Policy-based
      • Policy Gradient
        • Actor-Critic
          • DDPG,A3C
        • TRPO
          • PPO

算法库&框架库:

经典算法 SOTA 并行算法 多智能体
DQN DDPG PG PPO ES TD3 SAC A2C IMPALA MADDPG
PARL
Baseline
garage
Ray Rllib
Coach
Dopamine

三、GYM 库(环境库)

RL 环境相关的库:Gym 编程实践

Gym 是个仿真平台,python 的开源库,RL 的测试平台

官网://gym.openai.com/

  • 离散控制场景(动作为确定值):一般使用 atari 环境评估
  • 连续控制场景(动作为浮动连续值):一般使用 mujoco 环境游戏评估

Gym 的核心接口是 enviroment

核心方法:

  • reset():重置环境的状态,回到初始环境,以便开始下一次训练。
  • step(action):推进一个时间步长,返回 4 个值:
    • observation (object):对环境的一次观察
    • reward (float):奖励
    • done (boolean):代表是否要重置环境(是否达成最终结果/游戏结束)
    • info (dict):用于调试的诊断信息
  • render():渲染,刷新环境新一帧的图形

截屏2020-06-16 下午9.16.11.png

四、PARL 库(算法库)

PARL 是对 Agent 的框架抽象

适用范围:

  • 入门:快速学习和对比不同常用算法
  • 科研:快速复现论文结果,迁移算法到不同环境调研
  • 工业:大规模分布式能力,单机到多机仅需 2 行代码,快速迭代上线

PARL 的实现:基于 3 个类

  • Model(模版 + 用户定制):网络结构,可修改 carpole_model.py 文件
  • Algorithm
  • Agent(模版 + 用户定制):与环境交互方式,数据接口可修改 carpole_agent.py

快速搭建并行框架:

  • 在一台机器上 pip install parl
  • 然后 xparl start –port 8008,启动集群
  • 其他 CPU 机器加入集群:首先 pip install parl,然后 xparl connect –address localhost:8008
  • 启动以后,需要把单机代码变成多机代码:在该代码的类前面加一个修饰符 @parl.remote_class
  • 然后在并行训练之前,通过 parl.connect(‘localhost:8008’) 进行初始化和通讯

仅需拷贝一份代码到 master 的机器上
截屏2020-06-17 上午11.35.41.png