GPT是怎样练成的

小泽承平
发布于
本文翻译自一篇AssemblyAI的博客,原作者Marco Ramponi,原博客链接

ChatGPT是OpenAI的最新语言模型,相比其前身GPT-3有了显著的改进。与许多大型语言模型类似,ChatGPT能够生成各种风格和目的的文本,但精度、细节和连贯性与其他模型相比都有了明显提高。它代表了下一代OpenAI大型语言模型系列,并且重点以交互对话而设计。

创作者们使用了监督学习和强化学习的组合来优化ChatGPT,但是特别是强化学习的部分使ChatGPT与之不同。创作者们使用了一种称为人类反馈强化学习(RLHF)的特定技术,在训练循环中使用人类反馈来最小化有害、不真实或有偏见的输出。

我们将探讨GPT-3的局限性及其涌现能力如何从训练过程中产生,然后学习RLHF的工作原理,了解ChatGPT如何使用RLHF来克服这些问题。最后,我们将审视这种方法的一些限制。

大型语言模型中的能力和对齐性

“对齐性与能力”可以被看作是机器学习中“准确性与精度”的更抽象类比。

在机器学习的范畴内,“能力”一词指的是模型执行特定任务或一组任务的能力。模型的能力通常通过其能够多大程度地优化目标函数的能力来评估,目标函数是定义模型目标的数学表达式。例如,一个用于预测股票市场价格的模型可能具有一个测量模型预测准确性的目标函数。如果该模型能够准确地预测股票价格随时间的变化,那么它将被认为在这项任务上具有很高的能力。

另一方面,“对齐性”关注的是我们实际希望模型执行的任务与它被训练执行的任务之间的差异。它问的问题是“该目标函数是否符合我们的意图?”,并指模型的目标和行为与人类价值观和期望的一致程度。举个简单的具体例子,假设我们训练一个鸟类分类器将鸟类分类为“麻雀”或“知更鸟”,并将对数损失(log loss)(衡量模型预测概率分布与真实分布之间的差异)作为训练目标,尽管我们的最终目标是高准确率的分类。该模型可能具有低的对数损失,即模型的能力很高,但在测试集上的准确率却很差。事实上,在分类任务中,对数损失并不完全与准确性相关。这是对齐性不良的一个例子,其中模型能够优化训练目标,但与我们的最终目标不一致。

像最开始的GPT-3模型是对齐性不良的

像GPT-3这样的大型语言模型是基于互联网上大量文本数据进行训练的,能够生成类似于人类的文本,但可能它们不总是能产生与人类期望或理想价值观一致的输出。事实上,它们的目标函数是一个概率分布,用于预测一个词序列(或标记序列)中下一个词是什么(下面会有更多细节)。

然而,在实际应用中,这些模型旨在执行某种有价值的认知工作,而它们的训练方式与我们希望使用它们的方式存在明显的分歧。尽管机器计算的词序列的统计分布在数学上可能是一个非常有效的语言模型选择,但我们作为人类生成语言时会根据给定情况选择最佳的文本序列,并使用我们的背景知识和常识来指导这个过程。当语言模型用于需要高度信任或可靠性的应用程序时,这可能是一个问题,例如对话系统或智能个人助理。

虽然这些在大量数据上训练的强大、复杂的模型在过去几年中变得极为强大,但当它们应用于生产系统中用于使人类生活更轻松时,它们往往无法充分发挥这个潜力。大型语言模型中的对齐问题通常表现为:

  • 缺乏帮助性:不遵循用户明确的指令。
  • 幻觉:模型编造不存在或错误的事实。
  • 缺乏可解释性:人类难以理解模型是如何得出特定的决策或预测的。
  • 生成有偏见或有害输出:一个在有偏见/有害数据上训练的语言模型可能会在其输出中复制这些内容,即使它没有明确被指示这样做。

但是,这个对齐问题具体来自哪里呢?是语言模型的训练方式本质上容易导致不对齐吗?

语言模型训练策略如何导致对齐性不良?

“下一个标记预测”(Next-token-prediction)和“掩码语言建模”是训练语言模型(masked-language-modeling)(如Transformer)的核心技术。在第一种方法中,模型被给定一个单词(或“标记”,即单词的一部分)序列作为输入,并被要求预测序列中的下一个单词。例如,如果模型被给定输入句子:

它可能会预测下一个单词是“mat(地毯)”、“chair(椅子)”或“floor(地板)”,因为在给定先前上下文的情况下,这些单词的出现概率很高;事实上,语言模型能够估计给定先前序列的情况下每个可能单词(在其词汇表中)的可能性。

掩码语言建模方法是下一个标记预测方法的一种变体,其中输入句子中的一些单词被替换为特殊标记,例如[MASK]。然后,模型被要求预测应该插入掩码位置的正确单词。例如,如果模型被给定句子:

用作输入,它可能会预测下一个单词是”cat“ ”dog“ 或者”rabbit“

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

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

它可能会预测“began开始”或“ended结束”,因为这两个单词的出现概率都很高(实际上,这两个句子都是历史上正确的),即使第二个选择意味着完全不同的含义。

更普遍地说,这些训练策略可能会导致语言模型在一些更复杂的任务中出现不对齐的情况,因为仅通过训练模型来预测文本序列中的下一个单词(或掩码单词),可能并不一定能够学习到一些更高层次的意义表示。因此,该模型难以推广到需要更深入理解语言的任务或上下文中。

研究人员和开发人员正在尝试各种方法来解决大型语言模型的对齐问题。ChatGPT基于原始的GPT-3模型,但通过使用人类反馈来指导学习过程,以特定的目标减轻模型的不对齐问题。使用的具体技术称为从人类反馈中强化学习,这是基于先前的学术研究的。ChatGPT代表了该技术首次用于投入生产的模型的情况。

但是ChatGPT的创造者到底是怎么样来使用人类反馈解决对齐性问题的呢?

基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)

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

  1. 监督微调(Supervised fine-tuning) - 预先训练的语言模型在标注员(labeler)筛选的相对较少的演示数据上进行微调,以学习生成来自所选提示列表的受监督策略(SFT模型),这代表了基线模型(baseline model)
  2. 模仿人类偏好(Mimic human preferences) - 要求标注员对相对较多的SFT模型输出进行投票,从而创建一个由比较数据组成的新数据集。然后在这个数据集上训练一个新模型,这被称为奖励模型(RM)
  3. 近端策略优化(PPO)- 奖励模型用于进一步微调和改进SFT模型。这一步的结果是所谓的策略模型

步骤1只发生一次,而步骤2和3可以持续迭代:在当前最佳策略模型上收集更多的比较数据,然后使用这些数据来训练新的奖励模型,接着再训练新的策略模型。

那就让我们来深入探索一下每一步的细节吧!

注:本文其余部分基于InstructGPT论文的内容。根据OpenAI的说法,ChatGPT已经通过“使用与InstructGPT相同的方法进行训练,但在数据收集设置方面存在细微差异”。不幸的是,ChatGPT的确切定量报告尚未公开发布。

步骤1:监督微调(SFT)模型

第一步是收集演示数据,以训练一个受监督的策略模型,称为SFT模型。

  • 数据收集:首先选择一组提示列表,并要求一组人类标注员编写预期的输出响应。对于ChatGPT,使用了两个不同的提示来源:一些是直接由标注员或开发人员准备的,一些则是从OpenAI的API请求中采样的(即来自他们的GPT-3客户)。由于整个过程缓慢而昂贵,因此结果是一个相对较小的、高质量的筛选数据集(大约12-15k个数据点),用于微调预先训练的语言模型。
  • 模型选择:ChatGPT的开发人员选择了预训练模型GPT-3.5系列中的一个模型,而不是对原始的GPT-3模型进行微调。据推测,所使用的基线模型是最新的text-davinci-003模型,这是一个主要针对编程代码进行微调的GPT-3模型。

非常有趣的是,为了创建像ChatGPT这样的通用聊天机器人,开发人员决定在“代码模型”上进行微调,而不是在纯文本模型上进行微调。

步骤一的流程图

步骤一的流程图

由于这一步的数据量有限,因此在此过程之后获得的SFT模型可能会输出(在概率上)不太关注用户的文本,并且通常存在上述部分所解释的不对齐问题。这里的问题在于,受监督的学习步骤具有高扩展性成本。(即随着训练量的增加,训练成本与难度也指数级增加)

为了克服这个问题,而不是要求人类标注员创建一个更大的筛选数据集,这是一种缓慢而昂贵的过程,现在的策略是让标注员对SFT模型的不同输出进行排名,以创建一个奖励模型 - 让我们在下一节中详细解释这一点。

步骤二:奖励模型(The reward model, RM)

这一阶段的目标是直接从数据中学习一个目标函数(奖励模型)。该函数的目的是为SFT模型的输出打分,该分数与这些输出对于人类的可取性成比例。在实践中,这将强烈反映出所选的人类标注员组的具体偏好和他们同意遵循的共同指导方针。最终,这个过程将从数据中提取出一个应该模仿人类的偏好的自动系统。

下面是其如何运行的:

  • 首先选择一个提示列表,然后SFT模型为每个提示生成多个输出(通常在4到9个之间)。
  • 标注员按照最佳到最差的顺序对这些输出进行排名。结果是一个新的带标签数据集,其中排名是标签。该数据集的大小约为用于SFT模型的筛选数据集的10倍。
  • 使用这个新数据集来训练一个奖励模型(RM)。该模型以一些SFT模型的输出作为输入,并按照偏好的顺序对它们进行排名。
  • 阶段二流程图

对于标注员来说,对输出进行排名比从头开始生成输出要容易得多,因此这个过程可以更有效地扩展。实际上,这个数据集是从30-40k个提示的选择中生成的,并且在排名阶段,依据每个提示词所生成的不同数量的输出会被呈现给每个标注员。

步骤三:通过近端策略优化(PPO)微调SFT模型

在这个阶段应用强化学习来微调SFT策略,让它优化奖励模型。使用的具体算法称为近端策略优化(PPO),微调后的模型称为PPO模型。

那么什么是PPO呢?这里有几点关于这个方法主要的总结:

  • PPO是一种用于训练强化学习中的代理的算法。它被称为“on-policy”算法,因为它直接从当前策略中学习并更新,而不像“off-policy”算法(如DQN)那样从过去的经验中学习。这意味着PPO根据代理正在执行的动作和获得的奖励不断适应当前策略。
  • PPO使用信赖区域优化方法来训练策略,这意味着它将策略的变化限制在前一个策略的某个距离范围内,以确保稳定性。这与其他策略梯度方法不同,其他方法有时会对策略进行大量更新,这可能会破坏学习的稳定性。
  • PPO使用一个价值函数来估计给定状态或动作的预期回报。价值函数用于计算优势函数,它表示预期回报和当前回报之间的差异。优势函数然后被用来通过比较当前策略采取的行动和以前策略采取的行动来更新策略。这使得PPO能够基于正在采取的行动的估计值进行更明智的策略更新。

在这个步骤中,PPO模型从SFT模型初始化,并且价值函数从奖励模型初始化。环境是一个赌博机环境,它会呈现一个随机提示并期望对提示做出回应。给定提示和回应,它会产生一个奖励(由奖励模型确定),并结束该回合。在每个标记处都会添加来自SFT模型的标记级别KL惩罚,以减轻奖励模型的过度优化。

模型表现评价

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

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

  • 帮助性:评估模型遵循用户指令以及推断指令的能力。
  • 真实性:评估模型在封闭域任务中产生幻觉(编造事实)的倾向。该模型在TruthfulQA数据集上进行评估。
  • 无害性:标注者评估模型的输出是否恰当,是否贬低了受保护的类别,或者是否包含贬低性内容。该模型也在RealToxicityPrompts和CrowS-Pairs数据集上进行基准测试。

该模型还在传统的自然语言处理任务上进行了zero-shot性能评估,如问答、阅读理解和摘要,其中一些任务与GPT-3相比表现出了性能回归。这是“对齐税(alignment tax)”的一个例子,即基于RLHF的对齐过程以某些任务的性能降低为代价。

在这些数据集上的性能回归可以通过一种称为预训练混合(pre-train mix)的技巧大大降低:在通过梯度下降训练PPO模型时,梯度更新是通过混合SFT模型和PPO模型的梯度来计算的。

方法的缺陷与不足

正如《InstructGPT》论文所讨论的那样,该方法的一个非常明显的限制是,在将语言模型与人类意图对齐的过程中,微调模型的数据受到许多主观因素的影响,包括:

  • 制作演示数据的标注员的偏好
  • 设计ChatGPT并编写标注说明的研究人员。
  • 是选择开发人员精心设计的提示词还是OpenAI顾客的提示词
  • 标注者的偏见既包含在奖励模型的培训中(通过排名输出),也包含在模型评估中。

特别的地方在于,作者指出这一显而易见的事实,即参与培训过程的标注者和研究人员不可能代表语言模型所有潜在的最终用户。

除了这个明显的“内在”限制外,我们还想指出该方法可能存在一些其他的缺点和未明确解决的问题,以及一些未解决的问题:

缺乏对照研究:报告的结果衡量了最终PPO模型的性能,以SFT模型为基准。这可能会产生误导:我们如何知道这些改进实际上是由于RLHF所致?一个适当的(尽管昂贵)对照研究将包括投入与训练奖励模型所用的同样数量的标注者小时数来创建一个具有高质量演示数据的更大型的策略型数据集。然后,人们将能够客观地衡量RLHF方法与监督方法之间的性能改进。简而言之,缺乏这样的对照研究会使一个根本性的问题完全悬而未决:RLHF是否实际上在对齐语言模型方面做得好?
缺乏比较数据的基础真相:标注者通常可能对模型输出的排名存在分歧。从技术上讲,风险是在没有任何基础真相的情况下向比较数据添加高潜在方差。

人类偏好并非均质的(homogeneous):RLHF方法将人类偏好视为均质且静态的。假设所有人都分享相同的价值观显然是有些夸张了,但至少在大量人类知识主题上是如此(即知识主题上分享相似的价值观)。一些最近的研究正在以不同的方式解决这个悬而未决的问题。

奖励模型的提示稳定性测试:似乎没有实验研究奖励模型在输入提示变化方面的敏感性。如果两个提示在语法上不同但在语义上等价,奖励模型是否会在模型输出的排名中显示出显着差异?简而言之,提示的质量对奖励模型有多大影响?

Wireheading类型问题:在强化学习方法中,模型有时会学习操纵自己的奖励系统以实现期望的结果,导致“过度优化策略”。这可能会推动模型重新创建某些模式,这些模式由于某种未知原因使奖励模型得分高(请参见OpenAI的这篇论文中表29的一个明确的例子)。ChatGPT通过奖励函数中的KL惩罚项来解决这个问题。请注意,人们正在尝试优化RM的输入(即PPO输出)以改善其输出(奖励得分),同时限制输入本身不要太远离某些参考输入(即SFT输出)。关于这种方法的局限性的更多细节,请参见这篇最近的预印本

以下是进一步阅读的一些参考资料:

The most relevant paper about the RLHF methodology used for ChatGPT is Training language models to follow instructions with human feedback, which in fact details a model called InstructGPT, referred to by OpenAI as a "sibling model" to ChatGPT.

Anthropic published a detailed study on the effectiveness of RLHF methods for finetuning language models to act as helpful and harmless assistants.

The paper Learning to summarize from Human Feedback describes RLHF in the context of text summarization.

Proximal Policy Optimization: the PPO algorithm paper.

Deep reinforcement learning from human preferences –was one of the earliest (Deep Learning) papers using human feedback in RL, in the context of Atari games.

Alternatives to OpenAI's RLHF have been proposed by DeepMind in Sparrow and GopherCite papers.

A deep dive into the Alignment problem for language models is given in a (long) paper by Anthropic. Here's an excellent summary by Sam Ringer. Anthropic also has an open source repository (with accompanying paper) for RLHF.






5
评论 1
收藏 2
  • MR7
    MR7
    感谢分享!收藏啦