跳到主要内容

朝高分走,同时别走远 — 最经典的那条路线为什么又贵又不稳

这一章讲三件事: 有了打分器之后怎么真的把模型往高分那边推; 为什么这一步必须同时勒住两根缰绳(每一步别迈太大 · 整体别离原来的自己太远); 以及它出事的时候长什么样、按什么顺序查。

它在全书链条里的位置: 第 07 章把「哪个更好」变成了一个可以求导的数, 但那个数还只是躺在那儿。 这一章是拿它去改模型的那一步—— 也是全书链条上最贵的一格。第 09 章整章的存在理由, 就是这一章的账单太难看。

第 04 章那条暗线「别走远」在这一章第二次出现,换了个名字、换了管住的东西。 它在这里管的是输出的分布(第 04 章那次管的是每一步的位移)。

1. 先看现象:打分器有了,为什么不能直接朝高分走

上一章结束时,你手上有一个会打分的模型。 最自然的下一步听起来毫无悬念:让模型多写几封信,谁得分高就往谁那边调。

真这么干,你会立刻撞上两件事。

第一件:它比你想的贵得多

这一步跑起来的时候,显卡里同时住着三个模型1:

住在显存里的东西它在干什么会不会被改
正在被训练的那个模型写信,这是唯一被改的
参考模型一个被冻住的副本,通常就是上一章之前那个示范训练的成果;它的活是当尺子——「原来的我大概会怎么写」不会,全程冻住
打分器给写出来的信打分不会
一个价值头一个小小的附加输出,专管一件事:「碰到这个提示词,我这一回合大概能拿多少分」

再加上训练必需的优化器状态(第 06 章那四笔账里最占地方的一笔), 书给的量级是:大约是单个模型显存占用的三倍1

这个三倍要有参照物。 第 06 章算过,一个 70 亿参数的模型光装进去做全量训练 就要百来 GB 级别;乘三之后,这件事从「一张顶级卡勉强够」变成「必须上服务器」—— 书的原话是,哪怕最小的实验通常也要服务器级的部署1

第二件:放开手它会直奔漏洞

第 07 章那条在泻湖里打转的船已经预告过这件事了。 打分器是一个有漏洞的裁判,而正在被训练的模型是一个极有耐心的钻空子的人。 所以这一步不能是「朝高分走」,只能是「朝高分走,同时别走远」。

所以这一章的名字很实在

这条路线的名字叫 PPO(全称 Proximal Policy Optimization, 字面意思就是「贴着近处走的策略优化」——名字里那个「贴着近处」正是这一章的全部主题)。 出门看任何一篇讲偏好训练的文章都会撞见这四个字母,所以这里留名。

但要先说一句实话,而且是书自己说的:

PPO 在实践中已经很大程度上失宠了,原因就是它低效。 作者仍然拒绝跳过它,理由是它是理解这一整族做法的最好例子, 是往后走的出发点2。他还补了一句: 在企业的实际部署里碰到原味 PPO 是相当少见的3

所以读这一章的姿势是:不是学一个你明天要用的工具,是学一套后面每一条路线都在改的骨架。

2. 顶层全景:一批信在这套流程里走一圈

┌─ 一个提示词 x(「保单 P-4471……请写拒付说明信」)

├→ ① 正在训练的模型写出几封候选信 ← 慢。一个词一个词地写

├→ ② 打分器给每封信打一个分 ← 快

├→ ③ 减掉一个「本来预期能得多少分」 ← §4:剩下的才是有用的信号
│ 剩下的叫「比预期好多少」

├→ ④ 照这个信号反推每个参数该往哪挪
│ 但每一步的挪动幅度被裁在一个小区间里 ← §5

├→ ⑤ 同时算一笔账:参考模型看到这几封信会有多意外
│ 越意外,扣分越多 ← §6 ★「别走远」

└→ 挪一步 → 回到 ①,写下一批

图说:**②③④ 是「朝高分走」,⑤ 是「别走远」。**
这一章后面每一节各讲这条环上的一格,**用的是同一批信、同一组数**。

主走查(全章共用): 让模型为 P-4471 这个提示词写 4 封候选信, 跟着这 4 封信走完上面一整圈,看每一格上具体发生了什么。 下面所有数字都是为演示编的,不是真实数值;编造的部分每次出现都会再标一次。

3. 机制一:不必知道正确答案,只需知道哪次结果好

它解决什么问题

教一个东西做事,最直觉的办法是告诉它正确答案。 第 05 章那条路(给它看示范)就是这么干的——每个位置的正确 token 摆在那儿,照着对就行。

但这条路走到这里已经断了: 你手上没有「完美的拒付信」。 你只有一个会打分的裁判,和一堆模型自己写出来的、参差不齐的信。

怎么做:一个走迷宫的机器人

作者用了一个很小的场景把这件事讲穿4:

想象你在教一个机器人走迷宫。 你并不告诉它最优路径(你自己可能都不知道), 而是让它自己乱走,然后:走得离出口更近的那些动作,以后多做一点; 走进死胡同的那些动作,以后少做一点。

这就是这一族方法的全部直觉,它有个名字叫策略梯度 (policy gradient——「策略」这个词第 07 章讲过,就是正在被训练的那个模型本身; 「梯度」是第 02 章讲过的那个「每个参数该往哪边挪」的方向)。

它写成一句话是:

把「导致好结果的那些动作」的概率抬高一点,把「导致坏结果的那些动作」的概率压低一点。 抬多少压多少,按结果有多好来定。5

为什么这有效

因为它把要求降低了整整一档。

需要什么给它看示范那条路这条路
你必须知道正确答案是什么只需知道哪次结果更好
谁提供人,一条条写出来打分器,任意多条

这一降就是第 07 章那笔经济账的落点。 「认得出比写得出便宜 60 倍」之所以能变成训练,靠的就是这个方法只吃「哪次好」。 书里的原话:这一点正是偏好优化「容易伺候」的本性所在, 而这个本性反过来支撑了它的经济学5

走查上的这一步

提示词 x =「保单 P-4471,42 岁,腰椎 MRI,拒付代码 CT-06,依据第 7 条第 3 款,
请写拒付说明信」

让当前模型写 4 封:y₁ y₂ y₃ y₄
打分器打分: y₁ = 2.1 y₂ = 1.4 y₃ = 2.6 y₄ = 1.9

← 到这一步为止,策略梯度想干的事是:
把 y₃ 里出现过的那些用词的概率全体抬高,把 y₂ 里的全体压低。

(这 4 个分数是为演示编的,不是真实数值。)

但先别急着照这个做——下一节说明为什么这样直接做会失灵。

4. 机制二:把「好不好」换成「比预期好多少」

现象:全是正分的时候,它什么都学不到

看上面那 4 个分:2.1、1.4、2.6、1.9。全是正的。

按上一节的做法,这 4 封信里出现的写法会被全体强化—— 包括那封只拿了 1.4 分的、明显更差的 y₂。 它只是因为「碰巧发生在一个正分之前」就被奖励了。

书里对这个局面的判词很不客气:

训练变成一场随机游走,中间偶尔穿插几次运气好的更新。 而且这不是理论上的担心——梯度方差过大,正是朴素策略梯度 在除了最简单的问题之外全都失败的首要原因6

(「方差过大」在这里的意思就是信号忽上忽下、抓不到稳定方向。)

怎么做:减掉一个基准

做法朴素到有点好笑:减掉一个数。

把问题从「这次结果好不好?」换成「这次结果比预期好多少?」7

减掉的那个数叫基线(baseline)——它是「碰到这种局面,平均大概能拿多少分」的估计。 §1 表里那个价值头,活就是估这个数。

减完剩下的东西有自己的名字,叫优势(advantage): 正数代表这一回合超出了预期,负数代表低于预期7

走查上的这一步

价值头对这个提示词的估计:2.0
(意思是:「碰到 P-4471 这类信,我这一回合大概值 2.0 分」)

优势 = 分数 − 2.0:
y₁: 2.1 − 2.0 = +0.1 ← 几乎没信息,梯度接近 0
y₂: 1.4 − 2.0 = −0.6 ← 明确压低
y₃: 2.6 − 2.0 = +0.6 ← 明确抬高
y₄: 1.9 − 2.0 = −0.1 ← 几乎没信息

★ 对比一下:减之前,4 封信全被抬高;减之后,
只有真正好的和真正差的在推动学习,平平无奇的那两封几乎不出力。

(2.0 这个估计值是为演示编的。)

为什么这么做不会把方向带偏

这是最容易起疑的一点:凭空减掉一个数,不会把答案改错吗?

不会,而且这有数学保证。 书给的理由一句话就说完了:

这个基线只依赖于「局面」,不依赖于「你选了哪个动作」。 所以它对每个动作的影响是一样的,减掉之后期望方向完全不变, 只是方差大幅下降——而方差下降意味着更快、更稳地收敛7

这一条值得记住,因为它在第 09 章会以另一种形态回来: 那里的做法是不再养一个价值头,直接拿同一个提示词下几份回答的平均分当基线思路完全一样,只是基线从「估出来的」变成了「当场算出来的」。

5. 机制三:裁剪 —— 「可以进步,但别这么起劲」

现象:一次更新就能把模型推进陌生地带

现在方向对了,还剩一个问题:一步迈多大。

书举的例子很具体:假设当前模型给某个高分回答只分配了很低的概率。 朴素的做法会说「那就把它变得可能得多」—— 一次更新就可能把这个概率乘上 10 倍甚至更多8

问题不在这一步本身,在下一步:

更新之后的模型已经站在陌生的地带上了。 在旧模型下看起来可靠的那些方向估计,在新模型下可能是误导性的, 于是引发一连串糟糕的更新9

这就是第 04 章那张地形图上「一步迈太大、跳出盆地」的同一件事, 只是这次跳出去的不是能力,是可靠的方向估计

怎么做:给「变了多少」设一个上限

PPO 的做法是盯住一个很具体的量:

概率比 = 新模型给这个 token 的概率 ÷ 旧模型给这个 token 的概率。 比值接近 1,说明两个模型差不多;比值偏离得厉害,说明变化太大10

然后把这个比值硬裁在一个小区间里,区间宽度由一个旋钮定, 这个旋钮的名字是 ε,常用取值 0.1 或 0.210

取 0.2 的意思就是:任何一次更新,都不许把一个动作的概率改动超过两成—— 不管它看上去多有优势11

走查上的这一步

盯住 y₃(优势 +0.6)里的一个具体位置:
模型已经写出「……经审核,您申请的腰椎 MRI」,下一个 token 是什么?

旧模型给「未获」的概率:0.30
这一步的梯度想把它推到: 0.42 → 概率比 = 0.42 / 0.30 = 1.40

ε = 0.2 → 允许的上限是 1.20
裁剪之后: 0.36 ← 这一步只准走到这里

★ 效果:方向没变(仍然是抬高),但幅度被砍掉了一半多。
下一轮如果它仍然是好的,可以接着抬;不是的话,损失有限。

(0.30 / 0.42 这两个概率是为演示编的;ε = 0.2 是书里给的常用值。)

为什么这有效:一句反直觉的原话

作者自己承认这听着别扭:

我们实际上是在告诉模型:去进步,但别这么起劲。 抑制模型的热情会让训练慢一点,但会稳定得多12

这就是 PPO 名字里那个「贴着近处走」的由来,也是它能稳定训练、 而更早的策略梯度方法常常直接崩掉的原因11

6. 机制四:罚它偏离原来的自己 —— 「别走远」的第二个名字

这一节是这一章的命门,也是第 04 章那条暗线第二次出现的地方。

先说清楚它和上一节不是一回事

这是最容易混掉的一处,所以先摆出来:

上一节的裁剪这一节的偏离惩罚
拿谁当参照上一步的自己训练开始前的那个自己(那个被冻住的参考模型)
管的是每一步能迈多大走到最后离起点有多远
会不会累积会。裁剪只管单步,一万小步照样能走到天边不会。它盯的是绝对距离

一句话:裁剪防的是「一步摔死」,这一节防的是「一路走丢」。

书对它的定性很高:

这个约束大概是语言模型 RLHF 里最重要的部件, 它承担的作用是裁剪那个目标在数学上根本做不到的。13

它是怎么算的

它量的东西可以用一句大白话说清,而且这句话就是书里的:

参考模型看到「正在被训练的这个模型」写出来的东西,会有多意外。14

意外程度越高,扣的分越多。这个量的名字叫 KL 散度 (KL divergence——两个概率分布之间的一种距离;它的名字来自两位统计学家, 出门在任何一篇讲这件事的文章里都会撞见 kl 这个字眼,所以留名)。

于是这一步真正在最大化的东西不是分数,而是:

打分器给的分 − β × 参考模型的意外程度
└── 朝高分走 ──┘ └────── 别走远 ──────┘

β 是控制这条绳松紧的旋钮,书给的常用起点是 0.02, 可调范围 0.01–0.115

它同时干两件事

这一点必须分开说,因为两件事经常被混成一件16:

职责具体挡住什么
① 缩小作弊的搜索范围模型要想找到打分器的漏洞,往往得跑到很远的地方去。绳子拽住了,它就只能在「参考模型也说得出口的话」这个范围里找改进
② 保住已经会的东西训练期间没被奖励过的能力(比如翻译、写代码)不会因为「反正没人给分」而被丢掉——这正是第 04 章那个灾难性遗忘,只是换了场景

第 07 章末尾那句「第一条防线的名字第 08 章会讲」,兑现的就是这里。

这就是「别走远」的第二副面孔。 第 04 章那次它叫学习率,管的是每一步的位移; 这一次它管的是输出的分布——「你写出来的东西,不许让原来的自己认不出来」。 两者不能互相替代:学习率再小,一万步之后照样能走到天边; 而这条绳盯的是绝对距离,和走了多少步无关。

走查上的这一步:那句谄媚的开场白

这是书里给的一个具体例子,我们把它落到走查上17:

训练跑到第 3 轮,读一读模型现在写出来的信:

「感谢您一直以来选择本公司,您的健康始终是我们最重要的关切。
经审核,您申请的腰椎 MRI 未获批准……」

← 那句开场白是新长出来的。
打分器给的分:从 2.6 涨到 3.4 ← 它喜欢这种话
参考模型的意外程度:12.5 ← 它从来不这么开头

健康区间是 3 到 10(书给的数)。12.5 已经越界。

β = 0.02 时: 3.4 − 0.02 × 12.5 = 3.15 ← 罚得太轻,划算,它会继续这么写
β = 0.06 时: 3.4 − 0.06 × 12.5 = 2.65 ← 罚到低于原来的 2.6,不划算了,它会收回去

(3.4 / 12.5 / 两个 β 取值下的结果是为演示编的;
健康区间 3–10 和 β 的常用范围是书里给的。)

书对这个例子的收口是:选对了 β,模型会学着变得更有帮助, 而不会退化成一台谄媚机器——因为谄媚需要偏离参考模型太多,不划算17

这个旋钮的两头都是坑

太高:惩罚压过奖励,模型几乎不动,训练没有进展。 太低:约束形同虚设,模型漂得很远,作弊和能力退化随之而来。15

书给的常规做法是让它自己调: 设一个目标偏离量, 离得太近就把 β 调小(放绳),离得太远就把 β 调大(收绳)。 这套做法叫自适应 KL 控制器,好处是对 β 的初值不那么敏感15

为什么偏偏用这个量,而不是别的距离

书专门开了一个小节回答这个问题,答案有两层18:

  1. 它是不对称的,而这个不对称正是我们要的。重罚「参考模型根本不会说的话」,而对「参考模型爱说、你却不说」的情况罚得轻。 换句话说,它拦的是往外跑,不是往里缩——这正好对应「别做出格的事」;
  2. 别的距离(比如一种叫 JS 散度的对称版本)偶尔也有人用, 但这个量仍是标准选择,理由很实在:它管用,而且这一行已经攒下了怎么调它的直觉。

7. 机制五:出事了按这个顺序查

先给三个要盯的读数

跑起来之后,主要盯两个数19:

读数你想看到什么
objective/scores(平均得分)稳步上升,而且不要有可疑的突然跳升——那多半是找到漏洞了
objective/kl(偏离量)待在 3 到 10 之间。低于这个区间说明它几乎没在学,高于则说明它正在危险地漂离参考模型20

还有第三个值得看的:模型输出的「熵」——粗略地说就是它还剩多少随机性熵掉下去通常意味着训练信号不够,它已经缩成翻来覆去的几种说法了21

一张失败模式对照表

书给了一张表,七种症状各配一个成因和一个动作22:

症状多半是什么原因怎么办
得分很高,输出却是胡话找到打分器的漏洞了收紧那条绳(调大 β);训好几个打分器取平均
各项读数乱跳、质量忽好忽坏学习率太高,或者每批样本太少降学习率;加大批量
偏离量暴涨β 太小调大 β;换成自适应
偏离量贴着 0 不动β 太大,或学习率太低调小 β;提高学习率
输出越来越长打分器偏爱长回答(第 07 章那件事)加一条长度罚
信写到一半就断了模型学会了不写结束标记,好把回答拖长给「没写完就结束」加一条专门的罚(参数名 missing_eos_penalty)
翻来覆去就那几种说法探索不够给「保持随机性」一点点奖励(熵奖励)

一个固定的排查顺序

这条是全章最能当场用的东西,书写得像一份操作手册23:

第 1 步:先查打分器。随机采一批输出,让它打分,
然后自己看一眼——这些分符合你的直觉吗?
✗ 不符合 → 问题在上游,回第 07 章,别在这儿调参数

第 2 步:再看偏离量。
爆了 → 收绳(调大 β)
贴着 0 → 放绳(调小 β)

第 3 步:最后,把模型写出来的东西读一读。

书给这一步配的原话很值得抄下来: 盯着损失曲线看,只告诉你「有事不对」;读输出,才告诉你「不对在哪」。23

走查上的落点就是上一节那句谄媚的开场白—— 它在曲线上只表现为「得分涨了、偏离量也涨了」, 而「涨的是一句拍马屁的话」这件事,只有读出来才看得见。

顺带说清楚两个几乎没人讲的旋钮

书特意提了两个24:

旋钮管什么常用值
优势估计的平滑系数(GAE 的 λ)把「往后看几步」混合起来算优势:接近 1 看得远、偏差小但噪声大0.95,这一行的事实标准
熵奖励系数给「保持随机性」一点奖励,防止模型缩成翻来覆去的几句通常设 0,必要时给 0.001

书自己的定性:这两个很少有大影响,但如果别的旋钮都调过了训练还是不稳,值得动一动。

还有一件事影响整个跑法:生成慢、优化快

这一步的循环是**「生成 ↔ 优化」交替**,而两者的速度差得很远:

生成是一个词一个词往下写的,天生慢;优化可以并行,快。25

这是第 07 章那条「自己现生成着学很贵」的具体形态, 也是第 09 章那条路能便宜下来的直接原因——它把「生成」这一半整个拿掉了。

最后,学习率在这里比第 06 章低一个数量级

书给的整张旋钮表里,最该记住的一条是26:

这一步的学习率,通常比给它看示范那一步低一个数量级。 书给的起手值是 5×10⁻⁶,可调范围 10⁻⁶ 到 5×10⁻⁵。

理由一句话: 这一步是在对一个已经能干活的模型做增量改进, 不是在教它新本事26参照物就在第 04 章的走查里——那里给的示范训练起手值是 2×10⁻⁵, 这里整整低了一档。

8. 这一套跑出来的到底是什么

前面七节讲的是怎么转,这一节讲它转出来了什么。

它突破的是示范训练的天花板

书把「听指令办事」重新框成了一个问题:这是一个奖励优化问题27

这个重新框定解释了一件事:为什么示范会不够。

可能的指令有无穷多种:摘要、翻译、解释、创作、分析、调试、建议……
每一种还有无穷多变体。

→ 没有任何有限的训练集能把「最优行为」演示完
→ 所以给它看示范这条路的质量天花板,就是那批示范例子本身的质量

而这条路只要求一件事:**人能认出两份回答里哪份更好地照做了。**
→ 于是模型能产出**超过任何一条示范例子所展示过的**输出。

书给的具体例子: 指令是「简明地总结这份文档」。 什么叫简明?一百字?两百字?为了简短牺牲完整,还是反过来? 这些是随语境变化的判断,没有哪一批有限的示范能覆盖所有语境; 但人能针对一份具体文档判断出「这两份摘要里哪份更符合『简明』」27

它真正装进去的东西:三条互相打架的品质

书引了一个框架来描述我们想要模型具备的品质,它由三个词组成28:

意思书给的例子
有帮助回应用户真正的需求,而不只是字面的请求有人问「怎么删掉一个目录下的所有文件」,有帮助的回答会附上一句危险警告,而不是只给出那条命令
无害拒绝可能造成损害的请求,同时不要谨慎过头一个因为「化学知识可能被滥用」就拒绝讨论中学化学的模型,在没有变得更安全的同时,已经失败于有帮助
诚实如实表达自己知道什么、不知道什么不知道就说不知道,承认局限,不编造听起来合理的信息;也包括对自己是个 AI 这件事保持透明

这三条经常互相打架,而书认为这正是这条路线贡献最大的地方29

它给的例子是一位家长问「我孩子发烧了怎么办」:

最有帮助的回答:按体重给出具体的退烧药剂量
↓ 风险
用错了会出事;而且有些药对幼儿本来就有禁忌
(书举的是阿司匹林那一类药与一种儿童综合征的关联)

最安全的回答:「请就医」
↓ 代价
对一件大多数家长自己能处理的常见状况来说,**谨慎到没用**

最诚实的回答:「我无法诊断,也无法考虑个体情况」
↓ 代价
对冲过了头,人拿不到任何有用的指引

★ 一个对齐得好的模型走的是三者的合成:
给出有依据的一般性指引(有帮助)+ 讲清局限并建议症状加重时就医(无害)
+ 说明不做检查就无法确定的东西(诚实)。

**没有任何一条明写的规则编码了这个平衡。**
它是从「许多面对过类似两难的标注员」的判断里长出来的。

而这个平衡落在哪儿,完全由偏好数据的构成决定

这是本节最该带走的一句30:

如果标注员系统性地偏好谨慎胜过有用,你会得到一个对冲过度的模型; 如果他们偏好直截了当胜过安全提示,你会得到一个不加限定就给具体建议的模型。

这就是第 07 章那句「偏好数据是天花板」在行为层面的样子。

前沿实验室攒下来的三条经验

书最后总结了几家把这条路线跑到规模上的实验室的经验31:

经验内容
稳的那一面显著提升「有帮助」和「听指令」,而且这个提升在不同规模、不同配置下都成立
难的那一面减少有害输出比提升有用性难得多——有害请求形态各异,而且有人会主动来找漏洞;训得太严又会变成「拒绝一切长得像有害请求的正常请求」
不体面的那一面可复现性差。 超参或数据构成的小变化,就可能训出在具体提示词上行为明显不同的模型,哪怕汇总指标看起来差不多

书的收口:这条路线强大,但不简单。它是一件需要熟练才能用好的工具, 而不是一个自己会跑的交钥匙方案。31

9. 作者的判断与证据

说法是哪一类说明
三个模型加价值头 ≈ 三倍显存有据的工程事实书直接给了这个量级,并据此推出「通常要服务器级部署」1
PPO 已在实践中失宠作者的判断他没配数据,但同时说明了他为什么仍然要讲它2
企业实际部署里少见原味 PPO作者的观察没配调研,是行业经验陈述3
减基线不引入偏差有据 + 可推导这是策略梯度理论里的标准结论,书给了理由(基线只依赖局面)7
ε = 0.2 时单次更新改动不超过两成定义的直接后果不是实验结果,是裁剪区间的字面含义11
偏离约束是「最重要的部件」作者的立场他给了论证(裁剪在数学上做不到这件事),不是实测13
偏离量健康区间 3–10经验法则书直接给区间,没给出处;当报警线用,不当验收标准20
那张失败模式对照表实践经验汇总书标明它来自生产经验与经验研究22
学习率比示范训练低一个数量级经验法则 + 理由书给了理由:这一步是增量改进而非教新能力26
谄媚那个例子作者构造的说明性例子不是实测案例,是用来解释偏离惩罚怎么起作用17
三条前沿经验他引别人的经验书写的是几家实验室「分享出来的经验」,没有逐条配尾注31

10. 边界与局限

  1. 数学推导我们没抄。 书给了策略梯度定理、裁剪目标、带惩罚的目标三个式子, 我们只交付它们的结构和用意。要看完整推导, 请接着读我们书架上专讲这件事的那一本32
  2. 价值头怎么训,书基本没讲。 它只在超参表里给了一个「价值函数系数」的建议值(起手 0.5), 至于这个头本身怎么学、学得好不好怎么判断,书没交代,我们也不猜。
  3. 完整的训练代码不在这里。 书给的是带注解的片段,并把完整实现放在配套笔记本里; 我们只交付原理与账。 各家框架的接口细节请看我们那个前沿框架书架。
  4. 「三倍显存」是量级不是精确值。 它取决于打分器和参考模型是不是同一个尺寸、 有没有用第 12 章那些省显存的技法。书给的是一个用来做决策的量级。
  5. 这一章没有回答「值不值得跑这条路」。 书自己也把这个判断推到了第 09 章末尾那条口径上 (举证责任在复杂的那一侧)。

11. 可带走的

  1. 有了打分器只是一半。 拿它去改模型的那一步,要在显存里同时住三个模型加一个价值头, 量级是单模型的三倍;
  2. 这条路线的名字叫 PPO,字面意思就是「贴着近处走」; 书自己说它在实践中已经很大程度上失宠,讲它是因为它是理解后面所有路线的骨架;
  3. 策略梯度只要求一件事:知道哪次结果更好。 不需要知道正确答案—— 这正是第 07 章那笔经济账能变成训练的原因;
  4. 奖励全是正数时,模型什么都学不到(好的坏的一起被强化); 减掉一个基线,把「好不好」换成「比预期好多少」,剩下的才是信号;
  5. 减基线不会把方向带偏,因为它只依赖局面、不依赖动作; 这条在第 09 章会以「拿同组回答的平均分当基线」的形态回来;
  6. 裁剪管的是每一步能迈多大:把「新旧概率之比」硬裁在一个小区间里, 常用宽度 0.2,意思就是一次不许把一个动作的概率改动超过两成;
  7. 作者对裁剪的定性:「去进步,但别这么起劲」——慢一点,稳得多;
  8. 偏离惩罚是「别走远」的第二副面孔,它管的是输出的分布。 它量的东西可以用一句话说清:参考模型看到这些输出会有多意外;
  9. 裁剪和偏离惩罚不是一回事:前者防「一步摔死」,后者防「一路走丢」。 裁剪只管单步,一万小步照样能走到天边;
  10. 这条绳同时干两件事:缩小作弊的搜索范围 + 保住训练期间没被奖励过的能力;
  11. β 太高不动、太低漂;常用起点 0.02,标准做法是让它自适应;
  12. 偏离量的健康区间是 3 到 10;objective/scores 该稳步上升, 突然跳升是找到漏洞的信号;
  13. 出事的排查顺序是固定的:先查打分器 → 再看偏离量 → 最后读输出。 「盯曲线只知道有事,读输出才知道是什么事」;
  14. 这一步的学习率比示范训练低一个数量级(起手 5×10⁻⁶ 对 2×10⁻⁵), 因为这里是增量改进,不是教新能力;
  15. 它突破的是示范的质量天花板——因为它只要求人能认出哪份更好, 而不要求人写得出最好的那份;
  16. 有帮助 / 无害 / 诚实三者天然互相打架,而平衡落在哪儿完全由偏好数据的构成决定;
  17. 这条路线可复现性差:超参的小变化就能训出行为明显不同的模型,哪怕汇总指标看着一样

12. 原文地图

主题原书章原文位置
三个模型 + 价值头 ≈ 三倍显存THE ECONOMICS OF JUDGMENTtext/51-fm-the-economics-of-judgment.txt:29(搜「three times the memory footprint」)
三阶段流水线与打分器的定位THE ECONOMICS OF JUDGMENTtext/51-fm-the-economics-of-judgment.txt:39(搜「secret mathematical heart」) · :41(搜「degenerate solutions」)
PPO 已失宠,但仍是出发点PPO: The Art of Cautious Improvementtext/56-fm-ppo-the-art-of-cautious-improvement.txt:11(搜「largely fallen out of favor」) · :31(搜「resist the urge to skip」)
迷宫机器人与策略梯度直觉PPO: The Art of Cautious Improvementtext/56-fm-ppo-the-art-of-cautious-improvement.txt:7(搜「navigate a maze」) · :19(搜「not what the optimal action would have been」)
全正奖励 → 随机游走PPO: The Art of Cautious Improvementtext/56-fm-ppo-the-art-of-cautious-improvement.txt:21(搜「random walk punctuated」)
减基线与优势PPO: The Art of Cautious Improvementtext/56-fm-ppo-the-art-of-cautious-improvement.txt:23(搜「better than expected」) · :27(搜「introduces no bias」)
裁剪:概率比与 εPPO: The Art of Cautious Improvementtext/56-fm-ppo-the-art-of-cautious-improvement.txt:33(搜「large policy changes can be catastrophic」) · :35(搜「typically 0.1 or 0.2」) · :39(搜「but not that enthusiastically」) · :41(搜「factor of 10 or more」) · :43(搜「more than 20 percent」)
偏离约束的两个职责PPO: The Art of Cautious Improvementtext/56-fm-ppo-the-art-of-cautious-improvement.txt:47(搜「the most important component of RLHF」) · :49(搜「prevents reward hacking by limiting the scope」)
β 的两头、自适应PPO: The Art of Cautious Improvementtext/56-fm-ppo-the-art-of-cautious-improvement.txt:51(搜「the penalty dominates the reward」) · :57(搜「adaptive KL controllers」)
「参考模型会有多意外」与谄媚例子PPO: The Art of Cautious Improvementtext/56-fm-ppo-the-art-of-cautious-improvement.txt:59(搜「how surprised the reference model」) · :61(搜「excessive flattery」)
为什么用 KL 而不是别的WHY KL AND NOT SOMETHING ELSE?text/57-fm-why-kl-and-not-something-else.txt:3(搜「Jensen–Shannon」)
超参表与学习率低一个数量级WHY KL AND NOT SOMETHING ELSE?text/57-fm-why-kl-and-not-something-else.txt:9(搜「PPO Hyperparameters for LLM RLHF」) · :91(搜「an order of magnitude lower than for SFT」)
GAE λ 与熵系数WHY KL AND NOT SOMETHING ELSE?text/57-fm-why-kl-and-not-something-else.txt:93(搜「industry standard」)
生成慢、优化快WHY KL AND NOT SOMETHING ELSE?text/57-fm-why-kl-and-not-something-else.txt:97(搜「autoregressive and slow」)
要盯的读数与失败模式表WHY KL AND NOT SOMETHING ELSE?text/57-fm-why-kl-and-not-something-else.txt:142(搜「objective/kl」) · :144(搜「PPO Failure Modes」) · :220(搜「typically from 3 to 10」) · :222(搜「starved of signal」)
排查顺序WHY KL AND NOT SOMETHING ELSE?text/57-fm-why-kl-and-not-something-else.txt:214(搜「Staring at loss curves」) · :210(搜「encountering vanilla PPO」)
突破示范的天花板What Emerges from the Processtext/58-fm-what-emerges-from-the-process.txt:9(搜「quality ceiling is set by the training examples」) · :11(搜「RLHF breaks through this ceiling」) · :13(搜「What constitutes concise」)
有帮助 / 无害 / 诚实What Emerges from the Processtext/58-fm-what-emerges-from-the-process.txt:21(搜「helpful, harmless, honest」) · :29(搜「antipyretic dosage recommendations」) · :33(搜「systematically preferred caution」)
前沿经验三条What Emerges from the Processtext/58-fm-what-emerges-from-the-process.txt:43(搜「dramatically improves helpfulness」) · :45(搜「adversarial users actively seek」) · :47(搜「Reproducibility is another challenge」)

Footnotes

  1. 出处:「THE ECONOMICS OF JUDGMENT」第 29 段(text/51-fm-the-economics-of-judgment.txt:29,搜「three times the memory footprint」)。原文写的是:PPO 在概念上很简单,但因为它要求同时跑三个模型(策略、参考、打分器),同时还要维护价值头和优化器,通常要看到大约三倍于单个模型的显存占用;这通常意味着连最小的实验都要服务器级的部署。书补了一句时代注脚:随着桌面级数据中心硬件的出现,小模型已经可以「在工作台上」训了,但这类工具在多数企业之外并不普及。 2 3 4

  2. 出处:「PPO: The Art of Cautious Improvement」第 11 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:11,搜「largely fallen out of favor」)与第 31 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:31,搜「resist the urge to skip」)。第 11 段的原话是 PPO「因为低效,在实践中已经很大程度上失宠」,但它是说明策略梯度怎么才能真正跑起来的完美例子;第 31 段说他之所以不肯跳过它,是要拿它当理解其他策略优化算法的出发点。 2

  3. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 210 段(text/57-fm-why-kl-and-not-something-else.txt:210,搜「encountering vanilla PPO」)。原文:在企业部署里碰到原味 PPO 通常并不常见,但这份实现是一个重要的理论起点,值得为了经验、也为了体会其他方法在易用性与效率上的好处而走一遍。 2

  4. 出处:「PPO: The Art of Cautious Improvement」第 7 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:7,搜「navigate a maze」)。原文的比方是:与其向机器人展示最优路径(那条路径你自己可能都不知道),不如让它探索,然后鼓励那些让它离出口更近的动作、抑制那些把它带进死胡同的动作。

  5. 出处:「PPO: The Art of Cautious Improvement」第 19 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:19,搜「not what the optimal action would have been」)。原文说这件事「了不起」的地方在于:要改进一个策略,我们只需要知道哪些动作导致了好结果,而不需要知道最优动作是什么;这正是偏好优化「容易伺候」的本性所在,而这个本性反过来支撑了它的经济学。原文还点明:不需要任何关于环境的模型,因为它能从自己的经验里学。 2

  6. 出处:「PPO: The Art of Cautious Improvement」第 21 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:21,搜「random walk punctuated」)。原文:如果一批轨迹的奖励全是正的、只是有些更正,梯度就会把所有被采取过的动作的概率一起抬高,包括平庸的那些,仅仅因为它们碰巧发生在正结果之前;而这不是理论上的顾虑——高方差梯度是朴素策略梯度方法在除最简单问题外普遍失败的首要原因。

  7. 出处:「PPO: The Art of Cautious Improvement」第 23 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:23,搜「better than expected」)与第 27 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:27,搜「introduces no bias」)。第 23 段把基线定义成「对这个局面的平均回报的近似」,减完之后那个量叫 advantage;第 27 段给了不引入偏差的理由:基线只依赖状态,不依赖所选动作,所以期望梯度不变、方差大幅下降,而更低的方差意味着更快更稳的收敛。 2 3 4

  8. 出处:「PPO: The Art of Cautious Improvement」第 41 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:41,搜「factor of 10 or more」)。原文设想的是:当前策略给一个拿到高奖励的回答分配了很低的概率,朴素梯度会说「让它变得可能得多」,一次更新就可能把这个概率乘上 10 倍或更多

  9. 出处:「PPO: The Art of Cautious Improvement」第 33 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:33,搜「large policy changes can be catastrophic」)。原文:如果一次更新把策略推进了一个它表现很差的区域,从那个糟糕策略上估出来的后续梯度可能指向没用的方向,恢复起来很困难;小改动更可靠但更慢,PPO 要找的是平衡——大到足以有进展,小到足够安全

  10. 出处:「PPO: The Art of Cautious Improvement」第 35 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:35,搜「typically 0.1 or 0.2」)。原文定义:概率比衡量「同一个动作在新策略下比在旧策略下可能多少或少多少」;接近 1 说明两个策略相似,偏离得多说明它们不同;PPO 把这个比值裁到 1 减 ε 与 1 加 ε 之间,ε 典型取 0.1 或 0.2。 2

  11. 出处:「PPO: The Art of Cautious Improvement」第 43 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:43,搜「more than 20 percent」)。原文:ε 取 0.2 确保任何单次更新都不能把动作概率改变超过 20%,不管这个动作看上去多有优势;策略于是一小步一小步地改进,每一步都小到让梯度估计仍然可信——这就是 PPO 能稳定训练、而更早的策略梯度方法常常崩溃的原因 2 3

  12. 出处:「PPO: The Art of Cautious Improvement」第 39 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:39,搜「but not that enthusiastically」)。原文承认这听着反直觉:我们实际上是在告诉模型「去进步,但别这么起劲」;抑制模型的热情会让训练慢一点,但会显著更稳定。同一段还说明了裁剪是双向的——它既拦住「把想鼓励的动作抬得太高」,也拦住「把想减少的动作彻底压死」。

  13. 出处:「PPO: The Art of Cautious Improvement」第 47 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:47,搜「the most important component of RLHF」)。原文的完整说法是:这个约束大概是语言模型 RLHF 里最重要的部件,它承担的作用是裁剪目标本身在数学上无法达成的;而 β 可能是「你会例行调整的、少数几个 PPO 自带超参数之一」。原文还写明参考模型通常就是初始化这次训练的那个 SFT 模型 2

  14. 出处:「PPO: The Art of Cautious Improvement」第 59 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:59,搜「how surprised the reference model」)。原文:这个惩罚项粗略地说,量的是参考模型看到被训练策略产出的输出时会有多意外;如果策略学会了生成参考模型绝不会产出的回答,这一项就会变得很大,抵消掉任何奖励上的收益

  15. 出处:「PPO: The Art of Cautious Improvement」第 51 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:51,搜「the penalty dominates the reward」)与第 57 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:57,搜「adaptive KL controllers」)。第 51 段讲两头的坑与自适应方案的逻辑(离得太近就减小 β 放开探索,离得太远就增大 β 拉回来),并说这种做法降低了对 β 初值的敏感度;第 57 段补充实现细节:通常在 token 这一级计算并求和,许多系统用自适应控制器动态调 β 以维持一个目标偏离量,而不是用固定系数。β 的常用范围 0.01–0.1、起手 0.02 出自「WHY KL AND NOT SOMETHING ELSE?」第 9 段那张超参表(text/57-fm-why-kl-and-not-something-else.txt:9,搜「PPO Hyperparameters for LLM RLHF」)。 2 3

  16. 出处:「PPO: The Art of Cautious Improvement」第 49 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:49,搜「prevents reward hacking by limiting the scope」)。原文明说这个约束服务于两个必要目的:第一,限制策略寻找漏洞的空间——策略可以改进,但只能在「仍然像 SFT 模型会产出的输出」这个空间之内;第二,保住预训练和 SFT 期间学到的能力,不受约束的策略可能失去它在 RL 期间从未被奖励过的任务的能力,这是灾难性遗忘的一种形式

  17. 出处:「PPO: The Art of Cautious Improvement」第 61 段(text/56-fm-ppo-the-art-of-cautious-improvement.txt:61,搜「excessive flattery」)。原文设想打分器给「以过度奉承开头的回答」打高分:不受约束的策略会学着普遍这么写,但如果参考模型很少这么写,这一项就会惩罚这种行为;策略必须权衡奖励收益和偏离代价,选对 β 之后,它会学着更有帮助而不退化成谄媚,因为谄媚的输出需要偏离参考模型太多 2 3

  18. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 3 段(text/57-fm-why-kl-and-not-something-else.txt:3,搜「Jensen–Shannon」)。原文:它并不是唯一一种度量分布之间距离的方式,但它的性质适合这件事——它惩罚策略把概率分配给参考模型不会产出的输出,从而防止向无意义空间的狂野探索;这种不对称通常正是我们想要的,因为我们希望策略待在参考模型的支撑集之内。Jensen–Shannon 这类替代散度偶尔有人用,但 KL 仍是标准,因为它管用,而且这一行已经围绕它积累了调参直觉

  19. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 142 段(text/57-fm-why-kl-and-not-something-else.txt:142,搜「objective/kl」)。原文点名的两个读数是 objective/scores(平均奖励,应当上升)和 objective/kl(与参考模型的偏离,应当保持适中)。

  20. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 220 段(text/57-fm-why-kl-and-not-something-else.txt:220,搜「typically from 3 to 10」)与第 218 段(text/57-fm-why-kl-and-not-something-else.txt:218,搜「suspicious spikes」)。第 220 段给了 3 到 10 这个区间:低于它说明策略几乎没在学,高于它说明正在危险地漂离参考模型;第 218 段说每批的平均奖励应当在没有可疑尖峰的情况下向上走,尖峰暗示对着奖励作弊。书没有给这个区间配研究出处,当报警线用即可。 2

  21. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 222 段(text/57-fm-why-kl-and-not-something-else.txt:222,搜「starved of signal」)。原文:策略熵揭示模型是否还保留着足够的随机性去探索,还是已经坍缩成重复的模式;熵下降通常是训练过程信号不足的迹象。

  22. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 144 段(text/57-fm-why-kl-and-not-something-else.txt:144,搜「PPO Failure Modes」)。这张表从第 146 段起逐格排开,共七行,我们照原表整理成一张中文表;书在第 7 段(text/57-fm-why-kl-and-not-something-else.txt:7,搜「based on production experience」)说明这些建议基于生产经验与经验研究 2

  23. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 214 段(text/57-fm-why-kl-and-not-something-else.txt:214,搜「Staring at loss curves」)。原文给的顺序是:第一,采样随机输出让打分器打分,看分数符不符合你的直觉——不符合说明问题在上游的打分器那一环;第二,查偏离量,爆了就收紧、贴着 0 就放松;第三,采样并策略的输出。那句收口是:「盯着损失曲线看告诉你有事不对,读输出才告诉你不对的是什么。」 2

  24. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 93 段(text/57-fm-why-kl-and-not-something-else.txt:93,搜「industry standard」)。原文说这两个超参很少被讨论:GAE 的 λ 通过混合多步回报来平滑优势估计,接近 1.0 用更长的视野、偏差小但方差大,语言模型上 0.95 左右是好的平衡,而且被认为是行业标准;熵系数在 RLHF 里常设为 0,但一个小的正值(比如 0.001)能帮助防止策略坍缩成过度重复的输出

  25. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 97 段(text/57-fm-why-kl-and-not-something-else.txt:97,搜「autoregressive and slow」)。原文:训练循环在生成和优化之间交替——生成从当前策略采样输出,由打分器打分,并与参考模型比对以计算偏离量;优化用得到的奖励信号更新策略。这种交替带来效率上的挑战:生成是自回归的、慢,而优化可并行、快。

  26. 出处:「WHY KL AND NOT SOMETHING ELSE?」第 91 段(text/57-fm-why-kl-and-not-something-else.txt:91,搜「an order of magnitude lower than for SFT」)。原文给的理由是:我们是在对一个已经有能力的模型做增量改进,而不是在教它新能力。 同一段还说 β「需要最主动的调整」。起手值 5×10⁻⁶ 与范围 10⁻⁶ 到 5×10⁻⁵ 出自第 9 段那张表(text/57-fm-why-kl-and-not-something-else.txt:9,搜「PPO Hyperparameters for LLM RLHF」)。 2 3

  27. 出处:「What Emerges from the Process」第 9 段(text/58-fm-what-emerges-from-the-process.txt:9,搜「quality ceiling is set by the training examples」)、第 11 段(text/58-fm-what-emerges-from-the-process.txt:11,搜「RLHF breaks through this ceiling」)与第 13 段(text/58-fm-what-emerges-from-the-process.txt:13,搜「What constitutes concise」)。第 11 段还提到 InstructGPT 那项工作在规模上验证了这条路:它把一个有能力但不可靠的基础模型变成了真正有用的助理 2

  28. 出处:「What Emerges from the Process」第 21 段(text/58-fm-what-emerges-from-the-process.txt:21,搜「helpful, harmless, honest」)。这个框架来自 Askell 等人的工作,书给了尾注;三条各自的解释见第 23、25、27 段。这是他引别人的框架,不是他自己提出的。

  29. 出处:「What Emerges from the Process」第 29 段(text/58-fm-what-emerges-from-the-process.txt:29,搜「antipyretic dosage recommendations」)与第 31 段(text/58-fm-what-emerges-from-the-process.txt:31,搜「neither recklessly specific nor uselessly vague」)。第 29 段那个例子里,书点名了阿司匹林与幼儿一种综合征的关联作为「禁忌」的具体例证;第 31 段的收口是:没有明写的规则编码了这个平衡,它是从打分器对众多类似两难中人类判断的近似里浮现出来的。

  30. 出处:「What Emerges from the Process」第 33 段(text/58-fm-what-emerges-from-the-process.txt:33,搜「systematically preferred caution」)与第 35 段(text/58-fm-what-emerges-from-the-process.txt:35,搜「compressed representation of what humans preferred」)。第 35 段那句更狠:打分器是训练数据里人类偏好的一份压缩表示;数据反映明智的取舍,它就学到明智的取舍,反之亦然——这条路提供的是「从判断里学价值」的机制,但它不保证学到的价值就是我们经反思会认可的那些。

  31. 出处:「What Emerges from the Process」第 43 段(text/58-fm-what-emerges-from-the-process.txt:43,搜「dramatically improves helpfulness」)、第 45 段(text/58-fm-what-emerges-from-the-process.txt:45,搜「adversarial users actively seek」)与第 47 段(text/58-fm-what-emerges-from-the-process.txt:47,搜「Reproducibility is another challenge」)。第 49 段(text/58-fm-what-emerges-from-the-process.txt:49,搜「rather than a turnkey solution」)是那句收口:它管用,而且管用得令人印象深刻,但它是一件需要熟练应用的精密工具,而不是一个自己会跑的交钥匙方案。第 41 段还有一句和第 01 章呼应的话:写作当时那些基础模型的「本质人格」,大多是经由这个过程诞生的。 2 3

  32. 补充(不在书里,依据我们的 book 书架):策略梯度定理、裁剪目标与带偏离惩罚的目标,这三个式子的完整推导本书只给结论。 依据: shelf=ai-book-reference/the-rlhf-book-reinforcement-learning-from#05-policy-gradient-ppo.md 事实=那一章专门拆的就是策略梯度到 PPO 这一条线的数学,包括优势估计与裁剪目标的来历,可以接着这一章往下读。