大家好,上期我们讲到研发人员正在研究解决语言模型中的一致性问题。ChatGPT 使用了人类反馈来指导学习过程,对其进行训练。所使用的具体技术是 RLHF。
那么ChatGPT 是如何利用人类反馈来解决一致性问题的呢? 今天我们就接着来讲一讲。
从人类的反馈中进行强化学习 Reinforcement Learning from Human Feedback
方法总体包括三个不同的步骤:
有监督的调优
预训练的语言模型在相对少量的已标记数据上进行微调,用以学习给定提示列表生成输出的监督策略(即SFT模型) 也就是基线模型(Baseline Model)。
模拟人类偏好
标注者们对相对大量的 SFT 模型输出进行投票,通过这种方式创建一个由比较数据组成的新数据集。在此数据集上训练新模型,这被称为训练奖励模型(Reward Model,RM);
近端策略优化(PPO)
训练奖励模型用于进一步微调和改进SFT模型。这一步骤的输出结果就是所谓的策略模型(Policy Model).
步骤1只进行一次,而步骤2和步骤3可以重复迭代:在当前最佳策略模型上,收集更多的比较数据,用于训练新的奖励模型,然后训练新的策略。
下面我们分别对每一步进行讲解:
步骤1:监督调优(SFT)模型
第一步是收集数据,用来训练监督策略模型,即SFT模型。
数据收集:标注人员按要求,选择提示列表中预期的输出项。对于 ChatGPT,使用了两种不同的提示来源:一些是直接使用标注人员或研发人员准备的,另一些是从 OpenAI 的 API 请求中(即从 GPT-3 用户那里)获取的。虽然整个过程费时且消耗很大,但得到的结果是相对较小且高质量的数据集(大概有 12-15k 个数据点),可用于调优预训练的语言模型。
模型选择:ChatGPT 的开发人员选择了 GPT-3.5 系列的预训练模型,代替了对原始 GPT-3 模型进行调优。主要是由于其使用的基线模型是最新版的 text-davinci-003,GPT-3模型,主要在编程代码方面进行了调优。
因此,为了创建像ChatGPT这样的通用聊天机器人,开发人员决定在“代码模型”之上进行调优而不是纯文本模型。
由于此步骤的数据量有限,在此过程获得的SFT模型可能输出的文本仍有一定概率不太受用户关注,并且通常会出现不一致的情况。这里的问题是监督调优学习的可扩展性成本很高。
为了克服这个问题,使用的策略是让人工标注者对SFT模型的不同输出进行排序,以创建奖励模型,而不是要求人工标注者创建一个更大的精选数据集,这是一个缓慢且代价很高的过程。
步骤2:奖励模型(RM)
这一步的目标是直接从数据中学习目标函数。该函数的目的是根据人类的期望程度,对 SFT 模型输出结果进行评分。这强烈地反映了人类标注者的具体偏好及他们共同遵循的准则。最后,这个过程将从数据中得到一个可以自动模仿人类偏好的系统。
它的工作原理是:
选择提示列表,SFT模型为每个提示生成多个输出(介于4和9之间)。
标注者将输出结果从最好到最差排序。结果是一个新的按标签排序的数据集。该数据集的大小大约是SFT模型所用精选数据集的10倍。
新数据用于训练奖励模型(RM)。该模型将SFT模型的输出结果作为输入,并按优先顺序对其进行排序。
对于标注者来说,对输出进行排序要比从头开始打标注要容易得多,这个过程可以更有效地扩展。实际上,这个数据集是从30-40k个提示中,选择生成的,并且在排序阶段会向每个标注者显示不同的数据组合输出。
步骤3:近端策略优化(PPO)
强化学习被应用于通过优化训练奖励模型来调优 SFT 策略。所使用的特定算法称为近端策略优化(PPO),而调优模型称为近端策略优化模型。
什么是 PPO?该算法的主要特点如下:
PPO 是一种用于在强化学习中训练代理 的算法。它被称为「on-policy」算法,因为它直接学习和更新当前策略,而不是像 DQN 的「off-policy」算法那样从过去的经验中学习。这意味着PPO正在根据代理人所采取的行动和所收到的奖励,不断的调整策略;
PPO 使用信任域优化方法来训练策略,这意味着它将策略的变化限制在与前一策略的一定范围内,以确保稳定性。这与其它策略梯度方法不同,后者有时会对策略进行大规模更新,从而破坏学习的稳定性;
PPO 使用价值函数,来估计给定状态或操作的预期返回。价值函数用于计算优势函数,它代表预期回报和当前回报之间的差异。然后,通过比较当前策略采取的操作与前一个策略本应采取的操作,使用优势函数更新策略。这使 PPO 可以根据所采取行动的预估值,对策略进行更智能的更新。
在这一步中,PPO 模型经由 SFT 模型初始化,且价值函数经由奖励模型初始化。该环境是一个「bandit environment」,它会产生随机显示提示, 并期望对提示做出响应。给出提示和响应后,它会产生奖励(由奖励模型决定)。SFT 模型会对每个 token 添加 KL 惩罚因子,以免奖励模型的过度优化。
性能评估 Performance Evaluation
因为模型是根据人工标注的输入进行训练的,所以评估的核心部分也基于人工输入的。也就是说通过让标注者对模型输出的质量评分来实现的。为避免训练阶段标注者判断的过度拟合,测试集使用了未在培训数据中体现的,来自其它 OpenAI 用户的提示。
该模型基于三个标准进行评估:
有用性:判断模型遵循用户指令以及推断指令的能力。
真实性:判断模型在封闭领域任务中有产生虚构不存在事实的倾向。
无害性:标注者评估模型的输出是否适当,是否包含诋毁受保护的类别,或者包含歧视的内容。该模型也有衡量偏见和毒性内容的数据集。
该模型还针对传统 NLP 任务(如问答、阅读理解和摘要)的零样本学习性能进行了评估,开发人员发现,其中有一些比 GPT-3 要差一些,这是一个「Alignment Tax」的例子,其中基于RLHF的校准程序,是以降低某些任务的性能为代价的。
这些数据集的性能回归可以通过称为预训练混合的技巧大大减少:在 PPO 模型培训期间,经由梯度下降训练,通过混合 SFT 模型和 PPO 模型的梯度来更新梯度计算。
方法的缺点 Shortcomings of the methodology
该方法的一个非常明显的局限性是,在使语言模型与人类意图保持一致的过程中,用于调优的模型数据会受到各种复杂的主观因素的影响,主要包括:
生成 demo 数据的人工标注者的偏好;
设计研究并编写标签说明的研究人员
由开发人员编写或由OpenAI客户提供的可选的提示。
在模型评估中,奖励模型培训时所包含的标注者偏差(通过排名输出)
特别是ChatGPT作者指出的一个明显的事实,即参与培训过程的标注人员和研发人员,可能并不代表语言模型的所有潜在最终用户。
除了这一明显的「内生」限制之外,该方法还有的一些其它缺点和需要解决的问题:
缺乏对照研究
比较数据缺乏基本事实
人类的偏好并不一致
奖励模型(RM)的即时稳定性测试
其它问题
好了ChatGPT的原理就讲到这里了,相信随着算法的不断进步,ChatGPT也会发展的更先进,更贴近我们对人工智能的需要,未来会在越来越多的领域实际应用。
--END--
大家如果有想讨论的内容,欢迎留言!关注我,请帮忙点赞分享,您的支持是我们最大的动力!