强化学习教程: 01-概述
欢迎转载,作者:Ling,注明出处:强化学习教程: 01-概述
强化学习定义:
Reinforcement learning is learning what to do|how to map situations to actions so as to maximize a numerical reward signal.
强化学习典型实例:
- 围棋比赛
- 直升机特技动作
- 投资管理
- 机器人行走
- 玩游戏
机器学习分类:
- 监督学习:需要标签
- 无监督学习:不需要标签
- 强化学习:不需要标签,但是有奖励,和环境互动,从奖励中学习
强化学习和各学科关系:
强化学习组成要素:
举个例子:
- Environment: MAZE迷宫
- Agent: 走迷宫的机器人
- Observation:假设机器人在start位置,此时Environment给出的Observation可以是该点坐标(1,0)
- Reward: 一般只有终点的Reward是1,其他点的Reward都是0,所以在起始点,Reward就是0
- Action:机器人在起点,可以选择:上下左右四个方向走,当选择了一个方向走,就是一个Action
- History: ((1,0), 0, 右), ((1,1), 0, 上)… 这样走到终点或者走到一定步数,计算一条History,或者说一个Episode
- State: 这里的State可以理解为就是Observation
- Policy: 在(1,0) 机器人可以有四种策略,上下左右,这个就是一步的policy,选了策略之后真正走了就算是一个Action
- Value & Value Function:在(1,0) 的value需要根据后续情况或者模型才知道,在终点,value=reward 都是1,在终点之前那个value也是1或者是1乘以一个递减系数,value是根据reward计算出来的,value可以是和状态绑定的,一个状态一个value,value也可以是和状态以及Action绑定的,也就是在某个状态,采取了某个action的value
- Model:所谓model,就是已经知道了状态转移概率和Reward函数等各种信息,model-free就是预先不知道状态转移概率等信息,model可以预先知道,或者是通过环境学习得到。
概括:
Environment: Agent需要打交道的东西,例如:棋盘,游戏,它会根据当前状态,给Agent反馈,比如:Observation,Reward
Agent:与环境进行交互的东西,它会根据环境给的Observation,Reward,然后进行一系列计算,然后采取下一步Action,用于改变环境状态
Observation:环境告诉Agent的当前状态,比如:当前处于棋盘的位置,甚至更多其他信息
Reward/Reward Function:Reward是环境告诉Agent当前状态的奖励情况,比如:如果是终点,奖励是1,如果是陷阱,奖励为-1,Reward Function是计算Reward的方法
Action:Agent根据O与R采取的行动A,该行动会进一步输入到环境,然后环境会给出新的O和R
History: 又称Episode,即由O,R,A构成的整个历史
State:环境可以有自己的State,Agent可以有自己的State,还有个Information State是指根据历史得到的当前整个状态的State:
- Full Observability: 即当前状态都是透明的,环境状态,环境给agent的状态,agent状态和整个状态都是一样的,我们主要处理这种情况,所以这时,O和S可以认为是同一个东西。
- Partial Observability:环境状态不透明,Agent只能了解到一部分状态
Agent三个主要的内容:Policy,Value&Value Function,Model
- Policy:即Agent可能采取的策略,是从状态到行为的映射(注意,不仅仅是下一步的策略,是整个策略),例如:根据当前状态向右走
确定性策略:
非确定性策略:
- Value & Value function:Value是指当前State and/or Action所获得的价值,Value function 是指计算价值的方式,用于计算评估State and/or Action的好坏, 有V函数和Q函数两种形式
- Model: 要么预先给出,要么通过与真实环境互动学习得到,主要包括状态转移矩阵和Reward函数等,公式表示如下:P是预测下一个状态,R是预测下一个奖励
Reward VS Value:
Reward |
Value |
环境可以直接给出 |
需要根据后续Reward计算出 |
当前环境状态决定 |
长期一系列状态决定 |
Exploitation 与 Exploration
- Exploration: 尝试环境中没有尝试过的
- Exploitation:根据总结的经验采取最大价值的Action
Prediction 与 Control
- Prediction:计算或者说估计出值函数,实际上后面你会发现一般是要求出V函数或者Q函数
- Control:不仅计算或者说估计出值函数,而且要优化值函数,也就是得到最优策略,这个时强化学习最根本想做的事情,实际上后面你会发现,一般是要求出Q函数,同时求下一步Action
强化学习分类:
Model-Free RL VS Model-based RL
- Model-Free RL:对模型预先不清楚,不知道状态转移矩阵,Reward函数等,大部分强化学习属于这类问题,预先不知道模型是啥样
- Model-based RL:分两种情况,一种情况预先已经知道模型,清楚状态转移矩阵和Reward函数等,这个时候直接可以进行RL学习,另外一种情况需要从现实中学习出一个model(学习出状态转移矩阵和Reward函数),然后通过学习出的model进行RL学习,举个例子:走围棋,我从一些现实样本中学习出状态转移矩阵和Reward函数,也就是学到了一个model,然后基于这个model,我生成更多样本,基于这些样本,我来进行RL学习,这就是model-based RL,我们常说的model-based RL主要指第二种情况。
- 常见方法即可有Model-Free RL版本,也可以有Model-based RL版本
Policy-based RL VS Value-Based RL
- Value-Based RL: 基于价值,学习价值函数,价值有V价值和Q价值,然后从该点选择对应value最大的action进行执行, 主要方法有Q Learning, Sarsa, DQN
- Policy-based RL: 基于策略,即不先求价值函数,直接求策略函数,根据该点的不同Action概率,一般走概率最大的那个, 主要方法有Policy Gradients
- 两者结合:Actor-Critic: Critic根据当前策略,最优化价值函数, Actor在Critic建议的价值函数下,最优化策略函数
另外两种分类方式:
回合更新 VS 单步更新
- 回合更新:Monte-Carlo update
- 单步更新:Temporal-Difference update,更有效率, Q Learning, Sarsa
在策略学习 VS 离策略学习
- 在策略学习:On-Policy learning,从工作中学习,从实际经验中抽样学习策略,也就是你学习之后发现最优的action是啥,下一步就采用这样的action,例如Sarsa
- 离策略学习:Off-Policy learning,站在别人肩膀上,经验可能是通过另外一个策略采样得到,也就是说你计算最优值和你实际采用的action可以不一样,例如,Q-Learning
RL主要方法:
评估Predication:MC,TD,TD(λ),既可以是基于V函数,也可以基于Q函数更新
控制Control:一般都是基于Q函数更新
|
Policy-Based RL |
Value-Based RL |
回合更新 |
单步更新 |
On-Policy RL |
Off-Policy RL |
Q Learning |
|
X |
|
X |
|
X |
Sarsa |
|
X |
|
X |
X |
|
Sarsa(λ) |
|
X |
两者 |
之间 |
X |
|
DQN |
|
X |
X |
|
|
X |
Policy Gradients |
X |
|
X |
|
X |
|
Actor-Critic |
两者 |
结合 |
X |
|
X |
|
最后再上两幅图:
强化学习知识体系:
强化学习在AI中的地位: 有人说DL+RL才能实现AI
留言