同一个问题,换两种问法,你能观察到模型如何决定该给你什么。它抛出一句干练的答复,或者慢条斯理地展开。听起来它可能胸有成竹,也可能吞吞吐吐。在训练中的某个环节,模型已经学会了你更偏爱哪一种版本——即使这两个答案本身都正确。
这指向一个更棘手的难题:当“帮得上忙”这个要求随着每一次请求而变化时,该怎么教会一个模型?
面对快捷的事实查询,帮得上忙意味着简练。面对调试问题,帮得上忙意味着详尽。面对医疗担忧,帮得上忙意味着谨慎同时保持清晰。每一种场景都需要一个不同的方向,背后是重重取舍。
模型学会了在这些取舍中拿捏分寸,这来自于成千上万次的人类对比选择。这种从比较中学习、而非从固定答案中学习的思路,出现在你日常使用的每一个热门模型背后。
这篇内容,我们就来看看这种学习究竟是怎么发生的,先讲清楚为什么光靠指令跟随还不够,再走进教模型学会偏好的两条主流路线:RLHF 和 DPO。
一个能帮上忙的模型,通常需要经过三个阶段。
第一阶段是预训练。模型吞下巨量文本,学习预测下一个词。也就是说,它建起了对语言运行方式的宽泛感知,并顺便吸收了世界知识。这一阶段得到的是原始能力,但它依然缺少方向感。因为预测下一个词,和回答你的问题,是两个不同的目标。
第二阶段是有监督微调,也就是 SFT。我们把几千组示例展示给模型看,每组都是一条指令搭配一个优质响应,然后训练模型去模仿。经过这一阶段,模型会跟随指令而不是自顾自地续写文字。比如让它概括一段内容,它会写出一份正儿八经的摘要。没经过 SFT 的原始模型只会跑偏写下去。
第三阶段,教模型学习偏好。这也是接下来要展开的重点。
一个已经会跟随指令的模型,为什么还需要第三阶段?
这因为 SFT 做的是模仿。模型看到一个正确答案,学着复制它的样子。当一个提问只有唯一一个好答案时,这一套很管用。可当一个提问存在许多种可能的答案时,问题就来了。
想想“解释一下哈希表是怎么运行的”这种请求。简短的答案和长篇的答案都可能非常优秀,而哪一个能帮上忙,完全取决于提问者是谁。示例数据集只能给出其中一个答案,而答案之间的取舍,在模仿之下一直是不可见的。
热门跟贴