大家好,我是技福的小咖老师。
上期我们讲到研发人员正在研究解决语言模型中的一致性问题。ChatGPT 使用了人类反馈来指导学习过程,对其进行训练。所使用的具体技术是 RLHF。
那么ChatGPT 是如何利用人类反馈来解决一致性问题的呢? 今天我们就接着来讲一讲。
方法总体包括三个不同的步骤:
有监督的调优
预训练的语言模型在相对少量的已标记数据上进行微调,用以学习给定提示列表生成输出的监督策略(即SFT模型) 也就是基线模型( Baseline Model )。
模拟人类偏好
标注者们对相对大量的 SFT 模型输出进行投票,通过这种方式创建一个由比较数据组成的新数据集。在此数据集上训练新模型,这被称为训练奖励模型( Reward Model,RM );
近端策略优化(PPO)
训练奖励模型用于进一步微调和改进SFT模型。这一步骤的输出结果就是所谓的策略模型( Policy Model ).
步骤1只进行一次,而步骤2和步骤3可以重复迭代:在当前最佳策略模型上,收集更多的比较数据,用于训练新的奖励模型,然后训练新的策略。
下面我们分别对每一步进行讲解:
第一步是收集数据,用来训练监督策略模型,即SFT模型。
因此,为了创建像ChatGPT这样的通用聊天机器人,开发人员决定 在“代码模型”之上进行调优 而不是纯文本模型。
由于此步骤的数据量有限,在此过程获得的SFT模型可能输出的文本仍有一定概率不太受用户关注,并且通常会出现不一致的情况。这里的问题是 监督调优学习的可扩展性成本很高 。
为了克服这个问题,使用的策略是让人工标注者对SFT模型的不同输出进行排序,以创建奖励模型,而不是要求人工标注者创建一个更大的精选数据集,这是一个缓慢且代价很高的过程。
这一步的目标是 直接从数据 中学习目标函数。该函数的目的是根据人类的期望程度,对 SFT 模型输出结果进行评分。这强烈地反映了人类标注者的具体偏好及他们共同遵循的准则。最后,这个过程将从数据中得到一个可以 自动模仿人类偏好的系统 。
它的工作原理是:
对于标注者来说,对输出进行排序要比从头开始打标注要容易得多,这个过程可以更有效地扩展。实际上,这个数据集是从30-40k个提示中,选择生成的,并且在排序阶段会向每个标注者显示不同的数据组合输出。
强化学习 被应用于通过优化训练奖励模型来调优 SFT 策略。所使用的特定算法称为 近端策略优化(PPO) ,而调优模型称为近端策略优化模型。
什么是 PPO?该算法的主要特点如下:
在这一步中,PPO 模型经由 SFT 模型初始化,且 价值函数经由奖励模型初始化 。该环境是一个「bandit environment」,它会产生随机显示提示, 并期望对提示做出响应。给出提示和响应后,它会产生奖励(由奖励模型决定)。SFT 模型会对每个 token 添加 KL 惩罚因子,以免奖励模型的过度优化。
因为模型是根据人工标注的输入进行训练的,所以评估的核心部分也基于人工输入的。也就是说通过让标注者对模型输出的质量评分来实现的。为避免训练阶段标注者判断的过度拟合,测试集使用了未在培训数据中体现的,来自其它 OpenAI 用户的提示。
该模型基于三个标准进行评估:
该模型还针对传统 NLP 任务(如问答、阅读理解和摘要)的零样本学习性能进行了评估,开发人员发现,其中有一些比 GPT-3 要差一些,这是一个「Alignment Tax」的例子,其中基于RLHF的校准程序,是以降低某些任务的性能为代价的。
这些数据集的性能回归可以通过称为预训练混合的技巧大大减少:在 PPO 模型培训期间,经由梯度下降训练,通过混合 SFT 模型和 PPO 模型的梯度来更新梯度计算。
该方法的一个非常明显的局限性是,在使语言模型与人类意图保持一致的过程中,用于调优的模型数据 会受到各种复杂的主观因素的影响 ,主要包括:
特别是ChatGPT作者指出的一个明显的事实,即参与培训过程的标注人员和研发人员,可能并不代表语言模型的所有潜在最终用户。
除了这一明显的「内生」限制之外,该方法还有的一些其它缺点和 需要解决的问题 :
好了ChatGPT的原理就讲到这里了,相信随着算法的不断进步,ChatGPT也会发展的更先进,更贴近我们对人工智能的需要,未来会在越来越多的领域实际应用。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论0 条评论