基本概念:
- 什么是强化学习
- 强化学习(英语:
Reinforcement learning
,简称RL
)是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益。 - 核心思想:智能体
agent
在环境environment
中学习,根据环境的状态state
(或观测到的observation
),执行动作action
,并根据环境的反馈reward
(奖励)来指导更好的动作。
注意:从环境中获取的状态,有时候叫state
,有时候叫observation
,这两个其实一个代表全局状态,一个代表局部观测值,在多智能体环境里会有差别,但我们刚开始学习遇到的环境还没有那么复杂,可以先把这两个概念划上等号。
2.强化学习能做什么
- 游戏(马里奥、Atari、Alpha Go、星际争霸等)
- 机器人控制(机械臂、机器人、自动驾驶、四轴飞行器等)
- 用户交互(推荐、广告、NLP等)
- 交通(拥堵管理等)
- 资源调度(物流、带宽、功率等)
- 金融(投资组合、股票买卖等)
- 其他
- 强化学习与监督学习的区别
- 强化学习、监督学习、非监督学习是机器学习里的三个不同的领域,都跟深度学习有交集。
- 监督学习寻找输入到输出之间的映射,比如分类和回归问题。
- 非监督学习主要寻找数据之间的隐藏关系,比如聚类问题。
- 强化学习则需要在与环境的交互中学习和寻找最佳决策方案。
- 监督学习处理认知问题,强化学习处理决策问题。
4.强化学习的如何解决问题
- 强化学习通过不断的试错探索,吸取经验和教训,持续不断的优化策略,从环境中拿到更好的反馈。
- 强化学习有两种学习方案:基于价值(
value-based
)、基于策略(policy-based
)
5.强化学习的算法和环境
- 经典算法:
Q-learning
、Sarsa
、DQN
、Policy Gradient
、A3C
、DDPG
、PPO
- 环境分类:离散控制场景(输出动作可数)、连续控制场景(输出动作值不可数)
- 强化学习经典环境库
GYM
将环境交互接口规范化为:重置环境reset()
、交互step()
、渲染render()
- 强化学习框架库
PARL
将强化学习框架抽象为Model
、Algorithm
、Agent
三层,使得强化学习算法的实现和调试更方便和灵活。
6.Sarsa 简介
Sarsa
全称是state-action-reward-state'-action'
,目的是学习特定的state
下,特定action
的价值Q
,最终建立和优化一个Q
表格,以state
为行,action
为列,根据与环境交互得到的reward
来更新Q
表格,更新公式为:
Sarsa
在训练中为了更好的探索环境,采用ε-greedy
方式来训练,有一定概率随机选择动作输出。
7**. Q-learning简介**
Q-learning
也是采用Q
表格的方式存储Q
值(状态动作价值),决策部分与Sarsa
是一样的,采用ε-greedy
方式增加探索。- Q-learning跟Sarsa不一样的地方是更新Q表格的方式。
Sarsa
是on-policy
的更新方式,先做出动作再更新。Q-learning
是off-policy
的更新方式,更新learn()
时无需获取下一步实际做出的动作next_action
,并假设下一步动作是取最大Q
值的动作。
Q-learning
的更新公式为:
8.policy Gradient简介
-
在强化学习中,有两大类方法,一种基于值(
Value-based
),一种基于策略(Policy-based
)Value-based
的算法的典型代表为Q-learning
和SARSA
,将Q
函数优化到最优,再根据Q
函数取最优策略。Policy-based
的算法的典型代表为Policy Gradient
,直接优化策略函数。
-
采用神经网络拟合策略函数,需计算策略梯度用于优化策略网络。
- 优化的目标是在策略
π(s,a)
的期望回报:所有的轨迹获得的回报R
与对应的轨迹发生概率p
的加权和,当N足够大时,可通过采样N个Episode求平均的方式近似表达。
- 优化目标对参数
θ
求导后得到策略梯度:
- 优化的目标是在策略
9 . DDPG简介
-
DDPG
的提出动机其实是为了让DQN
可以扩展到连续的动作空间。 -
DDPG
借鉴了DQN
的两个技巧:经验回放 和 固定Q
网络。 -
DDPG
使用策略网络直接输出确定性动作。 -
DDPG
使用了Actor-Critic
的架构。 以上是课程中摘下来的知识简介,代码相关的工程可以去网站直接观看,有科科老师版本,也可以自己选择练习。不过由于工作时间问题,学习过程中多次没有赶上直播,跑程序的时间也很少,没有来得及好好调试。
之后有时间了会再去看看程序,并且讨论区已经积攒了许多可能会遇到的问题及其解决方式。
总之这样的活动可以多来,非常好!
课程中作业问题及遇到的共性问题和解答都可以去讨论区学习:
https://aistudio.baidu.com/aistudio/education/group/info/1335
【参考资料】PARL的Github: https://github.com/PaddlePaddle/PARL,欢迎大家点Star~