外观
什么是强化学习
一句话定位:这一页讲清楚"强化学习"这四个字到底指什么——它解决什么问题、用什么样的交互框架、和熟悉的监督/无监督学习差在哪、以及一个最小例子长什么样。读完后你能对任何人说清楚:RL 是"智能体在环境中试错,用事后奖励学习该怎么做"的机器学习范式。
一、一句话定义与智能体—环境循环
强化学习(Reinforcement Learning, RL) 研究的是:一个智能体(agent)如何通过与环境(environment)的反复交互,学会一种策略(policy),使得从长期看累积的**奖励(reward)**最大化。
关键在于三个"没有":
- 没有标签:没有人告诉你"此刻正确的动作是 a*";
- 没有即时反馈:动作的后果(好坏)可能要很久之后才显现;
- 没有独立同分布数据:你下一步看到什么状态,取决于你上一步做了什么——数据是被你的行为生成和污染过的。
这正是 RL 与监督学习最本质的区别:监督学习学的是"这是什么",RL 学的是"该怎么做"。
交互框架用一张图就能说清:
text
┌────────────────────────────┐
│ 环境 Env │
│ (规则、模拟器、对手、用户) │
└────────────────────────────┘
▲ │
状态 s_t │ │ 动作 a_t
(+奖励 r_t) │ ▼
┌────────────────────────────┐
│ 智能体 Agent │
│ (策略 π、价值函数、记忆) │
└────────────────────────────┘每一时刻 t 发生的事情,在数学上是一次**马尔可夫决策过程(Markov Decision Process, MDP)**的采样,完整的定义见马尔可夫决策过程。这里先给出口语版:
text
循环:
1. 环境处于状态 s_t,把 s_t(以及奖励 r_t)交给智能体
2. 智能体依据策略 π(a|s) 选择动作 a_t
3. 环境根据转移函数 P(s_{t+1} | s_t, a_t) 给出新状态 s_{t+1}
4. 环境根据奖励函数 R(s_t, a_t) 给出即时奖励 r_{t+1}
5. 回到 1,直到终止状态(或预算耗尽)第一次读到这里就够用了
上面这个循环是整座大楼的骨架。后续所有算法——Q-learning、DQN、PPO、SAC、RLHF——全部是"如何在这个循环里更新智能体内部的参数"的不同答案。把这张图刻进脑子里,再读强化学习系统解剖时你会看到它如何被放大成六层工程系统。
二、奖励假设与四要素
1. 奖励假设(Reward Hypothesis)
RL 建立在一条被称为"奖励假设"的公理上,由 Sutton & Barto 明确提出:
任何目标都可以被表述为标量奖励信号(累积奖励)期望值的最大化。
"健康长寿"可以翻译成"每多活一天 +1";"赢得围棋"可以翻译成"赢 +1、输 −1";"推荐用户喜欢的内容"可以翻译成"点击 +0.1、购买 +0.5"。翻译得好不好,直接决定 RL 项目成败——这就是奖励工程整页存在的理由。
奖励假设是"假设"
把目标翻译成奖励几乎总是有损失的:翻译得不准,智能体就会"刷奖励"而不做你想要的事(Reward Hacking)。经典例子:清扫机器人发现"把地毯弄脏再擦干净"能获得更多清扫奖励。这不是 bug,是奖励设计问题。详见奖励工程的案例集。
2. 四个要素:状态、动作、策略、回报
| 要素 | 英文 | 定义 | 一个直觉例子(CartPole 倒立摆) |
|---|---|---|---|
| 状态 | State s | 环境在某个时刻可被智能体观测到的全部信息 | 小车位置、速度、杆的角度、角速度 |
| 动作 | Action a | 智能体可施加的一个选择 | 向左推、向右推 |
| 策略 | Policy π(a|s) | 从状态到动作(概率分布)的映射 | 杆向左倒得多 → 向左推 |
| 回报 | Return G_t | 从时刻 t 起累积(折扣)奖励之和 | 未来每一时刻"不倒"的奖励的总和 |
回报的定义(带折扣因子 γ):
text
G_t = r_{t+1} + γ·r_{t+2} + γ²·r_{t+3} + ... = Σ_{k=0}^{∞} γ^k · r_{t+k+1}折扣因子 γ ∈ [0, 1) 有三个作用:
- 数学上让无穷和收敛;
- 表达"眼前的钱比未来的钱值钱"——决策者天然偏好早到的奖励;
- 控制智能体的"远见":γ 越接近 1 越有长远眼光,γ 越小越短视。
为什么 γ 不等于 1 才合理
如果 γ=1 且任务无限长,回报会发散;即使不发散,"今天的一块钱和十年后的一块钱等价"也违背直觉。绝大多数工程场景 γ 取 0.9~0.99。γ 是调参实践里第一个要动的超参。
三、与监督/无监督学习的三维对照
RL 常被称为机器学习的"第三范式"。用一张表从三个维度对照:
| 维度 | 监督学习 | 无监督学习 | 强化学习 |
|---|---|---|---|
| 数据形式 | 输入-标签对 (x, y) | 只有输入 x | 状态-动作-奖励轨迹 (s, a, r) 序列 |
| 反馈信号 | 每个样本的即时显式标签 | 无标签,靠数据内在结构 | 事后、稀疏、延迟的标量奖励 |
| 学习目标 | 拟合输入→输出的映射 | 发现分布/结构(聚类、压缩) | 通过交互最大化长期累积回报 |
| 谁来产生数据 | 外部给定(固定数据集) | 外部给定 | 智能体自己的行为产生后续数据 |
| 错误能否立即纠正 | 能,loss 直接给梯度 | 无明确对错 | 不能——要"背锅"到很久以前的动作 |
| 典型任务 | 分类、回归、检测 | 聚类、降维、生成 | 游戏、控制、对话、排序、对齐 |
| 成败度量 | 测试集准确率 | 聚类质量/重构误差 | 轨迹回报、任务成功率、样本效率 |
关键差异浓缩成一句话:监督学习的数据是静止的,RL 的数据是动态的——你正在改变你将要学习的那个分布。这个"分布漂移"(non-stationarity)是所有 RL 算法困难的根源,也解释了为什么 RL 需要探索、需要离线数据安全网。
换一个角度理解
可以把监督学习看成"老师批改作业",把 RL 看成"只有期末总评、平时从不批改"的课程——而且你每次交的作业还会影响下一次上课的内容。想进一步辨析边界(比如 RL vs 最优控制、RL vs 行为克隆),直接去RL vs 相邻领域。
四、为什么"决策序列"难:信用分配与延迟奖励
单个决策很容易:评估每种选择立即带来的奖励,选最大的。但 RL 面对的是序列决策——你今天的一个动作,回报可能出现在一千步之后。这带来两个根本性难题:
1. 信用分配问题(Credit Assignment)
当最终收到奖励时,到底该"奖励"过去哪一步的动作?
text
局面一:下了 10 步棋,第 3 步埋下伏笔,第 10 步赢了棋。
问题:+1 的奖励该记在谁的头上?第 3 步?还是第 10 步?如果奖励只记给最后一步,智能体永远学不会"布局";如果平均记给每一步,又把第 3 步的价值稀释了。TD 学习、资格迹、GAE、价值网络——一半的 RL 算法都是在回答这个问题。
2. 延迟奖励与稀疏奖励
很多真实任务奖励极稀疏:机器人可能走了一万步才碰到一次奖励(抓到物体、到达终点)。此时随机探索几乎不可能"碰巧"拿到奖励,学习原地踏步。对策包括奖励塑形、课程学习、内在奖励(curiosity)等,详见探索与利用与奖励工程。
初学者的常见误区
以为"设计一个密集奖励就能解决问题"。密集奖励确实缓解稀疏性,但随之而来的是 Reward Hacking 与"局部最优动作"风险(比如机器人学会原地转圈刷奖励)。奖励密度不是越高越好——它是密度与"写不歪"之间的权衡。
3. 为什么表格解决不了真实世界
信用分配 + 稀疏奖励 + 高维状态,三座大山压垮了"查表"式方法:现实状态空间连续且巨大(图像、传感器、文本),不可能逐状态存储价值。解法是函数近似——用神经网络把"状态 → 价值/动作分布"学出来,这就是价值学习与策略梯度方法两条主线分别在做的事。
五、最小 RL 例子:Q-learning 学网格世界
理论说太多容易飘,来看一个可以完整拆解的最小例子:3×3 网格世界。
text
┌────┬────┬────┐
│ S │ · │ · │ S = 起点
├────┼────┼────┤ G = 终点(奖励 +10,结束)
│ · │ ✗ │ · │ ✗ = 陷阱(奖励 -5,结束)
├────┼────┼────┤ 其他格子:每步 -0.1(鼓励快点到达)
│ · │ · │ G │ 动作:上下左右
└────┴────┴────┘智能体不知道地图,只能靠"走一步、看奖励"来学。用 Q-learning 求解——Q 表存"在每个格子做每个动作的长期价值":
python
import random
# 状态:0~8 九个格子;动作:0=上 1=下 2=左 3=右
gamma = 0.9 # 折扣因子:越接近 1 越有远见
alpha = 0.1 # 学习率:新信息替代旧估计的速度
epsilon = 0.2 # 探索率:ε 概率随机动作,否则取当前最优
Q = {} # Q 表:{(state, action): 价值}
def act(state):
if random.random() < epsilon: # 探索:随机走
return random.randint(0, 3)
vals = [Q.get((state, a), 0.0) for a in range(4)] # 利用:取最大
return vals.index(max(vals))
def step(state, action):
# 模拟环境的转移(真实项目里这里是 env.step)
next_state, reward, done = simulate(state, action)
return next_state, reward, done
for episode in range(5000):
state = 0 # 每次从起点开始
done = False
while not done:
a = act(state)
next_state, r, done = step(state, a)
old = Q.get((state, a), 0.0)
# 核心更新:Q-learning 的贝尔曼更新
# 新价值 = 即时奖励 + γ·(下一步的最好价值)
best_next = max(Q.get((next_state, a2), 0.0) for a2 in range(4))
Q[(state, a)] = old + alpha * (r + gamma * best_next - old)
state = next_state拆开这十几行代码,你会发现它已经包含了 RL 的全部核心部件:
| 代码行 | 对应的 RL 概念 |
|---|---|
gamma = 0.9 | 折扣因子:远期奖励的衰减 |
epsilon = 0.2 | 探索—利用权衡(ε-greedy),详见多臂老虎机与探索与利用 |
Q.get((state, a)) | 动作价值函数 Q(s,a):评估"在这里做这件事有多好" |
act() 取最大 Q | 从价值导出策略:贪心 |
r + gamma * best_next - old | TD 误差(时序差分误差):预测与"现实+期望"之差 |
Q = Q + alpha * (TD误差) | 价值学习的基本更新:往 TD 误差方向修正估计 |
运行 5000 个 episode 后,从起点出发的路径会稳定收敛到:S → 右 → 右 → 下 → 下 → G,避开陷阱。
这个例子的三个"可迁移结论"
- 策略不是直接学的:这里只学了 Q 表,策略是"每个状态取 Q 最大的动作"——这是价值学习的范式。
- 更新只用了"一步现实 + 一步估计":这就是 TD 的核心思想,比等整局结束再更新(MC)方差小得多。
- 表换成了网络,就是 DQN:把
Q[(s,a)]换成神经网络Q(s,a;θ),加上经验回放和目标网络,就是价值学习页里 DQN 的全部起点。
真正能跑的完整版本(CartPole 三个版本)在Gymnasium 渐进式教程,建议 2 小时内把它跑通——那比读本文三遍都值。
六、RL 适合解决什么问题的边界表
RL 不是万能锤。工程上判断"要不要上 RL",先看这张边界表:
| 情形 | RL 是否合适 | 原因与替代方案 |
|---|---|---|
| 需要做序列决策,且动作会影响未来状态 | ✅ 很合适 | RL 的本命场景:游戏、控制、对话、排序 |
| 任务可以分解成"单次选择、立即反馈" | ⚠️ 大材小用 | 用上下文多臂老虎机(contextual bandit)即可,见多臂老虎机 |
| 有大量监督标签,只是没人教策略 | ⚠️ 优先模仿学习 | 行为克隆/模仿学习,见RL vs 相邻领域 |
| 环境模型精确已知且规模可控 | ⚠️ 优先传统方法 | 动态规划、最优控制(LQR/MPC),见基于模型的 RL |
| 每次交互代价极高(手术、真实货币) | ⚠️ 谨慎 | 考虑离线强化学习或仿真先行 |
| 需要一步不错的准确性(如交通信号逻辑) | ❌ 不太合适 | 规则/启发式更可解释可验证 |
| 目标难以写成标量奖励 | ❌ 很难 | 先做奖励工程,否则模型必然"刷奖励" |
| 智能体行为可能造成危险后果 | ⚠️ 必须有护栏 | 加安全约束与人工回退,见RL 系统解剖 |
最贵的误用
把"环境成本极高、无法模拟、无法承担试错"的问题硬套 RL,同时奖励又写不准——三个雷一起踩。此时唯一合理的路径是:先离线数据 + 行为克隆打底,再逐步过渡,见离线强化学习的决策树。
七、通往其余站点的导览
读到这里,你对 RL 有了地基级理解。接下来往哪走取决于目标:
- 想系统学数学框架:读马尔可夫决策过程(五元组、贝尔曼方程),配套数学基础速查。
- 想知道价值怎么学:读价值学习(从动态规划到 DQN 的完整脉络)。
- 想知道策略怎么直接学:读策略梯度方法(REINFORCE → PPO)。
- 想先看一个"史诗级"例子建立信仰:读AlphaGo 与蒙特卡洛树搜索,看"学习 × 搜索"如何战胜人类。
- 想动手:直接进Gymnasium 渐进式教程,或者先看学习路径:三条路线选一条适合自己的路。
- 想搞清和别的学科的区别:进RL vs 相邻领域。
最后一句送给你:RL 是"学得快、忘得也快"的学科,概念不看第二遍就会漏——好在本站每个概念页都自带"直觉 + 公式 + 例子 + 坑"四件套,回来复习的成本很低。
延伸阅读
- RL vs 相邻领域 —— 把本文"RL 和别的范式差在哪"的对照展开成七种范式的完整辨析。
- 马尔可夫决策过程 —— 智能体—环境循环的严格数学化:五元组、回报、贝尔曼方程。
- 多臂老虎机 —— 去掉时序维度的 RL:探索与利用的最小实验室。
- 价值学习 —— 本文 Q-learning 例子的完整升级路线:DP → MC/TD → DQN 家族。
- 策略梯度方法 —— 与价值学习并行的第二条主线:直接学"该怎么做"。
- AlphaGo 与蒙特卡洛树搜索 —— 用真实历史案例理解"RL + 搜索"的上限。
参考资料
- Sutton, R. S. & Barto, A. G. (2018). Reinforcement Learning: An Introduction (2nd ed.). MIT Press. 在线全文:http://incompleteideas.net/book/the-book-2nd.html —— 第 1 章"奖励假设"与第 3 章"智能体—环境接口"是本文的直接来源。
- OpenAI (2018). Spinning Up in Deep RL — Key Concepts. https://spinningup.openai.com/en/latest/spinningup/rl_intro.html —— "RL 是什么"的另一种精炼表述,含 reward hypothesis 讨论。
- David Silver (2015). UCL Course on Reinforcement Learning, Lecture 1: Introduction to Reinforcement Learning. https://www.davidsilver.uk/teaching/ —— 智能体—环境循环最经典的课件出处。
- Farama Foundation. Gymnasium Documentation. https://gymnasium.farama.org/ —— 网格世界与 CartPole 的可运行版本官方入口。
- Watkins, C. J. C. H. & Dayan, P. (1992). Q-learning. Machine Learning, 8(3-4), 279–292. https://link.springer.com/article/10.1007/BF00992698 —— 本文第五节 Q-learning 例子的原始出处。