强化学习(Reinforcement Learning, RL) 是机器学习三大范式之一,核心思想是让智能体(Agent)通过与环境的交互,以"试错"方式学习最优策略,从而最大化累积奖励。与监督学习依赖标注数据、无监督学习寻找数据内在结构不同,强化学习在序列决策场景中发挥了不可替代的作用——从AlphaGo击败围棋世界冠军到ChatGPT的RLHF训练,从机器人控制到自动驾驶决策。
强化学习问题通常建模为马尔可夫决策过程(Markov Decision Process, MDP),用一个五元组描述:
其中:
用一个 网格世界的冰湖行走问题来具象化MDP:
S = 起点 1 2 3
4 5 6 7
8 9 10 H
12 13 14 G
其中 H 为冰洞(负奖励),G 为目标(正奖励)。智能体在16个格子间移动,可执行上下左右四个动作。假设摩擦力使动作失败概率为 :
| 当前状态 | 动作 | 成功到达(概率) | 失败滑向(概率) | 奖励 |
|---|---|---|---|---|
| S(0,0) | → | (0,1) 概率 0.9 | (1,0) 概率 0.1 | 0 |
| (1,1)=5 | → | H(1,2) 概率 0.9 | (2,1)=9 概率 0.1 | -1(到H)/0 |
| (3,2)=14 | → | G(3,3) 概率 0.9 | (2,2)=10 概率 0.1 | +10(到G)/-1(到10为洞H) |
这个简单的网格世界完整展示了MDP的五个要素:16个状态的 ,4个动作的 ,有概率的转移函数 ,以及与终点相关的奖励 。
策略 定义了智能体在状态 下选择动作 的概率分布。强化学习的目标就是找到 最优策略 ,使得累积期望折扣奖励最大化:
状态价值函数 评估在策略 下,从状态 开始的期望累积奖励:
动作价值函数 评估在状态 执行动作 (之后遵循策略 )的价值:
贝尔曼方程(Bellman Equation)是强化学习的核心基石,它将当前状态的价值与未来状态的价值联系起来:
数值示例:继续用冰湖问题,假设状态5(第2行第2列)的周围环境:上方是1,右方是H(洞),左方是4,下方是9。
| 状态5的邻居 | 类型 | 转移概率(→方向) |
|---|---|---|
| 状态1 (上方) | 普通 | 0.9(↑) + 0.1(滑到其他方向) |
| 状态H (右方) | 冰洞, 奖励-1 | 0.9(→) |
| 状态4 (左方) | 普通 | 0.9(←) |
| 状态9 (下方) | 普通 | 0.9(↓) |
假设随机策略(各动作等概率 ),折扣因子 ,我们可以迭代计算:
经过10轮迭代后,这些状态值会收敛到一个稳定值。下表展示不同状态在随机策略下的价值收敛过程:
| 迭代轮次 | V(0) 起点 | V(5) 中间 | V(14) 终点旁 | V(G) 目标 |
|---|---|---|---|---|
| 1 | 0.00 | 0.00 | 0.00 | 0.00 |
| 2 | 0.00 | -0.09 | 1.80 | 10.00 |
| 3 | 0.35 | 0.09 | 2.61 | 10.00 |
| 5 | 0.83 | 0.56 | 3.15 | 10.00 |
| 10 | 1.23 | 0.96 | 3.27 | 10.00 |
强化学习面临的根本矛盾:探索(Exploration) 尝试新动作以获取更多信息,利用(Exploitation) 执行已知的最优动作以获得最大即时奖励。
多臂老虎机(Multi-Armed Bandit)是探索-利用困境的最简形式。假设一个赌场有3台老虎机,每台的真实收益概率未知,玩家需要决定如何分配拉杆次数以最大化总收益。
| 老虎机 | 真实中奖概率 | 玩家初始估计 | 拉杆次数后估计 |
|---|---|---|---|
| A | 0.30 | 0.00 | 0.28 (50次) |
| B | 0.50 | 0.00 | 0.48 (80次) |
| C | 0.10 | 0.00 | 0.11 (20次) |
最经典的探索策略是 -贪心(Epsilon-Greedy):
数值对比:在1000轮老虎机游戏中,不同 值的表现:
| 值 | 探索次数 | 总奖励 | 最优动作选中率 |
|---|---|---|---|
| 0 (纯贪心) | 0 | 285 | 100% (但可能选错) |
| 0.01 | 10 | 476 | 99.0% |
| 0.10 | 100 | 493 | 90.0% |
| 0.50 | 500 | 376 | 50.0% |
| 1.00 (纯随机) | 1000 | 301 | 33.3% |
从上表可见, 在这个场景下获得了最优总收益,既保持了足够的探索发现高收益动作,又保证了大部分时间进行利用。
UCB(Upper Confidence Bound)采用更智能的探索策略:
其中 是动作 被选中的次数, 控制探索程度。当某个动作被探索不足( 小),其置信区间上界就较大,有助于发现被低估的优秀动作。
数值示例:假设老虎机A被拉了5次,收益0.20;老虎机B被拉了1次,收益0.60。在 轮时:
| 老虎机 | UCB得分 | |||
|---|---|---|---|---|
| A | 0.20 | 5 | ||
| B | 0.60 | 1 |
老虎机B的UCB得分更高,因此会被选择进行探索,尽管其当前平均收益可能只是小样本噪声。
强化学习算法可按多种维度分类:
| 特性 | 基于值的方法 | 基于策略的方法 | Actor-Critic |
|---|---|---|---|
| 核心 | 学习 | 直接学习 | 两者结合 |
| 输出 | 各动作的Q值 | 动作概率分布 | 策略+价值 |
| 离散动作 | ✅ 自然支持 | ✅ | ✅ |
| 连续动作 | ❌ 复杂度高 | ✅ | ✅ |
| 收敛性 | 可能震荡 | 局部最优 | 较稳定 |
| 典型算法 | DQN, Q-Learning | Policy Gradient, PPO | A2C, SAC |
| 特性 | On-Policy | Off-Policy |
|---|---|---|
| 数据来源 | 当前策略产生 | 任意策略产生 |
| 样本效率 | 低(用完即弃) | 高(可重用) |
| 稳定性 | 高 | 中(分布偏移) |
| 代表算法 | SARSA, PPO, A3C | DQN, DDPG, SAC |
| 特性 | Model-Based | Model-Free |
|---|---|---|
| 环境模型 | 学习或已知 | 不建模 |
| 样本效率 | 高 | 低 |
| 计算复杂度 | 高 | 低 |
| 泛化能力 | 强 | 弱 |
| 代表算法 | Dyna-Q, AlphaGo | DQN, PPO |
以下是不同RL算法在Atari 2600游戏上的平均表现(归一化人类玩家为100%):
| 算法 | 平均得分(%) | 训练帧数 | 发表年份 |
|---|---|---|---|
| DQN (Nature) | 121.9% | 2亿帧 | 2015 |
| Double DQN | 136.8% | 2亿帧 | 2016 |
| Dueling DQN | 145.7% | 2亿帧 | 2016 |
| A3C | 126.5% | 2亿帧 | 2016 |
| Rainbow DQN | 223.1% | 2亿帧 | 2017 |
| IMPALA | 174.4% | 2亿帧 | 2018 |
| PPO | 157.9% | 2亿帧 | 2017 |
| R2D2 | 260.3% | 2亿帧 | 2019 |
在现实场景中,智能体往往只能获得非常稀疏的奖励,导致学习困难。
迷宫逃离案例:
| 奖励设计 | 收敛步数 | 最终策略质量 |
|---|---|---|
| 稀疏奖励 | 50000 步未收敛 | 随机游走 |
| 密集奖励 | 1200 步 | 找到最短路径 |
| 势能奖励 | 800 步 | 找到最短路径 |
| 课程学习 | 600 步 | 找到最短路径+回避高风险区域 |
折扣因子 控制智能体的"远视"程度:
数值示例:考虑一个两阶段决策问题,从起点可以选择:
| 值 | 动作A总价值 | 动作B总价值 | 最优选择 |
|---|---|---|---|
| 0.0 | 5.0 | 1.0 | A(完全短视) |
| 0.5 | 5.5 | 3.5 | A |
| 0.9 | 5.9 | 5.5 | A |
| 0.95 | 5.95 | 5.75 | A |
| 1.0 | 6.0 | 6.0 | 等值(不折扣) |
实际应用中, 通常取 0.9 到 0.99 之间。游戏场景取 0.99,机器人控制取 0.95,快速决策场景取 0.9。
DQN引入的经验回放缓冲(Experience Replay Buffer)是稳定RL训练的基石:
缓冲区分块参数示例:
| 参数 | 典型值 | 影响 |
|---|---|---|
| 缓冲区大小 | 1,000,000 | 越大越多样,但更新慢 |
| 批量大小 | 32 | 越大梯度越稳定 |
| 目标网络更新间隔 | 10,000步 | 越小越不稳定 |
| (软更新) | 0.001 | 越小目标网络更新越慢 |
优势函数 衡量某个动作相比平均水平的好坏程度。使用优势函数替代Q值可以降低方差:
数值示例:假设状态 有四个动作的 值和 :
| 动作 | 策略梯度幅度 | ||
|---|---|---|---|
| ↑ | 7 | +2 | 2倍提升 |
| → | 5 | 0 | 不变 |
| ↓ | 3 | -2 | 2倍降低 |
| ← | 6 | +1 | 1倍提升 |
使用优势函数后,梯度更新只关注"比平均水平好多少",而非绝对数值,大大降低了不同状态间价值差异造成的训练震荡。
强化学习模型的评估需要多维指标:
| 指标 | 定义 | 使用场景 | 示例值(DQN Breakout) |
|---|---|---|---|
| 累计奖励 | 任务完成度 | 平均每轮 210 分 | |
| 回合长度 | 步数 | 效率 | 842 步/回合 |
| 成功率 | %完成任务 | 离散决策 | 78% |
| 样本效率 | 达到目标所需步数 | 数据稀缺 | 500万帧达200分 |
| 泛化能力 | 新场景下的表现 | 迁移学习 | 在变体环境中下降 30% |
| 框架 | 语言 | 核心特性 | GitHub Stars | 适用场景 |
|---|---|---|---|---|
| Stable-Baselines3 | Python | RL算法标准实现 | 12,000+ | 学术研究、快速原型 |
| RLlib (Ray) | Python | 分布式RL | 35,000+ | 大规模分布式训练 |
| Dopamine | Python | 研究用框架 | 10,000+ | DQN系列研究 |
| TF-Agents | Python | TensorFlow生态 | 6,000+ | TensorFlow用户 |
| CleanRL | Python | 单文件简洁实现 | 7,000+ | 教学、代码理解 |
| Acme | Python | DeepMind出品 | 3,500+ | 工业级RL |
| 挑战 | 具体问题 | 当前进展 | 展望 |
|---|---|---|---|
| 样本效率 | Atari游戏需2亿帧次 | 人类100帧即学会 | 世界模型、离线RL |
| 奖励设计 | 多数场景奖励稀疏 | 逆RL、偏好学习 | LLM辅助奖励设计 |
| 安全约束 | 现实中不可随意探索 | 安全约束RL | 合规RL |
| 泛化能力 | 训练与测试环境不同 | 域随机化、元学习 | 基础模型+微调 |
| 多智能体 | 智能体间竞争协作 | MADDPG, QMIX | 大语言模型驱动的智能体 |
| 可解释性 | 策略为黑盒 | 注意力可视化 | 自然语言解释策略 |