☰
0.6 训练方法——从 RLHF 到 RLCD
2026/10/1 15:16:53 网站建设 项目流程

文章目录

    • 写在前面
    • 一、五分钟速成:RLHF 是怎么工作的
    • 二、RLCD 考据:一个缩写,两种全称,三年撞名
    • 三、罚分的手感:亲手算一遍
    • 四、真跑 LAYA 的奖励函数:三合一账单
    • 五、奖励怎么变成梯度:GRPO 式策略,一句话版
    • 六、RLHF vs RLCD 总对照表
    • 自测十题
    • 本文总结
    • 写在最后
    • 附:术语速查表(第 6 版,累加 9 条)
    • 下篇预告

写在前面

第 5 篇结尾留了两个失望:noul 换两个标签词,概率从 0.935 崩到 0.000;77 个选项挤爆预算,模型不知所措。当时说,这两个失望都不是模型的错——是我们没看清它是怎么被训练成现在这个样子的。这一篇补上这块拼图。

家当零新增——还是pip install laya那套(第 5 篇装过的直接用),今天的实验只需要它自带的源码和一个能跑 numpy 的 Python。

先立军规。这一条是被一个四个字母的缩写逼出来的:

军规六:缩写和术语,引官方原文,不引转述。转述会变形——差一个介词,意思就漂了。今天第二节就是一个现成案例:一个缩写、两种全称、三年撞名,网上 90% 的文章都在以讹传讹。

一、五分钟速成:RLHF 是怎么工作的

要看清 RLCD 换掉了什么,得先知道 RLHF 原来是什么。五步流水线,每步一句话:

  1. 收集示范:雇人写出高质量问答,给模型当范文;
  2. 监督微调(SFT):拿范文训练——模型学会"话怎么说得像人";
  3. 训练奖励模型(RM):给同一个问题的两个回答,让人标注哪个更好——学出一个"替人类打分"的模型;
  4. 强化学习(PPO):让生成模型冲着 RM 的高分去优化——打分器当裁判,策略当球员;
  5. 循环往复:模型越答越像"人类喜欢的样子"。

注意第 3 步埋下的种子:裁判学的是"人类更喜欢哪个",不是"哪个更对"。Jev 的创始人 Diogo Almeida 在 OpenAI 干了约四年,做的就是 RLHF / InstructGPT / ChatGPT / GPT-4。他离职后说过一句话,被各家报道反复引用:

“We’ve been optimizing for humans, and we’re super human at pleasing humans.”
(我们一直在为"人类"优化,而我们已经超级擅长取悦人类。)

这就是"讨好"的病根——不是模型学坏了,是目标函数就写在那。讨好的具体症状你可能也见过:满口"绝对正确",其实心里没底。翻译成概率语言:报 0.99 的置信度,真实正确率只有 0.7。RLHF 的裁判根本不管这个——它只管这句话人类听着爽不爽。

决策模型不能这么练。它的产品就是概率本身,概率就是它的成品、它的口碑、它的一切。

二、RLCD 考据:一个缩写,两种全称,三年撞名

现在,主角登场。第 1 篇我们记过:Jev 的训练方法官方叫RLCD。当时立了 flag,说全称的考据"容易搞混"——现在兑现。

第一层,官方原文是哪个?我把 TypeSafe 官网首页拉下来查了原文,两处都写着:

Reinforcement Learning for Calibrated Decisions

注意:是for,不是 from。但你去搜,会看到大量文章——包括一些写得相当认真的技术博客——写成 “Reinforcement LearningfromCalibrated Decisions”。为什么讹变得这么普遍?因为 RLHF 全家的命名习惯是 from:RLHF(Reinforcement LearningfromHuman Feedback)、RLAIF(fromAI Feedback)、RLVF(fromVerifiable Feedback)。顺口,就像念惯了"星期一"的人容易把"星期日"也念快了。军规六就是从这来的:引官方原文,别引转述——转述连介词都保不住,何况数字。

第二层,这个缩写不是新的。2023 年就有一篇 arXiv 论文(编号 arXiv:2307.12950,Yang 等)用了同一个缩写,全称是 “Reinforcement Learning from Contrast Distillation”——干的是大模型对齐,和 TypeSafe 半点关系没有。所以你拿 “RLCD” 去搜文献,会撞出一篇对齐论文,别认错亲戚。这也解释了为什么官方页面要用全称+括号缩写的谨慎写法。

第三层,它到底换了什么?名字拆开就是答案:

  • Reinforcement Learning:训练范式还是强化学习的壳——有策略、有奖励、有更新;
  • Calibrated:优化目标换了——不再对"人类喜欢"优化,对校准优化:你说 87%,就得有 87% 的频率真的是;
  • Decisions:作用对象换了——不是生成文本,是出决策的概率分布。

一句话:RLHF 练的是"把话说得让人爱听",RLCD 练的是"把概率说得跟真的一样"。

三、罚分的手感:亲手算一遍

"概率跟真的一样"怎么度量?靠评分规则(scoring rule)——一个专门给"报概率"打分的函数。它判卷的对象不是答案对错,是你嘴里的把握跟事实差多远。

最直观的两个,拿垃圾邮件判断算一遍(真值:这封是垃圾邮件):

Brier 罚分 log 罚分 嘴硬模型 报0.99 0.0001 0.0101 诚实模型 报0.60 0.1600 0.5108 怂模型 报0.50 0.2500 0.6931

(Brier = (q−真值)²;log 罚分 = −ln(q)。两句代码就能复现:(0.99-1)**2和-np.log(0.99)。)

单看这张表,嘴硬模型明明是冠军——报 0.99 罚分最轻。但把真值换一下,同样的 0.99,这封不是垃圾邮件:

Brier = (0.99−0)² = 0.9801 log = −ln(0.01) = 4.6052

罚到肉痛。log 罚分尤其狠:赌对赏 0.01,赌错罚 4.6——460 倍的落差。这就是"罚不敢说真话的模型"的确切含义:不是罚保守,是罚嘴硬——敢报 0.99,就得接受一旦错了往死里罚。

那"说真话"到底是不是最优策略?数值验证(真实频率 p=0.6 的事件,扫一遍报什么 q 期望罚分最低):

期望Brier最低点: q=0.6 ← 恰好等于真实频率 期望log最高点: q=0.6 ← 两个规则结论一致 诚实报0.6的期望Brier: 0.2400 嘴硬报0.99的期望Brier: 0.3921 ← 期望上就先输一截

两条曲线的最优点都精确钉在 0.6——你的真实把握。这不是巧合,是一族叫**严格正则评分规则(strictly proper scoring rules)**的数学性质:在它的赌局里,唯一的最优策略就是如实报出你的真实概率。想多赚分?没有邪门歪道,只能把概率弄准。RLCD 的"CD"(Calibrated Decisions),就是拿这族规则当裁判。

四、真跑 LAYA 的奖励函数:三合一账单

评分规则是理论,LAYA 落地用的是什么?答案就在它开源的laya/common.py里,函数名proper_reward——RLCD 的"C"的那半段,就是这一百行代码。核心结构(源码原样,注释是我加的):

defproper_reward(q,target,qtype,mask,w_sph=0.5,w_rps=1.0):"""Strictly proper scoring rule reward: log score + spherical score + ranked probability score."""log_score=(target*logq).sum(-1)# ① 对数分:第三节那个 log 罚分sph=(target*q).sum(-1)/q.norm(-1)# ② 球形分:另一个正则规则r=log_score+w_sph*sphifqtype=="score":# ③ RPS:只对有序题生效rps=((cdf_q-cdf_t)**2).sum(-1)/(k-1)r=r-w_rps*rpsreturnr

三合一账单:log 分(主力)+ 0.5×球形分(保险)+ 只在 score 题上扣的 RPS。前两个你已经在第三节手算过了;RPS(Ranked Probability Score,有序概率分)是新面孔,它管一件很细的事:等级错得近,罚得轻;错得远,罚得重。

直接调真函数验证(from laya.common import proper_reward,四组对照):

score题·预测偏邻等级 q=[0.2, 0.6, 0.2](真值:等级2) log=-1.6094 0.5*sph=0.1508 RPS=0.3400 → reward = -1.7987 score题·预测偏远等级 q=[0.6, 0.2, 0.2](真值:等级2) log=-1.6094 0.5*sph=0.1508 RPS=0.5000 → reward = -1.9587 choice题·预测偏邻位 q=[0.2, 0.6, 0.2](真值:选项2) log=-1.6094 0.5*sph=0.1508 → reward = -1.4587 choice题·预测偏远位 q=[0.6, 0.2, 0.2](真值:选项2) log=-1.6094 0.5*sph=0.1508 → reward = -1.4587

三处读数,一处比一处有意思:

  • 上两组(score 题):log 分完全相同(-1.6094,因为错的地方给的概率一样),RPS 却分了远近——邻 0.34、远 0.50,远的额外多扣 0.16;
  • 下两组(choice 题):同样是"偏邻位"和"偏远位",奖励一模一样——choice 的选项没有顺序,偏到哪都一样错,不分远近;
  • 对照组(预测正确 q=[0.1, 0.1, 0.8]):reward = +0.2442,正的——对就有赏。

(表里的数字都是程序打印原值。你拿计算器逐项相加发现差 0.0001——不是账错了,是每个分项打印时各自舍入了 4 位;真值相加的打印结果就是表里的 reward。实测才作数,连舍入都要说清。)

现在回头看第 5 篇那个 score 返回 1.7722 的"期望值机制",拼图的另一半合上了:训练的时候,RPS 就在教它"等级错得近比错得远好"——推断的时候,它把概率质量摊在相邻等级上,期望值自然落在 1.77 而不是硬跳到 2。训练目标和输出格式,是同一枚硬币的两面。

五、奖励怎么变成梯度:GRPO 式策略,一句话版

公式不推(军规:概念即可)。整个 RL 部分干的事:

  1. 模型对一道题报出概率分布(前向);
  2. proper_reward对着答案算罚分/赏分(对账);
  3. 策略梯度把"多报真话能多拿分"推回模型参数(更新)。

GRPO 式的说法来自这里:不像 PPO 专门训一个独立的裁判网络,而是同一批问题的"组内相对表现"互为基准——省掉一个裁判,账单减半。LAYA 的训练 notebook 里还有个td_lambda_targets函数处理多轮对话轨迹的信用分配,那是另一个层面的工程细节,第 9 篇微调实战时再细看。

训练成本也顺便对个账(官方口径):Kaggle 免费双 T4、4 个 epoch、约 3 万道问题、4~5 小时跑完整个 RLCD 流程。对比大模型 RLHF 动辄几百张卡的阵仗,这就是"只判断不生成"在训练侧的红利——第 9 篇带你真跑一遍。

六、RLHF vs RLCD 总对照表

维度RLHFRLCD
优化目标人类评分员喜欢概率对真实结果负责
裁判奖励模型(学人类偏好)严格正则评分规则(数学性质)
裁判会不会错会——偏好本身有偏不会——"说真话"是唯一最优解
练出什么流畅、讨喜、可能过度自信校准——报 87% 就 87% 是
作用对象生成的文本决策的概率分布
病根/药方“Pleasing humans”(Almeida 语)罚嘴硬:赌对薄赏,赌错重罚

一个诚实的提醒收尾:RLCD 不是万灵药。它校准的是概率的诚实度,不是判断力本身——模型看不懂的问题,它照样诚实地报一个 0.5(第 5 篇的 77 选项翻车里你已经见过这种"诚实的茫然")。药只治嘴硬,不治眼瞎。眼瞎怎么治?选项设计(第 5 篇)+ 微调(第 9 篇),没有捷径。

自测十题

先别翻答案。这一篇手算过的数字,都是你自己的了。

点开对答案
  1. RLHF 五步流水线是哪五步?—— 收集示范 → SFT 监督微调 → 训练奖励模型(RM)→ PPO 强化学习 → 循环往复。(本篇一)
  2. Almeida 说 RLHF 的病根是哪句话?—— “We’ve been optimizing for humans, and we’re super human at pleasing humans”(为人类优化,超级擅长取悦人类)。(本篇一)
  3. RLCD 官方全称是哪个介词?——for(Reinforcement Learning for Calibrated Decisions,TypeSafe 官网原文两处)——不是 from,虽然网上大量文章写 from。(本篇二)
  4. 为什么 from 的讹变这么普遍?—— RLHF 全家命名都是 from(RLHF/RLAIF/RLVF),顺口。(本篇二)
  5. 拿 RLCD 去搜文献会撞到什么?—— 2023 年 arXiv:2307.12950,Reinforcement Learning from Contrast Distillation,大模型对齐方向的论文,与 TypeSafe 无关。(本篇二)
  6. 嘴硬模型报 0.99,赌对和赌错的 log 罚分各是多少?—— 对:0.0101;错:4.6052(−ln 0.01)——460 倍落差。(本篇三)
  7. "严格正则评分规则"的数学性质是哪句?—— 唯一的最优策略就是如实报出真实概率(诚实最优,无邪道)。(本篇三)
  8. proper_reward 三合一账单是哪三项?—— log score + 0.5×spherical score + (仅 score 题扣)RPS。(本篇四)
  9. RPS 为什么只在 score 题上生效?—— 等级有顺序:错得近罚得轻、错得远罚得重;choice 选项无序,偏哪都一样。(本篇四)
  10. RLCD 校准的是什么、不校准什么?—— 校准概率的诚实度(报 87% 就 87% 是);不校准判断力本身——看不懂的问题照样诚实地报 0.5。(本篇六)

本文总结

  • RLHF 五步:示范→SFT→奖励模型→PPO→循环;裁判学的是"人类喜欢",病根是讨好(Almeida 亲口);
  • RLCD 考据:官方 for(官网原文两处)、from 是讹变(RLHF 全家命名惯性)、2023 年已有同名缩写论文(arXiv:2307.12950)——军规六:缩写引官方原文,不引转述;
  • 罚分手感:报 0.99 赌对赏 0.0001、赌错罚 0.9801(Brier)/4.6052(log)——罚的不是保守是嘴硬;期望罚分最低点精确钉在真实频率 0.6——严格正则规则下诚实是唯一最优策略;
  • proper_reward 三合一:log(主力)+ 0.5×spherical(保险)+ RPS(仅 score 题,按远近罚)——全部真跑验算通过;
  • RPS 与 D5 合龙:训练时教"等级错得近比错得远好",推断时 score 返回期望值 1.7722 而非硬跳——同一枚硬币的两面;
  • 训练账单:Kaggle 双 T4、4 epoch、3 万问题、4~5 小时(官方口径,第 9 篇实证)。

写在最后

到这一篇,"33 毫秒"的三个秘密全部拆完:架构上为什么快(D3/D4)、接口上怎么问(D5)、训练上凭什么信(D6)。下一站是全系列的技术制高点:概率校准。你的模型已经会"诚实报概率"了——但出厂的它还差最后一道工序:温度缩放。为什么第 5 篇那次运行会弹出温度钳制的警告?confidence 和 answer_confidence 两套置信度该信哪个?说 87% 就 87% 是——怎么度量、怎么修?下一篇全部回答,还带你自己动手把一个歪掉的分布掰直。

附:术语速查表(第 6 版,累加 9 条)

术语一句话解释详解在哪篇
RLHF从人类反馈强化学习:裁判学"人类喜欢",练出讨好本篇
SFT监督微调:拿人写的范文教模型"话怎么说"本篇
奖励模型(RM)替人类给回答排座次的打分器本篇
RLCDReinforcement LearningforCalibrated Decisions,官方拼写 for 非 from本篇
proper scoring rule严格正则评分规则:说真话是唯一最优策略本篇
Brier score(q−真值)²:罚分平方级,嘴硬错一次罚 0.98本篇
log score−ln(q):赌对薄赏赌错重罚,460 倍落差本篇
RPS有序概率分:只在 score 题生效,错得远罚得重本篇
GRPO 式策略组内相对表现互为基准,省掉独立裁判本篇;9

(第 1~5 版共 51 条见前五篇,此处不重复。)

下篇预告

概率校准——ECE 与温度缩放

第 5 篇那次运行弹出的温度钳制警告、两套置信度 confidence 和 answer_confidence 的差别、LAYA 出厂 ECE 从 0.466 到 0.081 的来龙去脉——全系列技术制高点,自己动手把歪掉的分布掰直。模型嘴里的 87%,怎么变成真的 87%。

下一篇见。

读完有收获的话,点赞、收藏、关注三连走起——十篇连载,跟得住,学得完。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询