赞
踩
InstructGPT的训练机制主要分为了3步:
注:其中第2,3步合起来也就是常听到的RLHF了,基于人类反馈的强化学习。
Supervised Fine-Tuning
SFT做的事情其实就是语言模型做的预训练。和GPT-3区别在于,InstructGPT的数据为人工标的高质量数据。
Reinforcement Learning from Human Feedback
这一步单独生成了一个reward model(打分模型)用于PPO里打分。
训练步骤如下:
Proximal Policy Optimization:强化学习PPO模型是OpenAI 2017年的工作。
⭐⭐⭐这一步用到的模型是:
1、用于强化学习的SFT模型(用于生成答案)。
2、原SFT模型(用于计算loss中的KL散度,为了保证PPO学习出的模型的预测不至于偏离原预训练模型的预测太多,因为RL就是用SFT模型初始化的)
3、reward model(用于对生成的答案打分;相当于作为老师,来对模型的回答进行‘批改’,让模型愈发把知识‘对齐’到我们想要的样子。)。
⭐ 为啥需要PPO这一步呢?使用强化学习(而非监督学习)的方式更新语言模型,最大的优势是在于能够使得模型更加自由的探索更新方向,从而突破监督学习的性能天花板。
⭐ 在reward model训练完之后有奖励模型咯,用它来作为PPO训练的value function。
PPO算法更新参数的大致流程如下图:
图源于:https://mp.weixin.qq.com/s/1v4Uuc1YAZ9MRr1UWMH9xw
输入x是第三个数据集里的prompt,而输出y则是强化学习的SFT模型的输出。y会随着模型参数的更新而不一样,这里有区别与监督学习,监督学习中,训练多个epoch时同一个x对应的y是一样的,但强化学习中同样的x对应的y是会随着模型更新而变化的。
这里我简单讲讲,因为主要思想也挺简单的,即使我没搞过强化学;李沐老师说如果前面标的数据够多,其实这一步可能并不需要。
PPO的主要思想。 强化学习的模型称为策略模型,又称为策略。其中rθ是RM,为了确保RM打分不至于被过度优化,增加了个log项,那是KL散度,为了保证PPO学习出的强化学习SFT的预测不至于偏离原SFT模型的预测太多,因为RL就是用SFT模型初始化的。这就是PPO的主要思想。
语言模型预训练项。 另外地,InstructGPT在PPO的loss基础上加上了预训练损失,为了防止强化学习SFT模型只对打分这个任务过度拟合,导致泛化性能损失,所以加上了预训练语言模型的损失来确保模型在公开NLP数据集上的表现。加上了这一项,PPO就变为了PPO-ptx。
有了loss就能反向传播更新模型参数了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。