InstructGPT论文笔记

问题:

目标:

方法:

  • 人为制作数据集(问题+回答),对模型做SFT(有监督微调),但是人工写回答成本太高

  • 用模型生成9个答案,并人工对这些答案进行排序,使用排序数据来训练奖励模型(6B)

奖励模型会给好的回答打高分,给差的回答打低分

模型输出后过一个输出大小为1的线性层,获得分数

奖励模型的损失函数: y_w和y_l是K个回答中的一对,其中y_w的排序比y_l高,分别算出两个回答的奖励分数,σ是sigmoid函数,最小化loss即最大化y_w和y_l的奖励分数差。

  • 强化学习RL

使用PPO算法

使用SFT模型的参数初始化RL模型。

每轮用RL模型生成新的回答,并计算奖励分数(目标是最大化奖励分数),调整模型,再用新的模型生成回答,如此循环。(与传统方法不同在于,传统训练过程中数据标签不会发生改变,而这里y是不断调整的)

数据来源

首先由人工写一些问答数据,用这些数据训练模型,然后将模型投入试用,并收集用户问题进行再次训练

  • 数据集分为三份:

①SFT dataset(13K):人工标注回答

②RM dataset(33K):模型生成多个回答并人工排序

③PPO dataset(31K):使用Reward Model生成回答