大模型的训练数据来自大规模的语料库,数据中包含海量的信息,那如何训练出一个可以进行交互的大语言模型呢?
大语言模型的训练往往包含三个阶段,预训练阶段,监督微调阶段,和强化学习阶段。
第一阶段是pretraining,也就是预训练阶段。预训练阶段的数据由没有标签的海量数据构成,目的是让大模型学会或记住这些知识。训练采用自回归的方法,通过前几个token预测下一个token,从而得到一个基础模型。
第二个阶段是监督微调阶段。当模型拥有了知识之后,下一步是教会大模型如何理解并遵循人类指令回答问题。监督微调阶段使用高质量的“指令-回复”配对数据,对基础模型进行微调。训练数据提供“期望的回复”作为学习目标,使模型从通用的文本生成器,转变为能够理解并遵循人类指令的对话助手。
第三个阶段是RLHF阶段,也就是人类反馈强化学习阶段。在第二阶段模型学会回答问题之后,第三阶段的目的是教会模型按人类的偏好进行学习,目标是让模型的输出更符合人类的安全与价值偏好。首先,收集人类对模型不同回复的偏好数据,训练一个奖励模型来模拟人类的判断。接着,使用强化学习算法,以奖励模型的打分为信号,优化微调后的语言模型,同时约束其输出不要过于偏离微调阶段的水平,以确保生成质量。
如今,直接偏好优化等方法因更简单高效,也常被用于此阶段。首先是对模型提问,让模型输出两个回答,人类专业对回答进行打分,模型根据打分更新模型参数,从而让大模型的回答更符合人类的偏好。
通过这三个阶段的学习,模型记住了知识,学会了回答问题,并通过人类的反馈,使其回答的更加贴合人类的偏好。