模型训练核心:ChatGPT 中的 RLHF 人工反馈强化学习模式
ChatGPT 的强化学习原理
RLHF 算法本质就是制作了一个神经网络模型,来模拟人类给 ChatGPT 模型的输出结果打分。
Step0:预训练一个大规模语言模型
Step1:训练监督模型 SFT
Step2:训练 Reward 模型
RLHF 方法重点是第二步,如何构建一个 reward 函数
为了解决这个问题,OpenAI 依然雇佣了一些标注人员,对 SFT 模型输出的结果做优劣判断。
模型训练的损失函数公式
需要说明的是,在训练 reward 模型过程中,用到的数据量依然不大,相比预训练数据量动辄上百亿、千亿 token,制作 reward 模型只用到了几十万条数据
然而,当训练得到一个 Reward 模型之后,它可以用于预测的范围就是用户提到的、千奇百怪的 prompt,完全不局限于训练数据集提到的那些。
Step3:基于 PPO 策略的 RLHF
接下来,我们就可以利用强化学习(RL),结合 SFT 模型和 Reward 模型实现循环训练了。在上图中,采用监督学习 SFT 的训练方式得到了一个模型,又称之为 SFT 策略;与之对应的是强化学习的方式来得到一个模型,这可以采用 Proximal Policy Optimization (PPO) 算法来更新这个强化学习模型的参数(这个算法的具体操作稍后介绍,这里先讲清楚 RLHF 的流程)。
因此,我们的目标是在 SFT 模型的基础上,训练一个 PPO 的 RL 模型,这个模型能够更好地用于完成用户的指令和任务。
PPO 算法
强化学习中,有两种学习策略,即参数更新策略(即强化学习模型参数),on-policy 和 off-policy。
- on-policy 学习策略是指利用当前策略收集数据并学习更新当前策略。也就是说,它通过评估当前状态下各种行动的价值来更新当前策略,从而使得策略更加优化。
- off-policy 学习策略则是指利用其他策略产生的数据来学习更新当前策略。也就是说,它利用历史数据来训练当前策略。
on-policy 和 off-policy 的主要区别在于它们更新策略的方式不同,前者是通过当前策略产生的经验数据来更新策略,后者则是利用历史经验数据来对当前策略进行更新
衡量两个模型概率分布的最直观方法,就是相对熵(KL 散度),这其实就是上一节 PPO 策略中添加的相对熵项。
另一方面,相对于监督学习,强化学习算法的训练是比较困难的,难就难在模型参数很难收敛。
为了使强化学习的训练过程更加稳定,PPO 算法也可以理解为一种 clip 优势值的方式,来确保模型训练的稳定。
clip 优势值和相对熵的理解方式是等价的。
RLHF 方法的效果
这幅图展现了 RLHF 方法所提到的优劣对比,图中 GPT 指的是原始的预训练模型,SFT 为经过第一步监督学习之后得到的模型,PPO 即根据前述目标函数,当 γ=0γ=0 也就是不加预训练学习目标时学习到的模型,PPO-ptx 则是加了预训练学习目标时学习到的模型。
RLHF 方法的本质
对于 GPT 模型而已,只要把预训练模型接一根管子在 reward 模型上,预训练模型就会开始像感知真实世界那样,感知 reward。
总结
RLHF 的训练过程主要是:待模型生成数据,reward 模型给出评价,根据目标函数更新模型参数,以此往复,提高模型对用户指令的响应。
最后,留给读者一个开放性思考题:可否不采用强化学习的训练方法,直接把 reward 模型的结果当作损失函数微调模型呢?