第 21 章 强化学习
强化学习研究的是连续决策问题。它和监督学习、无监督学习最大的区别在于:模型不是只从固定数据集中学习,而是在和环境交互的过程中,根据奖励信号调整自己的行为。
监督学习通常给出标准答案,例如一张图片对应一个类别;强化学习往往没有每一步的标准答案,只有执行动作以后得到的奖励,而且一个动作的好坏可能要过很多步以后才能看出来。
强化学习问题
强化学习中有两个核心对象:智能体和环境。
| 概念 | 含义 |
|---|---|
| 智能体 | 做决策的主体 |
| 环境 | 智能体交互的外部系统 |
| 状态 | 当前局面的描述 |
| 动作 | 智能体可以选择的行为 |
| 奖励 | 环境对动作结果的反馈 |
| 策略 | 在某个状态下选择动作的方法 |
一次交互可以写成:
观察状态 -> 选择动作 -> 环境转移 -> 得到奖励 -> 进入新状态强化学习的目标不是让眼前奖励最大,而是让长期累计奖励最大。例如下棋时,某一步可能暂时损失棋子,却为后面取胜创造条件;自动驾驶中,当前减速可能牺牲速度,却能换来更安全的长期结果。
马尔可夫决策过程
马尔可夫决策过程是强化学习最常用的数学模型,通常记为:
其中:
| 符号 | 含义 |
|---|---|
| 状态集合 | |
| 动作集合 | |
| 在状态 | |
| 转移过程中得到的奖励 | |
| 折扣因子 |
马尔可夫性指的是:如果当前状态已经包含了决策所需的信息,那么未来只依赖当前状态和当前动作,不再依赖更早的历史。
这个假设很重要。它让连续决策问题可以用状态转移概率和奖励函数来描述,否则完整历史会越来越长,问题很难计算。
回报和折扣因子
从时刻
越接近 0,智能体越重视眼前奖励。 越接近 1,智能体越重视长期奖励。
折扣因子不是简单的数学技巧,它表达了两个事实:越远的未来通常越不确定;同时在无限长任务中,折扣可以让累计回报保持有限。
策略
策略描述智能体在某个状态下如何选择动作。
确定性策略直接给出动作:
随机性策略给出动作概率分布:
在强化学习中,学习的目标往往就是找到一个好策略。好策略不是在每个状态都选择短期奖励最大的动作,而是能让长期回报期望最大。
状态价值函数
状态价值函数表示:从状态
它回答的问题是:这个状态本身有多好。
例如在棋类问题中,一个局面虽然当前没有直接得分,但如果它通向很多胜利路线,那么它的状态价值就高。
动作价值函数
动作价值函数表示:在状态
它回答的问题是:在这个状态下,这个动作有多好。
如果已经知道
贝尔曼方程
价值函数之所以重要,是因为它满足递推关系。一个状态的价值可以分成两部分:
- 当前一步得到的奖励。
- 下一状态的长期价值。
状态价值函数的贝尔曼期望方程为:
这条公式的意思是:状态
最优状态价值函数满足贝尔曼最优方程:
和贝尔曼期望方程相比,最优方程把“按当前策略平均选择动作”换成了“选择最好的动作”。
动态规划方法
如果环境模型已知,也就是
策略迭代包含两步:
- 策略评估:在当前策略下计算价值函数。
- 策略改进:根据价值函数更新策略。
价值迭代则把评估和改进合在一起,反复使用贝尔曼最优方程更新价值函数。
动态规划方法的限制是:它要求知道环境转移模型,而且状态空间不能太大。真实问题中,环境模型常常未知,状态也可能非常多,所以需要无模型方法。
蒙特卡洛方法
蒙特卡洛方法不需要知道环境转移概率。它通过完整采样一条轨迹,等一局结束后,用实际得到的回报估计价值。
例如从状态
它的优点是直观、不需要环境模型;缺点是必须等到一条轨迹结束以后才能更新,方差也可能比较大。
时序差分学习
时序差分学习结合了蒙特卡洛和动态规划的思想:它不需要环境模型,也不必等到整条轨迹结束,而是走一步就更新一次。
状态价值的 TD 更新可以写成:
括号里的部分叫 TD 误差:
它表示“当前估计”和“走一步以后得到的新估计”之间的差。
SARSA
SARSA 是一种基于动作价值函数的时序差分方法。名字来自一次更新中用到的五个量:
更新公式为:
SARSA 使用的是实际下一步会采取的动作
Q-learning
Q-learning 也是基于动作价值函数的时序差分方法,但它更新时使用下一状态中价值最大的动作:
Q-learning 是 off-policy 方法。它采样时可以带探索,但更新目标直接朝最优策略靠近。
SARSA 和 Q-learning 的区别可以这样理解:
| 方法 | 下一步动作来自哪里 | 学到的策略 |
|---|---|---|
| SARSA | 实际执行的下一动作 | 当前探索策略 |
| Q-learning | 下一状态下价值最大的动作 | 最优贪心策略 |
探索和利用
强化学习必须处理探索和利用的矛盾。
- 利用:选择当前看起来最好的动作。
- 探索:尝试不确定的动作,获取更多信息。
常见方法是
训练早期通常需要更多探索;训练后期可以逐渐减少
深度强化学习
当状态空间很大时,无法为每个状态和动作都维护一个表格。深度强化学习用神经网络近似价值函数或策略函数。
DQN 用神经网络近似
| 技巧 | 作用 |
|---|---|
| 经验回放 | 把交互样本存入缓冲区,随机采样训练,减少样本相关性 |
| 目标网络 | 用一个更新较慢的网络产生目标值,稳定训练 |
DQN 的目标值通常写成:
然后让当前网络的
策略梯度和 Actor-Critic
价值方法先学习动作价值,再根据价值选择动作。策略梯度方法则直接参数化策略:
然后调整参数
Actor-Critic 结合了两种思路:
| 部分 | 作用 |
|---|---|
| Actor | 表示策略,负责选择动作 |
| Critic | 估计价值,评价动作好坏 |
Actor 根据 Critic 的评价更新策略,Critic 根据环境反馈更新价值估计。许多现代强化学习算法都可以看作 Actor-Critic 框架的变体。
学习时容易混淆的点
强化学习里最容易混淆的是“奖励”和“价值”。奖励是一步得到的即时反馈,价值是从当前状态或动作出发的长期回报期望。
另一个常见混淆是“有模型”和“无模型”。有模型方法知道或学习环境转移模型;无模型方法不显式建模环境转移,而是直接学习价值函数或策略。
还要注意,强化学习训练不稳定是常态:样本之间相关、奖励稀疏、策略变化会改变数据分布,都会让训练比普通监督学习更难。
参考阅读
- Pinard 强化学习系列:https://www.cnblogs.com/pinard/category/1254674.html