chatgpt实际是怎样工作的?

时间:2021-10-28 01:17:28

文章翻译自:
https://www.assemblyai.com/blog/how-chatgpt-actually-works/

ChatGPT 是 OpenAI 的最新语言模型,比其前身 GPT-3 有了重大改进。与许多大型语言模型类似,ChatGPT 能够为不同目的生成多种样式的文本,但具有更高的精确度、细节和连贯性。它代表了 OpenAI 大型语言模型系列的下一代产品,其设计非常注重交互式对话。

创建者结合使用监督学习和强化学习来微调 ChatGPT,但正是强化学习组件使 ChatGPT 独一无二。创作者使用一种称为人类反馈强化学习 (RLHF) 的特殊技术,该技术在训练循环中使用人类反馈来最大限度地减少有害、不真实和/或有偏见的输出。

在了解 RLHF 的工作原理和了解 ChatGPT 如何使用 RLHF 来克服这些问题之前,我们将研究 GPT-3 的局限性以及它们如何源于其训练过程。最后,我们将研究这种方法的一些局限性。

大型语言模型中的能力与对齐

chatgpt实际是怎样工作的?
在机器学习的上下文中,术语能力是指模型执行特定任务或一组任务的能力。模型的能力通常通过优化其目标函数的能力来评估,目标函数是定义模型目标的数学表达式。例如,设计用于预测股票市场价格的模型可能具有衡量模型预测准确性的目标函数。如果该模型能够准确预测股票价格随时间的变化,则可以认为它具有完成此任务的高水平能力。

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

Models like the original GPT-3 are misaligned

大型语言模型(例如 GPT-3)根据来自互联网的大量文本数据进行训练,能够生成类似人类的文本,但它们可能并不总是产生与人类期望或理想值一致的输出。事实上,他们的目标函数是单词序列(或标记序列)的概率分布,使他们能够预测序列中的下一个单词是什么(下面有更多详细信息)。

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

虽然这些强大、复杂的模型在过去几年中经过大量数据训练变得非常有能力,但当用于生产系统以使人类生活更轻松时,它们往往无法发挥这种潜力。Large Language Models 中的对齐问题通常表现为:

  • 缺乏帮助:不遵循用户的明确指示。
  • 幻觉:模型编造了不存在的或错误的事实。
  • 缺乏可解释性:人类很难理解模型是如何做出特定决定或预测的。
  • 生成有偏见或有毒的输出:在有偏见/有毒数据上训练的语言模型可能会在其输出中重现该结果,即使没有明确指示这样做。

但是这个对齐问题具体是从哪里来的呢?语言模型的训练方式是否天生就容易出现错位?

语言模型训练策略如何产生错位

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

“The cat sat on the”

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

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

“The [MASK] sat on the”

对于输入,他可能预测的单词为"cat", “dog”, or “rabbit”.

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

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

“The Roman Empire [MASK] with the reign of Augustus.”

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

更一般地说,这些训练策略可能会导致语言模型在某些更复杂的任务中出现偏差,因为仅经过训练以预测文本序列中的下一个词(或掩码词)的模型可能不一定会学习一些其含义的更高层次的表示。因此,该模型难以泛化到需要更深入地理解语言的任务或上下文。

研究人员和开发人员正在研究各种方法来解决大型语言模型中的对齐问题。ChatGPT 基于原始的 GPT-3 模型,但经过进一步训练,使用人工反馈来指导学习过程,具体目标是减轻模型的错位问题。所使用的具体技术,称为从人类反馈中强化学习,是基于先前的学术研究。ChatGPT 代表了第一个将这种技术用于生产模型的案例。

但是,ChatGPT 的创建者究竟是如何利用人类反馈来解决对齐问题的呢?

从人类反馈中强化学习

  1. 有监督的微调步骤:预训练语言模型在标记者策划的相对少量的演示数据上进行微调,以学习从选定的提示列表生成输出的监督策略(SFT 模型)。这表示基线模型。
  2. “模仿人类偏好”步骤:标注者被要求对相对大量的 SFT 模型输出进行投票,这样就创建了一个由比较数据组成的新数据集。在此数据集上训练了一个新模型。这称为奖励模型 (RM)。
  3. Proximal Policy Optimization (PPO) 步骤:奖励模型用于进一步微调和改进 SFT 模型。这一步的结果就是所谓的政策模型。

第一步只发生一次,而第二步和第三步可以不断迭代:在当前最好的策略模型上收集更多的比较数据,用于训练新的奖励模型,然后训练新的策略。

现在让我们深入了解每个步骤的细节!

注意:本文的其余部分基于InstructGPT 论文的内容。根据 OpenAI 的说法,ChatGPT 已经“使用与 InstructGPT 相同的方法进行训练,但数据收集设置略有不同”(来源)。不幸的是,ChatGPT 的确切定量报告尚未公开。

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

第一步包括收集示范数据以训练监督政策模型,称为 SFT 模型。

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

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

chatgpt实际是怎样工作的?

由于此步骤的数据量有限,在此过程之后获得的 SFT 模型可能会输出仍然(概率上)不是很受用户关注的文本,并且通常会出现上文所述意义上的错位。这里的问题是监督学习步骤的可扩展性成本很高。

为了克服这个问题,现在的策略是让贴标签者对 SFT 模型的不同输出进行排序以创建奖励模型,而不是要求人工贴标签者创建一个更大的精选数据集,这是一个缓慢且昂贵的过程——让我们更详细地解释这一点下节详述。

第二步:奖励模型(RM)

目标是直接从数据中学习目标函数(奖励模型) 。此函数的目的是为 SFT 模型输出打分,与这些输出对人类的期望程度成正比。在实践中,这将强烈反映选定的人类标签组的特定偏好以及他们同意遵循的共同准则。最后,这个过程将从数据中提取一个应该模仿人类偏好的自动系统。

它是这样工作的:

  • 选择提示列表,SFT 模型为每个提示生成多个输出(4 到 9 之间的任意位置)。
  • 贴标签者将输出从最好到最差排序。结果是一个新的标记数据集,其中排名是标签。该数据集的大小大约是用于 SFT 模型的精选数据集的 10 倍。
  • 此新数据用于训练奖励模型 (RM)。该模型将一些 SFT 模型输出作为输入,并按优先顺序对它们进行排序。

chatgpt实际是怎样工作的?

对于贴标机来说,对输出进行排序比从头开始生产要容易得多,这个过程可以更有效地扩大规模。在实践中,这个数据集是从 30-40k 提示的选择中生成的,并且在排名阶段将可变数量的生成输出(对于每个提示)呈现给每个标签器。

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

强化学习现在用于通过优化奖励模型来微调 SFT 策略。使用的特定算法称为近端策略优化(PPO),微调后的模型称为 PPO 模型。

什么是 PPO?以下是此方法的主要要点:

  • PPO 是一种用于在强化学习中训练代理的算法。之所以称为“on-policy”算法,是因为它直接从当前策略中学习和更新,而不是像 DQN(深度 Q 网络)这样的“off-policy”算法中那样从过去的经验中学习。这意味着 PPO 会根据代理正在采取的行动和收到的奖励不断调整当前策略。
  • PPO使用信任域优化的方法来训练策略,这意味着它将策略的变化限制在与先前策略的一定距离内,以确保稳定性。这与其他策略梯度方法形成对比,后者有时会对可能破坏学习稳定性的策略进行大量更新。
  • PPO 使用价值函数来估计给定状态或动作的预期回报。价值函数用于计算优势函数,它表示预期收益与当前收益之间的差异。然后使用优势函数通过比较当前策略采取的操作与先前策略将采取的操作来更新策略。这使 PPO 可以根据所采取行动的估计价值对政策进行更明智的更新。

在这一步中,PPO模型是从SFT模型初始化的,**价值函数是从奖励模型初始化的。**该环境是一个bandit 环境,它呈现随机提示并期望对提示做出响应。给定提示和响应,它会产生一个奖励(由奖励模型决定)并且这一集结束。每个代币的SFT 模型都添加了每个代币的KL 惩罚,以减轻奖励模型的过度优化。

chatgpt实际是怎样工作的?

绩效评估

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

该模型根据三个高级标准进行评估:

  • Helpfulness:判断模型遵循用户指令的能力,以及推断指令的能力。
  • Truthfulness:判断模型对封闭域任务产生幻觉(编造事实)的倾向。该模型在TruthfulQA 数据集上进行评估。
  • Harmlessness:标注者评估模型的输出是否合适,是否诋毁受保护类,或包含贬损内容。该模型还在RealToxicityPrompts和CrowS-Pairs数据集上进行了基准测试。

该模型还评估了传统 NLP 任务(如问答、阅读理解和摘要)的零样本性能,开发人员在其中一些任务上观察到与 GPT-3 相比的性能回归。这是一个“校准税”的例子,其中基于 RLHF 的校准程序是以降低某些任务的性能为代价的。

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

该方法的缺点

正如InstructGPT 论文(根据其创建者所说,ChatGPT 正是基于该论文)所讨论的,该方法的一个非常明显的局限性是,在将语言模型与人类意图对齐的过程中,用于微调模型的数据受到各种错综复杂的主观因素的影响,包括:

  • 生成演示数据的标记者的偏好。
  • 设计研究和编写标签说明的研究人员。
  • 选择由开发人员制作或由 OpenAI 客户提供的提示。
  • 标记者偏差既包含在奖励模型训练(通过对输出进行排名)中,也包含在模型评估中。

作者特别指出了一个明显的事实,即参与训练过程的标注人员和研究人员可能无法代表语言模型的所有潜在最终用户。

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

缺乏控制研究:报告的结果衡量最终 PPO 模型的性能,以 SFT 模型为基线。这可能会产生误导:我们怎么知道改进实际上是由于 RLHF?一项适当的(但昂贵的)对照研究将包括投入与用于训练奖励模型的标记工时数完全相同的时间,以创建具有高质量演示数据的更大的精选 SFT 数据集。然后,人们就可以客观地衡量 RLHF 方法与监督方法相比的性能改进。简单来说,缺乏这样的控制研究让一个基本问题完全悬而未决:RLHF 在对齐语言模型方面真的做得很好吗?

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

人类偏好并不是同质的:RLHF 方法将人类偏好视为同质和静态的。假设所有人都拥有相同的价值观显然是一种延伸,至少在人类知识的大量主题上是这样。最近的一些研究开始以不同的方式解决这个悬而未决的问题。

奖励模型 (RM) 的提示稳定性测试:似乎没有实验调查奖励模型在输入提示变化方面的敏感性。如果两个提示在句法上不同但在语义上是等价的,RM 能否在模型输出的排名中显示出显着差异?简单来说,提示的质量对 RM 有多重要?

Wireheading 类型的问题:在 RL 方法中,模型有时可以学习操纵自己的奖励系统以获得预期的结果,从而导致“过度优化的策略”。这可以推动模型重新创建一些模式,这些模式由于某种未知原因使奖励模型得分高(请参阅OpenAI 这篇论文中的表 29 ,了解语言建模中这种行为的明确示例)。ChatGPT 在奖励函数中使用 KL 惩罚项对此进行了修补。请注意,有人试图优化 RM输入(即 PPO 输出)以提高其输出(奖励分数),同时限制输入本身与某些参考输入不太远(SFT 输出)。在最近的预印本中详细介绍了这种方法的局限性。

Selected references for further reading

  • 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.

文章翻译自:

https://www.assemblyai.com/blog/how-chatgpt-actually-works/