轻松上手强化学习(1):基础概念解析与Gym、Parl库简介
最编程
2024-02-21 16:59:07
...
本文内容源自百度强化学习7日入门课程学习整理
感谢百度PARL团队李科浇老师的课程讲解
文章目录
- 一、强化学习初印象
- 二、什么是强化学习
- 三、GYM库(环境库)
- 四、PARL库(算法库)
一、强化学习初印象
让机器像人一样学习:
- 对已知环境进行规划
- 对未知环境进行探索/试错
案例:
Multi-Agent Hide and Seek,OpenAI 的 AI 多角色捉迷藏游戏
地址:http://openai.com/blog/emergent-tool-use
参考资料:
《Reinforcement Learning: An Introduction》
伯克利 2018 Deep RL 课程:http://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
进阶:经典论文
- DQN “Playing atari with deep reinforcement learning” https://arxiv.org/pdf/1312.5602.pdf
- A3C “Asynchronous methods for deep reinforcement learning” http://www.jmlr.org/proceedings/papers/v48/mniha16.pdf
- DDPG “Continuous control with deep reinforcement learning” https://arxiv.org/pdf/1509.02971
- PPO “Proximal policy optimization algorithms” https://arxiv.org/pdf/1707.06347
前沿研究方向:
- Model-based RL
- Hierarchical RL
- Multi Agent RL
- Meta Learning
二、什么是强化学习
核心思想:
智能体 Agent 在环境 enviroment 中学习
根据环境状态 State
执行动作 Action
并根据环境反馈 Reward 来指导下一步动作
两个组成部分:
- Agent 智能体
- Enviroment 环境
三要素:
- State 状态(全局)/ Observation 观察值(局部)
- Action 动作
- Reward 反馈/奖励
应用:
- 游戏
- 运动与平衡
- 个性化与推荐
- 股票
- 交通治理
强化学习与其他机器学习
三大板块:监督学习,非监督学习,强化学习
都用到了深度学习作为工具
-
监督学习:分类,回归(独立同分布数据)
-
非监督学习:聚类
-
强化学习:决策(序列决策数据)
强化学习的 2 种学习/优化方案:
- 基于价值 Value-based (每一步 State 给奖励)—— 最终 Agent 获得每一步最优解(确定性策略)
- Sarsa
- Q-learning
- DQN
- 基于策略 Policy-based (最终给出奖励)—— 最终 Agent 获得每一步的概率分布(随机性策略)
- Policy gradient
- Policy gradient
强化学习算法分类:
- 基于模型 Model-based
- 动态规划
- 无模型 Model-free
- 基于价值 Value-based
- on-Policy:Sarsa
- off-Policy:Q-learning,DQN
- 基于策略 Policy-based
- Policy Gradient
- Actor-Critic
- DDPG,A3C
- TRPO
- PPO
- Actor-Critic
- Policy Gradient
- 基于价值 Value-based
算法库&框架库:
经典算法 | SOTA | 并行算法 | 多智能体 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
DQN | DDPG | PG | PPO | ES | TD3 | SAC | A2C | IMPALA | MADDPG | |
PARL | 有 | 有 | 有 | 有 | 有 | 有 | 有 | 有 | 有 | 有 |
Baseline | 有 | 有 | 有 | 有 | ||||||
garage | 有 | 有 | 有 | 有 | 有 | 有 | 有 | |||
Ray Rllib | 有 | 有 | 有 | 有 | 有 | 有 | 有 | 有 | 有 | |
Coach | 有 | 有 | 有 | 有 | 有 | 有 | ||||
Dopamine | 有 |
三、GYM库(环境库)
RL环境相关的库:Gym编程实践
Gym 是个仿真平台,python 的开源库,RL 的测试平台
官网:https://gym.openai.com/
- 离散控制场景(动作为确定值):一般使用 atari 环境评估
- 连续控制场景(动作为浮动连续值):一般使用 mujoco 环境游戏评估
Gym 的核心接口是 enviroment
核心方法:
- reset():重置环境的状态,回到初始环境,以便开始下一次训练。
- step(action):推进一个时间步长,返回 4 个值:
- observation (object):对环境的一次观察
- reward (float):奖励
- done (boolean):代表是否要重置环境(是否达成最终结果/游戏结束)
- info (dict):用于调试的诊断信息
- render():渲染,刷新环境新一帧的图形
四、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 的机器上