1.课程简介
周博磊《强化学习纲要》
- 课程资料参见: https://github.com/zhoubolei/introRL
- 课件: https://github.com/zhoubolei/introRL/blob/master/lecture1.pdf.
- 教材:Sutton and Barton《Reinforcement Learning: An Introduction》
2.强化学习介绍
2.1 简介

一个agent(智能体)在不确定的environment(环境)下怎样最大化它的reward(奖励),agent始终与environment在交互,agent采取action决策后,action会放入到环境中,环境接收到agent的action后,会进行下一步,输出下一个状态以及agent获取到的reward(奖励)。agent目的是尽可能多的从环境中获取到reward。
2.2 与监督学习的对比
(1)监督学习
图像识别
网络训练中,是已经把真实的label给了网络,假设网络给了错误的决策,就会告诉它你错了。
有两个假设:
- data的数据是没有关联的
- 我们告诉了learner正确的label

(2)强化学习
打砖块
- 不会得到立刻的反馈
- data之间是连续的。只有到最后游戏结束才有label,因此单个的action没有一个确切的label告诉你是否正确,存在奖励的延迟

(3)对比
- 强化学习是序列数据,监督学习样本之间是独立的
- learner并没有被告知正确的行为是什么,learner需要自己去发现哪些行为是可以得到最终的奖励的
- 强化学习是要通过不断的试错来获得能力(Trial-and-error exploration),平衡exploration(探索) 与 exploitation(利用) 的关系。
- exploration(探索):通过尝试一些新的行为,这些行为可能让你获得更高的收益,也可能一无所有。
- exploitation(利用) :采取已知的可以获得最大reward的action,重复这个行为。
- 没有一个监督者,只有奖励信号,且有延迟
- 强化学习过程中时间很重要,因为data间是有时间关联的,而不是i.i.d分布的
- 强化学习中agent的行为会影响他之后得到的数据,因此强化学习中很重要的是怎样使得agent的行为一直稳定的提升
3.序列决策过程
3.1 介绍
强化学习研究的过程是agent和环境的交互

Reward(奖励)
- 标量反馈型号
- 决定了agent的某一时刻t做的动作是否得到奖励
- 强化学习的目的是极大化agent获得的reward
举例:
- 下棋的结果,胜负
- 股票,获得的收益或损失
- Atari游戏,是否获得分数
序列决策过程:
- 强化学习的目的是极大化agent获得的reward
- action有长期的影响
- reward有延迟
- 近期奖励和远期奖励之间的trade-off
- 可以把整个状态看成一个关于历史的函数
- 在agent内部,也有一个函数来更新状态。
- Full observability:当agent状态与环境状态等价的时候,我们就说这个环境是Full observability(全部可以观测)
- Partial observability: agent观测不能包含所有运作状态。(POMDP)
3.2 RL agent组成成分
- 决策函数(Policy function) :agent用来选取下一步的动作
- 价值函数(Value function):对当前状态进行估价,价值函数越大,说明你进入这个状态越有利
- 模型(Model):agent对于状态的理解,决定了它认为世界是怎样构成的
(1)Policy
- agent 行为,把输入的状态变成行为
- Stochastic policy(函数),当你在状态s时,输出一个概率(所有行为的概率),然后进一步对概率分布进行采样,得到真实采取的行为。
- Deterministic policy: ,采取极大化,采取最有可能的概率,是事先决定好了的。
(2)Value Function
定义:一个折扣的未来奖励的加和,进行某一个行为未来将得到多大的奖励
折扣因子(Discount factor):由于我们希望尽可能在短的时间里面得到多的奖励,比如我们希望立刻得到一笔钱而不是以后。因此我们把折扣因子放入到价值函数中
价值函数的定义其实是一个期望,小标是函数,意味着在我们已知一个policy function的时候到底可以得到多少的奖励
Q-function:
s-状态,a-动作,Q函数是强化学习算法在学习的一个函数,是一个期望表示当前状态当前动作未来可以获得的奖励,得到Q函数后,进入某种状态的最优行为可以通过Q函数得到。
(3)Model
- 模型决定了下一个状态是什么样的
- 转移状态:状态是怎么转移的
- 奖励函数:当前状态采取某个行为可以得到多大的奖励
3.3 马尔可夫决策过程(MDPs)
这个决策过程可视化了状态之间的转移,以及之间采取的行为
3.4 示例:走迷宫

采取policy-based RL : 知道每一个状态下最下的动作

采取Value-based RL : 利用价值函数来导向,每一个状态会返回一个价值,越接近终点值越大

3.5 分类
基于价值函数的(Value-based) agent
- 简明学习:价值函数
- 隐式学习:策略(从价值函数中推断出来的)
基于策略的(Policy-based) agent
- 直接学习策略
- 没有价值函数
Actor-Critic agent
- 即学习了策略又学习了价值函数
Model-based
- 通过学习了状态转移来采取措施
Model-free
- 没有通过状态转移也没有学习价值函数
- 没有模型

3.6 探索和利用
- 强化学习是要通过不断的试错来获得能力(Trial-and-error exploration),平衡exploration(探索) 与 exploitation(利用) 的关系。
- exploration(探索):通过尝试一些新的行为,这些行为可能让你获得更高的收益,也可能一无所有。
- exploitation(利用) :采取已知的可以获得最大reward的action,重复这个行为。
4.RL代码实现
4.1 Python coding
- Deep learning libraries: PyTorch or TensorFlow
- https://github.com/metalbubble/RLexample
4.2 OpenAI
4.3 测试案例
pip install gym pip install gym[atari]
Play with the environment
import gym env = gym.make('CartPole-v0') env.reset() for _ in range(1000): env.render() env.step(env.action_space.sample()) # take a random action env.close()
Random play with CartPole-v0
import gym env = gym.make('CartPole-v0') for i_episode in range(20): observation = env.reset() for t in range(100): env.render() print(observation) action = env.action_space.sample() observation, reward, done, info = env.step(action) env.close()