由于 ChatGPT 并没有放出论文,我们没法直接了解 ChatGPT 的设计细节。但它的博客中提到,ChatGPT 用的是和 InstructGPT一样的方法,只是在数据收集上和 InstructGPT 不一样 — ChatGPT 用的是多轮对话作为数据集。
还有 InstructGPT 是在 GPT-3 上做微调,而 ChatGPT 是在 GPT3.5 上做微调。因此我们可以参考 InstructGPT的论文去理解 ChatGPT。
InstructGPT 的技术原理图
ChatGPT 博客中的技术原理图
ChatGPT 的训练流程包含三个步骤:
1.监督学习。收集人工编写的期望模型,如何输出的数据集,并使用其来训练一 个生成模型(GPT3.5- based);
简单说,就是根据人编写的答案,训练出一个简单模型,回答会有很大的局限性。
2.训练奖励模型。收集人工标注的模型多个输出之间的排序数据集。并训练一 个奖励模型,以预测用户更喜欢哪个模型输出。
说明:由于第一步训练出来的模型的回答会有很大的局限性,有正向回答,又有负向回答, ChatGPT 不知道给出那个答案更合适,于是通过人工对答案进行排序,再利用排序结果训练出奖励模型(打分)
3.基于强化学习 loss 持续迭代生成模型。使用这个奖励模型作为奖励函数,以 PPO 的方式,微调监督学习训练出来的生成模型
注解:排序任务