三轮训练将单词预测器变成聊天机器人。其中没有魔法。
三轮训练将单词预测器变成聊天机器人。其中没有魔法。
上一篇文章中我提到,Transformer——几乎所有你听说过的模型所基于的架构——不过是三个简单的工程修补堆叠在一起:一个捷径、一个重新缩放、一个加权查找。没有一个是魔法。
然后我最后留了个伏笔。我说架构只是凳子的一条腿,另外两条分别是规模,以及“将原始的下一个词预测器变成值得交谈的东西的预训练+对齐配方”,而这是另一篇文章的内容。就是这篇。
让人惊讶的部分来了。构建一个Transformer,把整个互联网的内容灌进去,花费数亿美元的计算资源,你得到的仍然是一个无法可靠回答问题的东西。一个出色的文本机器,却不会按你的要求做事。它与你聊天窗口里的那个东西之间的差距,在于三轮训练。第一轮构建原始引擎。接下来的两轮,每一轮都是针对前一轮留下的模型在某种具体且烦人的缺陷上的修复。
第一步:永远猜下一个词
当你说出训练目标时,它几乎让人尴尬。给模型展示一段文本,最后一个词被隐藏,让它猜出那个词。根据猜测评分,调整权重。重复几万亿次。
就是这样。这就是预训练。没有人类来评判答案,因为答案就是下一个词,它已经就在文本里了。数据自动给自己打标签。正是这一事实让它可以在原始互联网文本上运行,而不需要人工手动标注的东西,这也是它能够规模化扩展的全部原因。
关键在于猜下一个词所迫使你学习的东西。要完成“法国的首都是__”,你需要一个事实。要完成“她打开门,然后__”,你需要知道故事如何发展。要完成一行代码,你需要跟踪变量和括号。这个目标看起来微不足道,但对于所有文本来说,我们发现的做好这个任务的最佳方式,就是学会一个关于文本所涉及事物的惊人丰富的模型。预测下一个词,结果成了学习几乎所有东西的一扇侧门。
而这就是规模发挥作用的地方。大约在2020年,人们注意到随着模型增大,误差并不是时断时续地下降,而是沿着一条平滑的曲线下降。按正确比例增加参数、更多数据、更多计算,损失就会持续下降,你可以用对数坐标大致画出这种关系并推演。这种可预测性正是人们愿意在一轮训练上花费数亿美元的主要原因。你并不是盲目赌博,而是在购买一个相当可预测的“更好”量。
我要补充一个提醒,因为这个领域对此有争议。在超出一定规模后,模型似乎突然“弄懂”了以前做不到的事情,但其中有多少是真正的跃升、有多少是我们测量方式的产物,尚无定论。所以直白地说:更大的规模可靠地带来更低的损失。声称更大规模突然解锁全新技能的说法更吸引人,但它只有部分正确。
拒绝回答问题的天才
所以现在你有了这个能力极其强大的东西。你输入一个问题。然后它做了一件令人抓狂的事:它又写了三个问题。
一个刚预训练好的模型,一个“基座模型”,只学会了一个习惯:按照互联网的方式继续文本。仅此而已。它从未被要求要有帮助,因为“有帮助”不是训练目标。猜下一个词才是目标。所以你输入“如何重置我的路由器?”,它合理地继续输出“如何更改我的Wi-Fi密码?如何找到我的IP地址?”因为在真正的互联网上,这样的问题大多出现在类似问题列表中。
它是一个出色的模仿者,却没有意识到另一边有一个想要东西的“你”。想象一下一位即兴演员,会配合你开始的任何场景,但永远不会跳出角色来问你真正需要什么。知识都在里面,但把这些知识指向你的问题的意愿却不存在。这不是模型的一个缺陷。我们只是还没告诉它任务是什么。
第二步:交给它一个剧本
第一个修复很明显:让它看到任务。
你收集几千个你想要的行为示例:一个提示(prompt),配上人类编写或批准的良好回答。有帮助、切题、回答实际问题。然后你继续在这些数据上进行训练。这就是监督微调(supervised fine-tuning),或称指令微调(instruction tuning)。重要的是它改变什么以及不改变什么。它改变的大部分是行为,而不是知识。它教会模型使用它所拥有的众多声音中的哪一个。在互联网完成一个问题的所有方式中,“像能干的助手那样直接回答”现在成了默认选项,而不是“列出更多问题”。
你并没有让演员变得更聪明。你只是递给它们一个剧本,上面写着:这就是角色。有帮助的、直率的、回应你面前的人。它们一直都能演这个角色。现在它们知道这是你想要的那个。
这里有一个显著的证据:这种方法不需要额外增大模型。早在2022年,InstructGPT的工作就表明,人们更偏好一个经过指令微调的小模型给出的答案,而不是一个比它大十倍以上的巨大原始模型给出的答案。