【深度强化学习】1. 基础部分
【DataWhale打卡】第一天:学习周博磊讲的强化学习结合《深入理解AutoML和AutoDL》这本书中的强化学习的章节总结了基础部分。
参考资料:https://github.com/zhoubolei/introRL
先导课程:线性代数、概率论、机器学习/数据挖掘/深度学习/模式识别
编程基础:Python, PyTorch
强化学习在做什么?
强化学习和监督学习有很大的区别:
-
监督学习需要提供数据和对应的标签,训练数据和测试数据是独立同分布的,从而进行模式和特征的学习。
-
强化学习不同,强化学习没有直接的标签进行指导,并且数据不是独立同分布的,前后数据有比较强的关系。强化学习可以在环境中进行探索和试错,根据实验的结果提取经验,从而学习到最佳策略。
监督学习 | 无监督学习 | 强化学习 | |
---|---|---|---|
输出值 | 标签 | 无 | 奖励值 |
标签/奖励 | 人类提供标注 | 无标签 | 延迟奖励 |
经验 | 无 | 无 | 有 |
损失值 | 有 | 无 | 无 |
输入 | 独立同分布 | 独立同分布 | 前后依赖 |
强化学习的目标是训练一个agent,能够在不同的情况做出最佳的action,从而让系统给出的reward值最大化。
流程如下:agent会观察环境得到observation(state),然会采取一个action,环境受到这个action的作用,会反馈给agent一个reward,同时环境状态state也发生了改变。循环往复,agent目标是为了从环境中获得最高reward奖励。
存在两大主体,智能体Agent和环境Environment,整个过程是序列化的:
智能体目标就是最大化奖励函数 $$ G_t $$:
也就是说当前时序为t的时候,最大化奖励函数就是从当前一直到最后一个状态(完成一个episode)所获取的所有Reward。\(\gamma\) 是一个0-1之间的数,叫做奖励衰减因子。如果等于0,代表这个Agent只考虑当前即时结果,不考虑目标长远。如果等于1,代表这个Agent考虑的是长远利益,放眼整体。
强化学习的特点:
- 输入的数据是序列化、前后有依赖的,并不是独立同分布的。
- 没有监督信息,每一步没有被告诉应该做什么。
- Trial-and-error exploration,exploration和exploitation之间的平衡:
- exploration: 代表探索环境,尝试一些新的行为,这些行为有可能会带来巨大的收益,也可能减少收益。
- exploitation: 就采取当前已知的可以获得最大收益的action。
- Reward Delay效应,当采取一个action以后,并不会立刻得到反馈,需要等待一段时间或者等结束之后才会有反馈。
基本要素
- 环境的状态:用符号S表示,\(S_t\)代表t时刻下处于的某一个状态。
- 个体的动作:用符号A表示,\(A_t\)代表t时刻个体采取的动作。
- 环境的奖励:用符号R表示,\(R_{t+1}\)表示t时刻个体在\(S_t\)状态下,采取动作\(A_t\)得到的奖励。
- 智能体agent策略:用符号\(\pi\)表示,agent会根据\(\pi\)表示的策略来选择动作。
- 价值函数:用符号\(V^{\pi}(s)\)表示,agent在面临状态S的情况下,如果采用策略\(\pi\)后进行动作的价值,是一个期望函数。$$V^{\pi}(s)=E_{\pi}(R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+...|S_t=s)$$
- 奖励衰减因子:用符号\(\gamma\)来表示,是一个0-1之间的数,用于约束距离时间较远的reward所占的比重。
基本方法
强化学习主要分为动态规划、蒙特卡罗法、时序差分法。强化学习中,从一个状态s转化到另外一个状态s'不仅和当前状态s和动作a有关,还与之前的状态有关。但是考虑这么多状态会导致模型非常复杂,所以引入马尔可夫性来简化问题,也就是一个假设\(H\), 即转化到下一个状态s‘的概率仅仅与当前的状态s有关,而和之前的状态没有关系。
解决马尔科夫决策过程有两个分类,见上图,需要解释的是Model-based方法和Model-Free方法。
Model-based方法代表这个问题中,必须能够获得环境的状态转化方程。
Model-Free方法代表不需要对环境进行完全的建模,只需要经验,也就是实际或者仿真的与环境进行交互的整个样本序列。
强化学习应用案例
- alpha-go、alpha-zero围棋战胜李世石。
- 王者荣耀 绝悟AI 就是强化学习技术应用在MOBA游戏的一个典型例子。
- 可以将股票的买卖看作强化学习问题,如何操作能让收益极大化。
- Atari等电脑游戏。
- 机器人,比如如何让机械臂自己学会给一个杯子中倒水、抓取物体。
- DeepMind让Agent学习走路。
- 训练机械臂通过手指转魔方。
- 训练Agent穿衣服。
知识点补充
Rollout:从游戏当前帧,生成很多局游戏,让当前的Model和环境交互,得到很多的观测(轨迹),得到最终的最终reward,从而可以训练agent。