如何得到一个ChatGPT?
1、无监督预训练:通过大量的文本数据集进行无监督训练,得到一个基座模型(只会续写文本)
2、监督微调:通过一些人类撰写的高质量对话数据对基座模型进行监督微调,得到一个微调后的基座模型(除了能续写文本,还具备更好的对话能力)
3、训练奖励模型+强化学习训练:用问题和对各对应回答的数据,让人类标注员对回答进行质量排序,基于这些数据,训练出一个能对回答进行评分预测的奖励模型。
让监督微调模型对问题生成回答,用奖励模型对回答进行打分,利用评分作为反馈进行强化学习训练,就能够得到最终的ChatGPT了。
接下来让我们对每一个步骤进行详细解读
1、无监督预训练
基座模型需要海量的文本数据进行训练
无监督训练:以原始文本作为数据集和监督信息,模型通过前面的文本预测下一个出现的单词。
2、监督微调
以人类写的专业且高质量的对话作为监督数据集训练基座模型,最后得到SFT模型。
3、训练奖励模型+强化学习训练
强化学习:
让模型在环境里采取行动,获得结果反馈,从反馈里学习,从而能在给定情况下采取最佳行动,来最大化奖励或最小化损失。
理想情况下是将问题抛给GPT,人类对GPT做出的回答进行打分,最终GPT根据打分优化模型。
打分一般基于3H原则:
但是人类打分成本高效率低,于是开发了一个奖励模型,能够对GPT生成的回答进行打分。
奖励模型
训练数据:让SFT模型对每个问题生成多个回答,让人类对多个回答进行比较排序。这些数据就可以作为奖励模型的训练数据了。
经过训练后,奖励模型就能够正确的预测出GPT每个回答的评分了。
最终,经过不断的强化学习训练,奖励模型不变,SFT模型不断优化权重参数,最终得到能够和人类进行对话的Chat GPT了。