大家也许都听说过把大象装进冰箱只需要三步,要得到一个ChatGPT总共也是分为三步。
第一步,通过大量的文本进行无监督学习与训练,得到一个能进行文本生成的基座模型。
第二步,通过一些人类撰写的高质量对话数据,对其做模型进行监督,这一条得到一个微调后的模型,此时的模型除了续写文本之外,也会具备更好的对话能力。
第三步,用问题和多个对应回答的数据,让人类标注员对回答进行质量排序,然后基于这些数据训练出一个能对回答进行评分预测的奖励模型。接下来让第二步得到的模型对问题生成回答,用奖励模型给回答进行评分,利用评分作为反馈进行强化学习训练。
那如果你想了解更详细的步骤就继续阅读。在第一部的预训练中首先需要海量文本作为原料,让模型从中学习。比如GPT3这个基座模型的训练数据有多个互联网文本语料库。覆盖书籍、新闻文章、科学论文、维基百科、社交媒体、帖子等等。训练数据的整体规模是三千亿的token。
如果你不了解什么是token的话,他一般指的是大语言模型的一个基本文本单位向短的英文单词。可能一个词是一个token,而长的词可能被分为多个token。而中文的话所占的token数量会相对更多,有些字要用一个甚至更多。那回到我们的主题,有了大量可用于训练的文本后,要采用无监督学习的方式训练模型,和无监督学习相对的是监督学习模型,会接受有标签的训练数据。标签就是期望的输出值。所以每个训练数据点都既包括输入特征,也包括期望输出值,而无监督学习则是让模型在没有标签的数据上进行训练,所以模型要自己找出数据中的结构和模式。GPT训练过程中,它会利用海量文本自行学习人类语言的语法语义,了解表达结构和模式。那具体来说,模型会先看到一部分文本基于上下文尝试预测下一个token,然后通过比较正确答案和他的预测模型会更新权重,从而逐渐能根据上文来生成合理的下文,并且随着见过的文本越来越多,它生成的能力也会越来越好。
如果你对模型生成文本的内部细节感兴趣可以收看我的上一篇博客。预训练并不是一个容易的过程,也是这四个步骤里最耗时费力烧钱的。以GPT3为例,虽然官方还没有公布准确数据,但大体估计它经过了数月的训练,用了成千上百个V100GPU,烧了几百万美元。
预训练的结果是得到一个基座模型,基座模型并不等同于背后的对话模型。因为此时模型有预测下一个token的能力,会根据上文补充文本,但并不擅长对话。你给他一个问题,他可能模仿上文帮你继续生成更多的问题,但不回答你的问题。
为了解决这点,我们需要进行第二步,对其做模型进行微调,微调就是在已有模型上做进一步的训练。会改变模型的内部参数,让模型更加适应特定任务。换句话说,为了训练出一个擅长对话的AI助手,需要给其做模型,看更多的对话数据。但微调的成本相比于预训练低很多,因为需要的训练数据规模更小,训练时长更短。在这一阶段里,模型不需要从海量文本学习了,而是从一些人类写的专业且高质量的对话里学习,这相当于既给了模型问题也给了模型我们人类中意的回答,属于监督学习,所以这一过程被叫做监督微调。
完成后会得到一个模型,它与步骤一里的基座模型相比,更加擅长对问题做出回答,但为了让模型的实力继续被提升,还可以进行第三步,让SFT模型进行强化学习。强化学习是让模型在环境里采取行动,获得结果反馈,从反馈里学习,从而能在给定情况下采取最佳行动来最大化奖励或最小化损失。
所以就跟训小狗似的,随着和训犬师的互动效果,会发现某些动作能获得奖励,某些动作没有奖励,某些动作甚至会遭受惩罚。通过观察动作和奖惩之间的联系,小狗的行为会逐渐接近训犬师的期望。
要让ChatGPT模型乖乖当一个乐于助人的AI助手,也是一样的道理。我们可以让ChatGPT对问题做出回答,然后让人类评估员去给回答打分。打分主要是基于3H原则,Helpful有用性、Honest真实性、Harmless无害性,如果打分高的话,模型能学习到要再接再厉。如果打分低的话,模型就学习到要予以改正。
但是靠人类给回答一个打分成本极高效率极低,那为何不训练出另一个模型让模型给模型打分?所以在这一步骤里需要训练一个奖励模型。
它是从回答以及回答对应的评分里学习的,那得到评分数据的方式是让微调后的GPT模型也就是第二部里得到的SFT模型对每个问题生成多个回答,然后让人类标注员对回答质量进行排序。虽然还是免不了要借助标注员的劳动,但一旦有了足够的排序数据,就可以把数据用在训练奖励模型上,让奖励模型学习预测回答的评分,奖励模型训练出来后就可以用在强化学习上了。
强化学习里ChatGPT模型的最初参数来自之前得到的SFT模型,但会随着训练被更新,奖励模型的参数则不再会被更新,它的任务就是对模型生成的内容打分。那经过一轮又一轮迭代后,模型会不断优化策略,回答的质量会进一步提升,强大的ChatGPT就在不断学习中练成了后来的故事。
我们都知道了,2022年11月,ChatGPT对外发布,至此引爆生成式AI元年。下篇文章里我们会一起了解如何正确调教ChatGPT等AI聊天助手。