上一章《训练三阶段总览》讲到「对齐」:SFT 还在对答案,这里只剩人事后给的一个分数。 这一章讲清一件事:分数怎么变成方向。
《训练三阶段总览》里的 SFT 有标准答案:差距往回一传,参数朝正确的方向动一步。
可有些问题写不出标准答案。下棋时没人告诉你「第 37 手是错的」, 跟人聊天也没人写得出「最得体的那句回复」。能拿到的只有一个事后分数: 这局赢了,或者人类点了「这个更好」。
一图看懂 · 两种学习信号
只给分数、不给答案的学习,叫
你刚到一座新城市,街上有 A、B、C 三家馆子。没有人给你排名,只能一家家试: 这次好吃,下次多来;踩了雷,下次少来。把「馆子」换成三个动作, 把「好吃程度」换成分数,就是强化学习的最小问题。
下面这个
「比平时好」这件事,人一直在做:一家馆子如果比你的平均体验好,你就多去;
比平均差,你就少去。那个「平均体验」就是这一章的
互动 · 三家馆子:自己抽一次,再让它自己学
没有答案时,网络学的是:比平时好的动作,多做一点。
开关关着也能学会,但慢而且乱:分数都是正的,每家被抽中都会涨,只是好的那家涨得多一点。
减掉平均分之后,比平均差的那家会被往下按——这正反两个现象,小结那节的验证里都能看到。
上面那个智能体每选一家之前都在按概率抽——这是它和「贪心」的全部区别。贪心永远去历史平均分最高的那家: 第一口运气不好,可能再也不回头。
先押一个 · 贪心能找到 B 吗
统计 · 100 局里,最后停在 B 的局数
上面的例子里,选一家立刻拿到分,功劳很清楚。这个「这一次拿到的分数」就是本章的
R。真实的问题里,一步只拿到一小块分数(reward,奖励),
一整段走完才攒出一个
一个简单的办法是往回传的时候每退一步打个折。这个比例叫
互动 · 拖 γ,看五步各分到多少功劳
γ 也解释了为什么「越远的事越不确定」:同一个动作,隔五步才见结果,中间任何一步都可能把局面带偏。 真实的多步问题里,给某一步用的不再是那一次的分数,而是把它后面的分数按 γ 打折加起来的回报(return); 本章的玩具一步就结束,主式子里还没轮到它——下一章《RLHF 与 PPO》会接着讲。
第 2 节每次更新,后台执行的其实是同一行式子——「比平时好就多做」的求导版:
这一行就是三根概率条每次走的那一步
这条式子最贵的一步在右边那个 ∇log π(a):一根概率条凭什么能求导? 三家的概率是 softmax 算出来的:
对 log πa 求导,结果刚好只剩下一个很干净的东西:
抽中的那家推 +(1 − π),没抽中的各按自己的概率往下按。 三家概率都是 1/3 时,这一项是 1 − 1/3 = 0.67 和 0 − 1/3 = −0.33。 把上面这三根小柱代回去,第 2 节每次点一下后台发生的就是:
(R − b)在文献里叫
这一行有个名字:
一图看懂 · 谁改了谁
| 方法 | 核心一行 | 它修的毛病 | 在哪章细讲 |
|---|---|---|---|
| REINFORCE 本章 | ∇J = E[(R − b)∇log π(a)] | 没有答案也能算出往哪改 | 本章第 M 节 |
| Actor-Critic | A = R − V(s) | 滑动平均的基线太粗;换成学出来的评委 V(s) 方差小 | 《RLHF 与 PPO》第 4 节 |
| PPO | min(ratio·A, clip(ratio,1−ε,1+ε)·A) | 一步推太远策略会崩;把每步的更新幅度裁住 | 《RLHF 与 PPO》第 3 节 |
| GRPO | A = (r − mean(r)) / std(r) | 砍掉评委 V:b 换成同一题几次回答的平均分,省一整个模型 | 《RLVR 与 GRPO》第 3 节 |
| DPO | 直接用偏好对优化策略,不采样 | 绕开 RL 和奖励模型,训练更稳 | 《DPO 家族》 |
表里的记号:s 是当前局面,V(s) 是评委网络对「这局面平均能拿几分」的估计; ratio 是新旧策略选中这个动作的概率之比;ε 是允许一次变多大,常取 0.2; 小写 r 是一组回答各自的分数;「滑动平均」就是第 2 节那个 b; 偏好数据是人类标好的「这两条回答哪条更好」的成对样本。 公式里的 A 是优势,和 A / B / C 三家馆子无关。
三选一的问题里,300 步是一瞬间,因为分数是现成的。 真实问题里,每一步都要在环境里真的做一次——环境就是那个「做一次动作、给回一个分数」的东西。 这一节是这一章的账单。
| 代价 | 具体表现 | 什么时候真的会痛 | → 换成什么 |
|---|---|---|---|
| 样本效率低 (学一样东西要试多少次) |
同一个「选哪家」的问题,第 2 节打开「减去平均分」、抽满 300 次分,约 100% 的局能找到 B;关着时只有约七成,剩下约三成停在别家。带答案的数据每条都自带一个明确的答案 | 环境试一次很贵、很慢,或者有危险 | 模拟器 / 世界模型(《世界模型与具身智能》) |
| 方差大 | 三家真实平均分只差 1~2,每次抽到的噪声却有 ±2:一次高分说明不了什么 | 奖励稀疏(很多步才给一次分,大部分步拿到的是 0),一局很长时,梯度被噪声淹没 | 减去基线 b(第 2 节开关)、GAE(把后面的分数打折累加再做平滑;《RLHF 与 PPO》) |
| 奖励被钻空子 | OpenAI 2016 年公开过一个例子:赛艇游戏里,原地转圈刷目标点的得分比正常完赛还高 | 奖励只是目标的代理,不是目标本身 | KL 约束(新的策略别离旧的太远)、奖励模型(《RLHF 与 PPO》第 5 节) |
| 要有一个能反复试的环境 | 调参、写代码、玩游戏可以反复来;手术、谈判不行 | 环境不可重来,试错代价无法接受 | 人类反馈、模拟器 / 世界模型(《世界模型与具身智能》:在电脑里假装成环境) |
真实 ChatGPT 训练里,这个分数由学人类偏好的奖励模型给出,环境是一轮对话;下一章 《RLHF 与 PPO》接着讲。
一图看懂 · 分数写漏了一句话会怎样
这一章站在「⑦ 拧得动」上(七条线在第一性原理页那张地图里):能拧动的不是分数, 而是「抽到那个动作的概率」——第 2 节那三根条就是被拧的旋钮。
一图看懂 · R 减掉 b,正的推高、负的按下
回第 2 节:把「减去平均分」切到关(用 R),按「▶ 开始」跑满 300 步;
再按「↺ 重置」,切到开(用 R − b),再跑 300 步。盯 C 那根条:
关着的时候它常被一起推高,开着的时候它被按下去。
下面换一套编号:A–F 是拆任何方法时该问的六件事,和上面那条「⑦」不是一回事。
| 暗线 | 这一章的回答 |
|---|---|
| A 信息流动 | 进来的是一串「动作 + 分数」,不是带标签的数据;分数要等整段行为结束才回来一个数(标量)。 |
| B 什么被牺牲了 | 样本效率:同样学一件事,要多试几百次(第 6 节第一行那笔账)。 |
| C 参数账本 | 账单不是参数量,是采样次数:一局 300 步 × 100 局 = 30,000 次「抽取 + 打分」。 |
| D 跑在什么上 | 不是算力受限,是交互次数受限:策略只有三个数要更新(第 M 节那三根小柱),贵的是每一步都要拿回一个分数。 |
| E 它假设了什么 | 假设「分数就是目标」——奖励只是目标的代理(第 6 节那只转圈刷分的船)。 |
| F 违背了哪个直觉 | 「分数是正的,所以每一步都会学到」是错的:不减去基线,方向退化成「谁被抽中谁涨」。 |
它接住了上一章什么:《训练三阶段总览》(llm-training)的 SFT 还在对答案; SFT 之后的问题没有标准答案,这一章补上「分数怎么变成方向」。
它给下一章留了什么:三根条是玩具、b 是一个滑动平均; 下一章 《RLHF 与 PPO》要把它们换成整个语言模型和学出来的评委。
监督学习对答案,强化学习只有事后一个分数。
它把「比平时好就多做」写成一次乘法:(R − b)乘到抽中动作的对数概率上,分数就有了方向。
代价是试错:同一个动作要抽很多次,才知道它到底好不好。
上面讲的都是「够用」的版本。想往下挖,这里有三个入口—— 它们不是必修内容,是给想再往前走一步的读者准备的。