深入浅出,解析ChatGPT背后的工作原理

选自AssemblyAI

作者:MarcoRamponi

机器之心编译

ChatGPT是OpenAI发布的最新语言模型,比其前身GPT-3有显著提升。与许多大型语言模型类似,ChatGPT能以不同样式、不同目的生成文本,并且在准确度、叙述细节和上下文连贯性上具有更优的表现。它代表了OpenAI最新一代的大型语言模型,并且在设计上非常注重交互性。

本文将剖析GPT-3的局限性及其从训练过程中产生的原因,同时将解释RLHF的原理和理解ChatGPT如何使用RLHF来克服GPT-3存在的问题,最后将探讨这种方法的局限性。

大型语言模型中的能力与一致性


「一致性vs能力」可以被认为是「准确性vs精确性」的更抽象的类比。

在机器学习中,模型的能力是指模型执行特定任务或一组任务的能力。模型的能力通常通过它能够优化其目标函数的程度来评估。例如,用来预测股票市场价格的模型可能有一个衡量模型预测准确性的目标函数。如果该模型能够准确预测股票价格随时间的变化,则认为该模型具有很高的执行能力。

原始的GPT-3就是非一致模型。类似GPT-3的大型语言模型都是基于来自互联网的大量文本数据进行训练,能够生成类似人类的文本,但它们可能并不总是产生符合人类期望的输出。事实上,它们的目标函数是词序列上的概率分布,用来预测序列中的下一个单词是什么。

但在实际应用中,这些模型的目的是执行某种形式的有价值的认知工作,并且这些模型的训练方式与期望使用它们的方式之间存在明显的差异。尽管从数学上讲,机器计算词序列的统计分布可能是建模语言的高效选择,但人类其实是通过选择最适合给定情境的文本序列来生成语言,并使用已知的背景知识和常识来辅助这一过程。当语言模型用于需要高度信任或可靠性的应用程序(如对话系统或智能个人助理)时,这可能是一个问题。

尽管这些基于大量数据训练的大模型在过去几年中变得极为强大,但当用于实际以帮助人们生活更轻松时,它们往往无法发挥潜力。大型语言模型中的一致性问题通常表现为:

提供无效帮助:没有遵循用户的明确指示。

内容胡编乱造:虚构不存在或错误事实的模型。

缺乏可解释性:人们很难理解模型是如何得出特定决策或预测的。

内容偏见有害:一个基于有偏见、有害数据训练的语言模型可能会在其输出中出现这种情况,即使它没有明确指示这样做。

但具体来说,一致性问题源自何处?语言模型的训练方式本身就容易产生不一致吗?

语言模型训练策略如何产生不一致?

Next-token-prediction和masked-language-modeling是用于训练语言模型的核心技术。在第一种方法中,模型被给定一个词序列作为输入,并被要求预测序列中的下一个词。如果为模型提供输入句子:

它可能会将下一个单词预测为「mat」、「chair」或「floor」,因为在前面的上下文中,这些单词出现的概率很高;语言模型实际上能够评估给定先前序列的每个可能词的可能性。

masked-language-modeling方法是Next-token-prediction的变体,其中输入句子中的一些词被替换为特殊token,例如[MASK]。然后,模型被要求预测应该插入到mask位置的正确的词。如果给模型一个句子:

它可能会预测MASK位置应该填的词是「cat」、「dog」。

这些目标函数的优点之一是,它允许模型学习语言的统计结构,例如常见的词序列和词使用模式。这通常有助于模型生成更自然、更流畅的文本,并且是每个语言模型预训练阶段的重要步骤。

然而这些目标函数也可能导致问题,这主要是因为模型无法区分重要错误和不重要错误。一个非常简单的例子是,如果给模型输入句子:

它可能会预测MASK位置应该填入「began」或「ed」,因为这两个词的出现概率都很高。

一般来说,这些训练策略可能会导致语言模型在一些更复杂的任务中出现不一致,因为一个仅被训练来预测文本序列中的下一个词的模型可能不一定会学习其含义的某些更高级表征。因此,该模型很难推广到需要对语言更深入理解的任务。

方法总体上包括三个不同步骤:

有监督的调优:预训练的语言模型在少量已标注的数据上进行调优,以学习从给定的prompt列表生成输出的有监督的策略(即SFT模型);

模拟人类偏好:标注者们对相对大量的SFT模型输出进行投票,这就创建了一个由比较数据组成的新数据集。在此数据集上训练新模型,被称为训练回报模型(RewardModel,RM);

近端策略优化(PPO):RM模型用于进一步调优和改进SFT模型,PPO输出结果是的策略模式。

步骤1只进行一次,而步骤2和步骤3可以持续重复进行:在当前最佳策略模型上收集更多的比较数据,用于训练新的RM模型,然后训练新的策略。接下来,将对每一步的细节进行详述。

步骤1:监督调优模型

第一步是收集数据,以训练有监督的策略模型。

模型选择:ChatGPT的开发人员选择了系列中的预训练模型,而不是对原始GPT-3模型进行调优。使用的基线模型是最新版的text-davinci-003(通过对程序代码调优的GPT-3模型)。

为了创建像ChatGPT这样的通用聊天机器人,开发人员是在「代码模型」而不是纯文本模型之上进行调优。


为了克服这个问题,使用的策略是让人工标注者对SFT模型的不同输出进行排序以创建RM模型,而不是让人工标注者创建一个更大的精选数据集。

第二步:训练回报模型

这一步的目标是直接从数据中学习目标函数。该函数的目的是为SFT模型输出进行打分,这代表这些输出对于人类来说可取程度有多大。这强有力地反映了选定的人类标注者的具体偏好以及他们同意遵循的共同准则。最后,这个过程将从数据中得到模仿人类偏好的系统。

它的工作原理是:

选择prompt列表,SFT模型为每个prompt生成多个输出(4到9之间的任意值);

标注者将输出从最佳到最差排序。结果是一个新的标签数据集,该数据集的大小大约是用于SFT模型的精确数据集的10倍;

此新数据用于训练RM模型。该模型将SFT模型输出作为输入,并按优先顺序对它们进行排序。


对于标注者来说,对输出进行排序比从头开始打标要容易得多,这一过程可以更有效地扩展。在实践中,所选择的prompt的数量大约为30-40k,并且包括排序输出的不同组合。

步骤3:使用PPO模型微调SFT模型

这一步里强化学习被应用于通过优化RM模型来调优SFT模型。所使用的特定算法称为近端策略优化(PPO),而调优模型称为近段策略优化模型。

什么是PPO?该算法的主要特点如下:

PPO是一种用于在强化学习中训练agent的算法。它被称为「on-policy」算法,因为它直接学习和更新当前策略,而不是像DQN的「off-policy」算法那样从过去的经验中学习。PPO根据agent所采取的行动和所获得的回报不断调整策略;

PPO使用「信任区域优化」方法来训练策略,它将策略的更改范围限制在与先前策略的一定程度内以保证稳定性。这与其它策略使用梯度方法形成鲜明对比,梯度方法有时会对策略进行大规模更新,从而破坏策略的稳定性;

PPO使用价值函数来估计给定状态或动作的预期回报。价值函数用于计算优势函数,它代表预期收益和当前收益之间的差异。然后使用优势函数通过比较当前策略采取的操作与先前策略将采取的操作来更新策略。这使PPO可以根据所采取行动的估计价值对策略进行更明智的更新。

在这一步中,PPO模型由SFT模型初始化,价值函数由RM模型初始化。该环境是一个「banditenvironment」,它会产生随机prompt并期望对prompt做出响应。对于给定的prompt和响应,它会产生相应的回报(由RM模型决定)。SFT模型会对每个token添加KL惩罚因子,以尽量避免RM模型的过度优化。


性能评估

因为模型是根据人工标注的输入进行训练的,所以评估的核心部分也基于人工输入,即通过让标注者对模型输出的质量评分来进行。为避免训练阶段涉及的标注者的判断过拟合,测试集使用了来自其它OpenAI客户的prompt,这些prompt未出现在训练数据中。

该模型基于三个标准进行评估:

帮助性:判断模型遵循用户指示以及推断指示的能力。

真实性:判断模型在封闭领域任务中有产生虚构事实的倾向。

无害性:标注者评估模型的输出是否适当、是否包含歧视性内容。

这些数据集的性能回归可以通过称为预训练混合的技巧大大减少:在通过梯度下降训练PPO模型期间,通过混合SFT模型和PPO模型的梯度来计算梯度更新。

方法的缺点

该方法的一个非常明显的局限性是,在将语言模型与人类意图保持一致的过程中,用于fine-tuning模型的数据会受到各种错综复杂的主观因素的影响,主要包括:

生成demo数据的人工标注者的偏好;

设计研究和编写标签说明的研究人员;

选择由开发人员制作或由OpenAI客户提供的prompt;

标注者偏差既包含在RM模型训练中,也包含在模型评估中。

ChatGPT的作者也承认一个明显的事实,即参与训练过程的标注人员和研究人员可能并不能完全代表语言模型的所有潜在最终用户。

除了这一明显的「内生」限制之外,该方法还有的一些其它缺点和需要解决的问题:

缺乏对照研究:报告的结果以SFT模型为基准衡量最终PPO模型的性能。这可能会产生误导:如何知道这些改进是由于RLHF?因此对照研究非常有必要,包括投入与用于训练RM模型的标注工时数完全相同的时间,以创建具有高质量数据的更大的精选有监督调优的数据集。这样就可以客观地衡量RLHF方法与监督方法相比的性能改进。简单来说,缺乏这样的对照研究让一个基本问题完全悬而未决:RLHF在一致性语言模型方面真的做得很好吗?

比较数据缺乏基本事实:标注者通常会对模型输出的排名持不同意见。技术上讲,产生的风险是在没有任何基本事实的情况下,向比较数据添加了很大的方差。

人类的偏好并非同质:RLHF方法将人类的偏好视为同质和静态的。假设所有人都有相同的价值观,这明显是不准确的,虽然有大量的公共价值观,但在很多事务上人类还是存在许多不同的认知。

RM模型prompt稳定性测试:没有实验表明RM模型在输入prompt变化方面的敏感性。如果两个prompt在句法上不同但在语义上是等价的,RM模型能否在模型输出的排名中显示出显著差异?即prompt的质量对RM有多重要?

其它问题:在RL方法中,模型有时可以学会控制自己的RM模型以实现期望的结果,从而导致「过度优化的策略」。这可能会导致模型重新创建一些模式,因为某些未知的原因,这些模式使RM模型得分较高。ChatGPT通过使用RM函数中的KL惩罚项对此进行了修补。

相关阅读:

关于用于ChatGPT的RLHF方法的相关的论文:Traininglanguagemodelstofollowinstructionswithhumanfeedback(),它实际上详细描述了一个名为InstructionGPT的模型,OpenAI称之为ChatGPT的「兄弟模型」。

LearningtosummarizefromHumanFeedback()描述了文本摘要上下文中的RLHF。

PPO():PPO算法论文。

Deepreinforcementlearningfromhumanpreferences()

DeepMind在Sparrow中提出了OpenAIRLHF的替代方案()和GopherCite()文件。

参考内容:

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系