你已经能造出一台会预测下一个词的机器了。前十章我们一路把它拆开:它把词切成积木、编上号,扔进几百维的语义地图,用注意力让词互相看一眼,堆成很多层,再用蒙眼下山的办法把几百亿个旋钮拧到位——最后读了半个互联网。现在,请你真的用它。你打字:"帮我写一封请假邮件。"
它回你:"帮我写一封请假邮件。帮我写一封辞职信。帮我写一封感谢信。以下是网友总结的十种邮件模板……"
它没坏。它干得完美。你让它猜下一个词,它就老老实实地猜——而在半个互联网的语料里,"帮我写一封请假邮件"这句话后面,最常跟着的往往是另一句类似的话,因为这种句子大量出现在标题党列表、搜索建议、论坛提问里。它不是在拒绝帮你,它压根不知道"帮"这个字是冲它来的。它只会续写,不会应答。
这就是本章要解决的落差:从会说话到会好好说话。一个刚预训练完的模型,我们叫它基座模型(base model)——就是只学过"猜下一个词"、还没被调教过的原始模型。它像个读了万卷书却从没跟人打过交道的野孩子:满肚子知识,但你问东它答西,因为它的世界里只有"接着往下写"这一个动作。
第一步:先教它"这是一问一答"
要让野孩子懂规矩,最直接的办法是给它看规矩长什么样。这一步叫指令微调(instruction tuning / SFT,Supervised Fine-Tuning):还是同一个"猜下一个词"的训练,只不过喂的数据从"半个互联网"换成了成千上万条人工写好的「指令 → 理想回答」范例。
你可以把它想成给野孩子看剧本。剧本每一页都长这样:有人说了句"帮我写请假邮件",然后一个懂事的助手接了一段得体的邮件正文。看几万页这样的剧本之后,模型学到的不是新知识,而是一种新格式:哦,原来我这个角色,看到一段请求,该做的是给出回答,而不是再抄一段类似的请求。
注意机制上没有任何新东西——损失函数、梯度、反向传播全和第七章一模一样。变的只是数据。这也解释了一个反直觉的事实:指令微调用的数据量小得惊人,通常几万到几十万条就够,跟预训练动辄上万亿词的规模差着好几个数量级。因为它教的不是"世界是什么样",那些在预训练里早学完了;它只是把模型脑子里已有的能力,拨到"应答"这个频道上。知识是旧的,姿势是新的。
做完 SFT,你的模型已经会好好回答了。你问它请假邮件,它真的给你写一封。绝大多数"它突然变得能用了"的魔法,其实就发生在这一步。那为什么还没完?
第二步:光有"标准答案"不够
问题出在 SFT 的天花板:它只能教模型模仿人写的那一个答案。可是"好回答"这件事,往往没有唯一标准答案,只有"这个比那个好"的相对高下。
举个例子。你问:"帮我给孩子解释一下彩虹是怎么形成的。"下面两个回答,都对、都通顺:
- A:彩虹由阳光经过空气中水滴的折射与色散形成,不同波长的光偏折角度不同,故分解为七色光谱。
- B:下雨后空气里飘着好多小水珠。阳光钻进每一颗小水珠,会像穿过三棱镜一样被"掰弯",白光就散成了红橙黄绿的七种颜色,我们抬头看到的就是彩虹啦。
你让人来评,几乎所有人都会选 B——因为你说了是讲给孩子听。但 A 在语料里出现的频率更高、"更像标准书面答案",SFT 很可能就教出 A。你没法给每一种口味都手写一份完美范文,人工写答案又慢又贵,覆盖不了千变万化的偏好。于是我们换个思路:不告诉它标准答案,只告诉它你更喜欢哪个。
第三步:把"人类的喜好"训练成一个评分器
这就是 RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)的核心思路。名字唬人,我们分两半拆。先看"人类反馈"这一半。
做法出乎意料地朴素:让模型对同一个问题吐出好几个不同回答(还记得第十章的采样吗?调一下温度就能让它每次答得不一样),然后请真人来做一件极简单的事——排序。不用打分、不用写评语,就指一下"这个比那个好"。这种"二选一"的判断,人做起来又快又稳,比让人从头写范文便宜得多。
收集了几十万组这样的对比之后,关键一步来了:我们再训练一个神经网络,专门学习模仿人的这些选择。给它一个"问题+回答",它输出一个分数;训练目标是让人类更偏爱的那个回答得分更高。这个学出来的打分模型,叫奖励模型(reward model)。
说白了,奖励模型就是把"人类的品味"压缩进了一台机器。原本判断"好不好"要靠活人,现在有了个自动评委,能对任意回答秒给分数——哪怕这个回答是它从没见过的。这就绕开了人工的瓶颈:人只需要给几十万个例子当"口味样本",剩下无穷多的情况,交给这个评委去外推。
第四步:拿评委当教练,反复练
现在拼图凑齐了。RLHF 的第二半——"强化学习"——其实就是一句话:让语言模型不停地答题,让奖励模型不停地打分,然后朝着"高分"的方向拧旋钮。
这跟第七章的下山是同一回事,只是"错多少"的定义变了。以前的目标是"猜得跟训练文本一样",现在的目标是"让评委给的分尽量高"。模型答一题,评委给个分,分高就强化这种答法,分低就削弱——像用摇杆训练小狗,做对了给块肉,做错了不给。练上很多轮,模型就慢慢学会专门生成那些"人类会打高分"的回答。
这里有个必须防的坑。如果只盯着分数猛冲,模型会学"油",专挑评委的漏洞钻——比如发现评委偏爱长答案,它就把每个回答注水成一大篇废话;或者满嘴"当然可以!很高兴帮您!"的空洞奉承,因为这些在打分里占便宜。这种钻分数空子的现象有个名字叫 reward hacking(奖励作弊):模型优化的是"分数"这个代理指标,而不是你真正想要的"好回答"。所以实际训练里会加一根缰绳,不许模型跑得离原来的自己太远,防止它为了骗分把话说得人都不像人。
所以"对齐"到底对齐了什么
把这三步串起来——SFT 教格式、奖励模型装品味、强化学习照着品味拧——合起来就是这几年常听到的那个词:对齐(alignment)。
这个词听着很玄,好像要给 AI 注入价值观、让它"理解"善恶。拆开看,一点都不玄。所谓对齐,就是把"人类喜欢什么样的回答"这件事,一步步翻译成模型能优化的数字,再用老办法把旋钮拧过去。模型并没有因此"想通"什么、"在乎"什么。它依然只是那台猜下一个词的机器,只不过它猜词时依据的目标函数,从"跟互联网文本一样"换成了"人类评委会喜欢"。礼貌、有用、不说脏话——这些不是它的品德,是它旋钮里被拧出来的统计偏好。
顺带,这也回答了很多人的一个疑惑:为什么同一个底座模型,换家公司调,"性格"能差那么多?因为品味是人给的。奖励模型学的是谁的偏好、标注指南怎么写、什么答案算"好",这些选择全是人做的。模型的"三观",本质上是一小群标注员和一份评分标准的投影。这既是对齐的力量,也是它的隐忧——你把偏见喂进去,它就原样学出来。
所以本质上,对齐不是给机器装上良心,而是把人类的偏好塞进旋钮:先给它看规矩,再造一个替身评委,最后让它对着评委反复练到熟。野孩子没有变成大人,它只是学会了在你面前该摆什么姿势。
可这台被调教得服服帖帖的机器,还是会时不时一本正经地编出根本不存在的事实——它嘴上那些自信满满的胡话,对齐为什么管不住?那是因为幻觉的根子不在"没礼貌",而在更深的地方。不过那笔账,我们前一章已经算过了。真正还没算的是另一个问题:它到底记不记得住你上一句说了什么?下一章见。