5.1 为什么需要强化学习
前四讲的模型都在做同一件事:给定输入,去拟合一个已经存在的正确答案。分类拟合标签,检测拟合坐标,生成拟合数据分布,反向传播永远知道「应该输出什么」,误差就是「差了多少」。这一节要说明的是:大量真实决策问题里根本没有这样的正确答案。下棋时没有哪一步被标注为「对」,只有最终输赢;机器人迈步时没有老师告诉你「这一脚该迈多大」;推荐系统也只看到用户点没点。你唯一能拿到的,是一串标量奖励(reward)——而且它常常既稀疏(绝大多数时刻为 0)又延迟(赢了整局才见到 +1)。
于是学习问题变了形:不再有「逐样本的指导」,取而代之的是「做完一整串动作之后,环境给了个分数」。这带来两个监督学习里不存在的麻烦:奖励必须跨越很长时间才能摊到具体动作上(信用分配),以及数据由智能体自己的动作产生,策略一变分布就漂移(非独立同分布)。再叠加一个纯粹的策略性矛盾——探索与利用——就构成了强化学习(reinforcement learning, RL)的全部难度来源。
这一节回答三个问题:RL 与监督 / 无监督的分界线在哪(5.1.1–5.1.2)?为什么「只有奖励」会让问题难得多(5.1.3–5.1.4)?以及最重要的工程判断:什么时候该用 RL,什么时候不该(5.1.5–5.1.6)。5.2 才会给出严格的数学形式化(MDP)——本节先用直觉把「为什么需要它」讲清楚。
5.1.1 三种学习范式的分界
按「数据从哪来」与「监督信号长什么样」把学习范式分成三类:
- 监督学习:给定固定数据集 ,样本 i.i.d.,每个样本有逐样本的目标 ;目标是学 ,最小化逐样本损失。
- 无监督学习:给定固定数据集 ,没有 ,但仍有逐样本的目标函数(似然、重构误差、对比损失);目标是刻画数据自身的结构或分布 。
- 强化学习:没有数据集——数据由智能体与环境交互现场产生;信号是标量奖励 ,它只评价结果、不指出哪个动作错了;目标是最大化长期累积回报而不是逐步损失之和。
无监督学习常被说成「没有标签」,但它仍然有逐样本、可分解的目标:重建误差、对数似然、对比损失——每个样本各算各的,梯度直接作用在该样本上。RL 的根本不同在于信号与决策之间隔着一整条时间轴:奖励是对轨迹的评价,而你要更新的是轨迹上的每一个动作。这条「从结果回到动作」的路径,就是信用分配问题;它使得「把奖励直接当损失反传」在数学上不成立——这也是为什么 RL 需要一整套值函数与策略梯度的机器,而不能只把奖励塞进交叉熵。
另一个看不见的分水岭是数据分布的所有权。监督学习里数据分布是环境给定的、固定的;RL 里分布由你自己的策略决定——你改一步参数,下一个 batch 的分布就变了。这两点合起来,就是「RL 比监督难」的完整解释。
| 维度 | 监督学习 | 无监督学习 | 强化学习 |
|---|---|---|---|
| 数据来源 | 固定的离线数据集 | 固定的离线数据集 | 与环境交互在线产生(或固定的离线轨迹,见 5.6) |
| 监督信号 | 逐样本目标 | 逐样本目标(似然/重构) | 轨迹级的标量奖励 |
| 样本独立性 | 近似 i.i.d. | 近似 i.i.d. | 强时序相关,且分布随策略漂移 |
| 优化目标 | 平均损失最小 | 似然最大 / 结构好 | 期望折扣回报最大 |
| 主要困难 | 泛化 | 目标设计 | 信用分配 + 非平稳 + 探索 |
| 一次错误探索的代价 | 无(离线) | 无 | 可能不可逆(机器人摔倒、用户流失) |
一个常见误解是:既然奖励是数字,那不就是标签吗?差别在于粒度与因果位置。标签 与输入 一一对应,它告诉你这个输入的正确答案是什么;奖励 对应的是一个状态转移(甚至一整局),它告诉你「刚才发生的事有多好」,但不告诉你哪一步该负责。用数学说:监督学习提供的是 的逐样本分解;RL 提供的是轨迹级样本 ,而 与 之间需要策略梯度定理(5.4)或值函数(5.2、5.3)才能搭起桥来。
反过来也成立:如果一个问题能被写成监督学习,就不该用 RL。RL 的方差、样本成本与不稳定性都远高于监督学习;「用 RL 显得更高级」是纯粹的工程负收益。
5.1.2 没有标签,只有奖励:交互循环
在离散时间步 上,智能体(agent)与环境(environment)交替交互:智能体观察到状态 ,依据策略选择动作 ;环境接收动作后给出即时奖励 与下一状态 。如此往复,得到一条轨迹 与监督学习的关键差别:没有任何标签告诉智能体哪个动作是对的,它只能从实际经验到的奖励里反推。学习的目标是找到一个策略 ——从状态到动作分布的映射——使得期望折扣累积回报最大(回报定义见 5.2)。
把这幅图记牢:数据集的箭头是单向的(读取),交互循环的箭头是双向的(动作改变环境,环境改变你的下一步输入)。这个「双向」带来三个后果:① 你的数据是你自己造成的,所以策略改进会改变数据分布(非平稳);② 想要获得未知区域的信息,就必须主动去那里(探索);③ 一次坏动作可能直接结束游戏,甚至造成不可逆损失(探索有代价)。监督学习里这三件事一件都不存在。
| 困难 | 一句话机制 | 现场表现(可作为诊断信号) |
|---|---|---|
| 信用分配(credit assignment) | 奖励是轨迹级、延迟的,必须摊到具体动作上 | 回报涨了但不知道是哪一步的功劳;更新后某个关键动作概率反而下降 |
| 非平稳数据(non-stationarity) | 数据分布由当前策略决定,策略一变分布就变 | 训练集(回放池)里混着多个版本的策略,旧数据带来的梯度方向与新策略冲突 |
| 探索—利用张力 | 信息只能采样获得,采样要花机会成本 | 早期收敛到次优策略后回报长期停滞;或永远在随机乱动、学不到东西 |
这三个困难在后面的算法里各有对策,先建个索引:信用分配靠值函数与贝尔曼方程(5.2)、策略梯度定理与因果性(5.4);非平稳靠经验回放(5.3)、重要性采样与近似 on-policy 的裁剪(5.5);探索靠 -greedy 与熵正则(5.5)、以及离线场景下的保守估计(5.6)。
5.1.3 试错与延迟回报:奖励到底有多难用
慢着——既然有奖励,为什么不能「奖励大的动作多做、奖励小的动作少做」?问题恰恰在于奖励不在动作上。
考虑三种典型的「奖励—动作」关系:
- 即时且稠密:网格世界里每走一步都有 −1 的惩罚。此时奖励几乎就是逐样本信号,RL 退化成「带反馈的搜索」,不算难。
- 延迟且稠密:机器人每步拿到「离目标更近了吗」的塑形奖励。信号密,但塑形函数是人写的、不是你要的——一旦它和目标不完全一致,策略会去优化那个函数(5.6 的奖励黑客)。
- 延迟且稀疏:只在成功时给 +1,其余全 0。此时在学会之前几乎收不到任何有用信号:随机策略在一局里做对每个关键动作的概率是指数级小的。这就是著名的「稀疏奖励问题」,也是 RL 在真实任务上最常卡住的地方。
设一局需要做对 个关键二值决策才能成功,随机策略的成功率为 : 时约 , 时约百万分之一。而策略梯度(5.4)的方差随回报尺度增长,值方法(5.3)的自举在信号到达之前只能传播「零」。因此稀疏奖励的现实解法往往是工程性的:课程学习(先学简单版本)、示范数据(模仿学习冷启动)、奖励塑形(人为加中间信号,但要防被 hack)、HER 式回顾重标注(把失败轨迹重新标注为目标达成)。这些手段都改变了「奖励有多难用」,而不是改变算法。
5.1.4 探索与利用:RL 独有的张力
在每一步,智能体面临两种互斥的选择:
- 利用(exploitation):选择当前估计最优的动作,把已知的好结果吃满;
- 探索(exploration):选择当前估计非最优的动作,以获取信息、可能发现更好的动作。
两者天然对立:永远利用会困在已知的次优解;永远探索则永远在浪费时间。这一矛盾在 RL 里无法消除,只能被管理。
走进一家餐厅,是点最熟悉的菜,还是试试没吃过的?关键的不对称在于:你只有一次机会(或少次机会),而信息只有吃下去才知道。这与监督学习形成尖锐对比——监督学习可以在离线数据集上把所有可能性都过一遍,因为「查看数据」不消耗机会成本;RL 里每次采样都要用真实的动作去交换,而错误动作的代价可能是不可逆的。
严格地说,探索之所以值得,是因为信息本身有价值:探索得到的知识会在未来的所有决策里反复兑现。因此最优策略会自然带上「乐观地高估未知选项」的倾向——这正是 UCB 一类算法的来历。
最简单也最常用的折中是 -greedy:以概率 选当前估计最优的动作,以概率 均匀随机选一个动作,并让 随训练从约 1.0 衰减到一个小值(如 0.05)。它的探索税是可以精确算出来的。
设 个动作的真实期望奖励为 ,令 、。若当前估计已指向最优动作 ,则 -greedy 的单步期望奖励为 即相对最优策略损失了 其中 是非最优动作的平均值。误差分两部分:探索税 ,以及估计错误时的选择税(若贪心动作比最优差 ,再额外损失约 )。
设随机变量 表示「是否探索」。当 (概率 )时动作固定为 ,期望奖励 ;当 (概率 )时动作从 个里均匀抽,期望奖励为 。由全期望公式 把 减到左边并把 写成 ,即得
∎第一,探索的代价与「动作之间的差距」成正比:如果所有动作都差不多(),探索几乎免费;如果最优动作远好于其余动作,探索就很贵。第二,衰减 的本质是「随时间换信息」:早期信息价值高( 大),后期继续探索的边际收益下降而税照付( 小)。这也是为什么几乎所有实现都用「先高后低」的调度,而不是常数 。
推论是:常数 下你永远拿不到满分——上限就是 。想突破它,就必须让 ,或改用「不确定性驱动」的探索(UCB / Thompson)。
| 探索策略 | 机制 | 代价 | 适用 |
|---|---|---|---|
| -greedy | 以概率 均匀随机,其余贪心 | 常数下限(探索税);均匀探索在动作多时浪费 | 通用基线,几乎零实现成本 |
| 衰减 (常用 1.0 → 0.05) | 早期充分探索、后期专注利用 | 调度是超参数;衰减过快会永久困在次优解 | 值方法默认(5.3) |
| 乐观初始化 / UCB | 对不确定性大的动作加奖励加成 | 需要不确定性度量;非平稳时易失效 | 老虎机、有状态的小规模问题 |
| Thompson 采样 | 从后验中采一组参数,按该参数贪心 | 需要维护后验(近似时成本高) | 老虎机、贝叶斯优化 |
| 熵正则 / 策略熵奖励 | 在目标里直接加 鼓励随机 | 需要调 ;过大会拒绝收敛 | 策略方法默认(5.5) |
去掉状态、只留「重复 次选择」的问题,就是多臂老虎机(multi-armed bandit)。它没有延迟奖励(奖励即时)、没有状态转移(选择不影响未来环境),剩下的唯一难题就是探索与利用。所以 bandit 算法剥离的正是 RL 最纯粹的那一层矛盾;完整的 RL 又额外背上了「延迟」与「非平稳」两个包袱。反过来,如果你发现一个问题里连探索都不需要(比如离线数据已经覆盖了所有动作),那么它大概率不该用 RL 求解。
5.1.5 什么时候该用 RL,什么时候不该
依次回答五个问题;任何一问答案为「是」就应当先走非 RL 路线:
| # | 问题 | 若「是」→ 应先考虑 |
|---|---|---|
| 1 | 能否为每个输入构造出正确的输出(哪怕很贵,只要能离线收集)? | 监督学习 / 模仿学习(行为克隆) |
| 2 | 能否离线枚举或仿真出足够覆盖的 数据? | 离线 RL(5.6)或监督式序列建模 |
| 3 | 任务是单步决策、没有状态与延迟? | 老虎机 / 上下文老虎机(5.1.4 的框架足够) |
| 4 | 有可微的环境或解析模型,能直接对目标求导? | 可微分仿真 / 最优控制(RL 的梯度估计是它的低效替代) |
| 5 | 错误探索的代价不可逆或极高(医疗、金融、真实用户)? | 先离线训练 + 保守上线(5.6),并做影子模式评估 |
反过来,RL 真正不可替代的场景满足三条同时成立:① 目标只能事后评价(下棋的输赢、长周期的业务指标);② 决策影响后续状态(延迟、序列依赖);③ 环境可以大量重复尝试或已有离线日志可用。三条缺一,通常都有更省的办法。
- 「有反馈就能用 RL」:点击率、A/B 测试指标、用户评分都是标量反馈,但若决策不影响未来状态(每条推荐相互独立),这就是上下文老虎机问题,用不着 MDP 那一整套机器。
- 「RL 一定比监督强」:恰恰相反——在样本效率、稳定性与可调试性上,监督学习全面占优。RL 是在没有标签时的昂贵补救,不是能力升级。
5.1.6 与 LLM 对齐的关系:为什么每个工程师都要懂这一讲
本讲后半部分的内容(5.6)与今天最受关注的一件事直接相关:把一个「极擅长续写」的基座模型,调成「愿意帮忙、且行为可控」的助手。这件事天然属于 RL 的适用范围——「什么样的回答更好」写不出精确的数值奖励,但人可以比较两个回答哪个更好;而一个 token 的改动会影响后续所有 token(延迟 + 状态依赖)。于是出现了三种做法:
| 做法 | 一句话机制 | 代价 / 前提 | 本讲位置 |
|---|---|---|---|
| RLHF(PPO + 奖励模型) | 用人类偏好训一个奖励模型,把它当环境奖励,用 PPO 优化策略并加 KL 约束 | 需要奖励模型 + 在线采样;调参成本高、可能被奖励模型带偏 | 5.6 |
| DPO / IPO / KTO / ORPO / SimPO | 用「KL 正则目标的闭式最优解」把奖励反解掉,偏好对齐退化成一个分类损失 | 省掉奖励模型与在线采样;但对偏好数据的偏差没有缓冲 | 5.6 |
| GRPO / 可验证奖励 | 去掉 Critic,用同一问题的一组答案的相对好坏估计优势;奖励来自「答案对不对」这类可验证信号 | 适合答案可判定的任务(数学、代码);组采样成本随组大小线性增长 | 5.6 |
一个诚实的提醒:以上三种做法的收益与边界仍在被研究(榜单分数、人类偏好与真实有用性之间并不总是同向)。本教程的处理方式是:把机制与代价写清楚,把争议并列呈现,不替读者下结论。
5.1.7 代码:-greedy 在 10 臂老虎机上的探索—利用曲线
下面用一个完全自包含的实验(不需要任何环境库)把 5.1.4 的三条结论量化出来:探索税的公式、衰减 的优势、以及「估计错误导致的选择税」。
import torch
torch.manual_seed(0)
K, STEPS, RUNS = 10, 1000, 200 # 10 臂、每轮 1000 步、重复 200 次独立实验
def run(eps_start: float, eps_end: float | None, decay_steps: int | None):
"""返回 (平均奖励曲线, 最优动作占比曲线) 在所有 RUNS 上的均值。"""
rewards = torch.zeros(STEPS)
best_rate = torch.zeros(STEPS)
for _ in range(RUNS):
mu = torch.randn(K) * 1.0 + 1.0 # 真实期望奖励(未知)
Q = torch.zeros(K) # 估计值:不做乐观初始化
N = torch.zeros(K) # 每个臂被拉过的次数
for t in range(STEPS):
# ① 探索率调度:常数 vs 线性衰减(衰减是「先买信息、后收收益」)
if eps_end is None:
eps = eps_start
else:
ratio = min(1.0, t / decay_steps)
eps = eps_start + ratio * (eps_end - eps_start)
# ② ε-greedy 选择:以 eps 均匀随机,否则取 argmax
if torch.rand(1).item() < eps:
a = int(torch.randint(K, (1,)).item())
else:
a = int(torch.argmax(Q).item())
# ③ 环境:奖励 = 真实均值 + 噪声。注意噪声让「单次观测」不等于「真实好坏」
r = mu[a] + 0.5 * torch.randn(1).item()
N[a] += 1
# ④ 用样本平均估计 Q:这是最朴素的「值估计」,等价于 α = 1/N 的增量更新
Q[a] += (r - Q[a]) / N[a]
rewards[t] += r
best_rate[t] += float(a == int(torch.argmax(mu).item()))
return rewards / RUNS, best_rate / RUNS
const_r, const_b = run(eps_start=0.1, eps_end=None, decay_steps=None) # 常数 ε=0.1
decay_r, decay_b = run(eps_start=1.0, eps_end=0.01, decay_steps=500) # 1.0 → 0.01
print("常数 ε=0.1 : 末 100 步平均奖励 %.3f,最优动作占比 %.1f%%"
% (const_r[-100:].mean(), 100 * const_b[-100:].mean()))
print("衰减 1.0→0.01 : 末 100 步平均奖励 %.3f,最优动作占比 %.1f%%"
% (decay_r[-100:].mean(), 100 * decay_b[-100:].mean()))
# 判据(可直接断言):
# 1) 两条曲线的「最优动作占比」都应收敛到明显高于随机的 10%,否则选择逻辑有 bug;
# 2) 衰减策略的末段平均奖励应高于常数 ε=0.1 —— 这正是探索税的体现:
# 按 5.1.4 的公式,常数 ε 带来 ≈ ε·(μ* − μ̄) 的持续损失,衰减则把这一项压到 ε_min 量级。
三点读代码的提示:
- 第 ③ 步的噪声是本实验的关键:如果奖励没有噪声,一次采样就能确定最优臂,探索问题消失(也就不用 RL 了)。噪声使得「估计」与「真值」分离,才会出现「选择税」。
- 第 ④ 步用样本平均而不是固定学习率:这与 5.3 的 是同一件事—— 是使样本均值无偏的最优步长;非平稳环境下则要用固定小 加遗忘。
- 本实验的 每轮重抽:这模拟了「每轮面对一个新环境」。工程评估里同样要多种子 / 多环境重复,理由见 5.7。
- 「RL 就是调一个网络去最大化奖励」:漏掉了两个决定成败的环节——环境(奖励函数)的设计与数据收集策略(探索)。绝大多数 RL 项目的失败不在网络结构,而在这两处。
- 「奖励是目标的数值化」:不是。奖励是代理(proxy),策略优化的是你写的奖励,不是你想要的意图。二者不一致时策略会精确地利用这个缺口(5.6 的 reward hacking)。
- 「-greedy 只是个小技巧」:它是「探索—利用」这一根本矛盾的最小可行解,而常数 的代价可以精确计算(本节定理 5.1.1)。把 当无关紧要的超参数,是训练停滞的常见原因之一。
- 「RL 的数据是独立同分布的」:整讲最容易踩、也最致命的一条。相邻样本由状态转移连接,天然相关;数据分布还随策略漂移。所有稳定化技巧(回放、目标网络、基线、裁剪)本质上都在人为制造 i.i.d. 的假象。
- 「离线数据够多就能直接套在线算法」:见 5.6——离线场景的失败不是数据量问题,而是分布外动作的估值外推问题。
Q1 用一句话说清「有标签」与「有奖励」的本质差别;并给出一个「有奖励但更适合用监督学习解决」的例子。
Q2 三个动作的真实期望奖励为 ,用 的 -greedy,且当前估计已指向最优动作。求单步期望奖励与探索税。
Q3 为什么「衰减 」比「常数 」好?请用信息价值与探索税两个角度各说一句。
Q4 一个推荐系统每条推荐互相独立、只关心点击率。它属于本节三分法里的哪一类问题?需要 MDP 与贝尔曼方程吗?
参考要点
Q1 标签与输入一一对应、逐样本可分解,直接给出「正确答案」;奖励是轨迹级标量,只评价结果、不指出哪个动作负责。有奖励但更适合监督的例子:用离线日志学一个「点击率预测器」——此时「是否点击」就是逐样本标签,本质是分类问题,用不到 RL。(另一个例子:有完整专家演示的模仿学习。)
Q2 ,故 ;探索税 。验算: ✓。
Q3 信息角度:早期「哪个动作好」的不确定性大,一次采样的信息价值高;后期估计已稳定,继续探索的边际收益低而税照付。探索税角度:常数 把上限钉在 ;衰减到 后这一项随之缩小,理论上可逼近最优。
Q4 属于上下文老虎机(contextual bandit):有状态(上下文),但动作不影响未来状态、奖励即时,因此是单步决策而非序贯决策,不需要 MDP、值函数与贝尔曼方程。它的核心难点只剩探索与利用(可用 -greedy、UCB、Thompson 采样)。
- Sutton & Barto, Reinforcement Learning: An Introduction(2nd ed., MIT Press, 2018)——第 1–2 章(RL 问题与多臂老虎机)、第 3 章(MDP 形式化)。免费官方 PDF 可检索作者主页;本讲 5.1–5.2 的骨架与它一致。
- Auer, Cesa-Bianchi & Fischer, Finite-time Analysis of the Multiarmed Bandit Problem(2002, Machine Learning)——UCB 的原始分析与遗憾界。
- Chapelle & Li, An Empirical Evaluation of Thompson Sampling(NIPS 2011)——Thompson 采样的实用对照实验(会议论文,无 arXiv 编号)。
- OpenAI Spinning Up(
spinningup.openai.com)的教学讲义——「Key Concepts in RL」「Intro to Policy Optimization」两篇适合作为 5.3–5.5 的第一遍预习材料。 - 母本 MIT 6.S191 的强化学习主题讲次(标题与编号以官网当期排课为准,需核实)——用于对照课程骨架与本教程的扩充范围。
本节小结:RL 把「有标签的监督」换成「与环境交互、从奖励里试错」;它与监督学习的真正分界线是信号粒度(轨迹级 vs 逐样本)与数据所有权(策略决定分布)。由此产生三个独有困难:信用分配、非平稳、探索—利用张力;本节把第三个困难的代价精确量化(定理 5.1.1),并给出「何时不该用 RL」的五问判据。下一节把交互循环形式化成 MDP,让「值」满足一个自洽的递归方程——这是全讲的数学地基。