得到了SFT和RM模型之后,剩下的就是把他们串联在一起,固定住RM,利用RM的loss对SFT做梯度回传。这个阶段的完整loss如下所示上述$$\pi_{\phi}^{\text{SFT}}$$就是SFT网络,$$\pi_{\phi}^\text{RL}$$是从SFT网络初始化而来,因此也是个GPT-like网络,能生成回答。第一项就是前文说的串联$$\pi_{\phi}^\text{RL}$$和RM做联合梯度回传。具体来说从$$\pi_{\phi}^\text{RL}$$采样出prompt和completion样本对,让RM模型$$r_\theta(x,y)$$做打分和给loss,通过梯队回传优化$$\pi_{\phi}^\text{RL}$$的参数权重第二项是希望新学的$$\pi_{\phi}^\text{RL}$$不要距离初始的SFT太远,解决方法是用KL散度约束住两者的输出概率。背后的原因是前文提到过RM网络跟SFT其实是绑定的,如果新学的$$\pi_{\phi}^\text{RL}$$输出分布距离SFT太远的话,那么RM网络本身可能就不适用了第三项是防止$$\pi_{\phi}^\text{RL}$$过拟合RM打分这个任务,因为作者发现在其他NLP任务上(例如SQuADv2)有效果回退。因此添加上训练SFT的loss,即从SFT训练的数据里面采样包含prompt和completion的样本,无监督训练$$\pi_{\phi}^\text{RL}$$PPO(Proximal Policy Optimization)本来是OpenAI提出的RL优化方法,属于传统艺能,在这里
然后最后,你会得到一个可以部署的模型。例如,ChatGPT就是一个RLHF模型,但是你可能会遇到一些其他的模型,比如说Vicuna-13B(俗称小羊驼模型)等,这些都是SFT模型。我们有基础模型、SFT模型和RLHF模型,这就是目前的状态。现在你可能会问为什么你会想做RLHF?答案可能并不那么激动人心,那就是它的效果更好。这张图来自于instructGPT论文。根据这些已经过去一段时间的实验,这些PPO模型是RLHF。我们看到,当我们提供给人类时,他们在很多比较中都更喜欢这些模型。与提示为助手的基础模型相比、与SFT模型相比,人类基本上更喜欢来自RLHF模型的token(输出文字)。所以,它的效果就是更好。但你可能会问为什么?为什么它的效果更好?我认为并没有一个社区真正达成一致的令人惊讶的答案,但我会提供一个可能的原因,它与比较与生成在计算上的容易度之间的不对称性有关。让我们以生成一个俳句为例。假设我让一个模型写一首关于回形针的俳句。如果你是一个试图提供训练数据的承包商,那么想象一下作为一个收集SFT数据的承包商。你应该如何创建一个关于回形针的好俳句呢?你可能就是不擅长这个,但是如果我给你几个俳句的例子,你可能能够更欣赏其中的一些俳句。因此,判断哪一个好是一个更简单的任务。基本上,这种不对称性使得比较可能是一个更好的方式,可以更好地利用你作为人的判断,以创建一个稍微更好的模型。现在,RLHF模型并不是在所有情况下都比基础模型有改进。特别是,我们注意到,例如,RLHF会损失一些熵。这意味着它们可以输出变化更小的样本,它们可以输出比基础模型更低变化的样本。基础模型有很多熵,会给出多样性的输出。
PPO-ptx是上述三项系数都不为0的情况PPO是指第三项系数$$\gamma$$为0,前两项系数不为0的情况此外RM训练和PPO训练可以交替进行,即得到新的$$\pi_{\phi}^{\text{SFT}}$$模型后训练一个匹配的SM模型,然后固定SM模型按$$\text{objective}(\phi)$$的损失函数继续训练$$\pi_{\phi}^{\text{SFT}}$$模型,如此交替