深入探索ChatGPT机器人背后的模型机制

深入探索ChatGPT机器人背后的模型机制

作者 | 作者 | Molly Ruby
译者 | 王强
策划 | 刘燕
这篇文章概述了最近最火热的聊天机器人背后使用的理念与方法

本文介绍了支持 ChatGPT 的机器学习模型的概况,文章将从大型语言模型的介绍开始,深入探讨用来训练 GPT-3 的革命性自我注意机制,然后深入研究由人类反馈的强化学习机制这项让 ChatGPT 与众不同的新技术。

大型语言模型

ChatGPT 是一类被称为大型语言模型(LLM)的机器学习自然语言处理模型的延伸。LLM 消化大量文本数据并推断文本中不同单词之间的关系。我们看到,随着计算能力的进步,这些模型在过去几年中得到了长足发展。随着输入数据集和参数空间大小的增长,LLM 的能力也会不断提升。

语言模型最基本的训练过程涉及预测单词序列中的单词这一操作。最常见的操作类型是对下一 token 的预测以及带掩码机制的语言建模。

上图是本文作者生成的下一 token 预测和带掩码机制的语言建模的一般示例。

在这种通常通过长短期记忆(LSTM)模型部署的基本排序技术中,模型使用给定周围上下文时统计上概率最高的词来填充空白。这种顺序建模结构有两大局限。

  1. 该模型无法给有关联的一些词赋予比其他词更高的权重。在上面的例子中,虽然“reading”可能最常与“hates”联系在一起,但在数据库中,“Jacob”可能是一个狂热的读者,因此模型应该给予“Jacob”比“reading”更多的权重,并选择“love”'而不是'hates'。

  2. 输入数据是独立和顺序处理的,而不是作为整个语料库的一部分来处理的。这意味着当 LSTM 进行训练时,上下文窗口是固定的,仅扩展到序列中单个输入的几步之外。这限制了单词之间关系的复杂性和可以导出的含义。

针对这个问题,2017 年谷歌大脑的一个团队引入了 Transformers。与 LSTM 不同,Transformers 可以同时处理所有输入数据。该模型基于自注意力机制,可以根据语言序列的任何位置为输入数据的不同部分赋予不同的权重。此特性大大改善了向 LLM 中注入意义的能力,并支持处理更大的数据集。

GPT 和自注意力机制

2018 年,OpenAI 发布了 Generative Pre-training Transformer(GPT)模型的第一个版本 GPT-1。这一模型在 2019 年继续发展到了 GPT-2,2020 年发展到了 GPT-3,并在 2022 年发展出了 InstructGPT 和 ChatGPT 两个扩展。在将人类反馈集成到系统之前,GPT 模型进化的最大进步主要是由计算效率的提升推动的,这种提升使得 GPT-3 能够接受比 GPT-2 多得多的数据来做训练,从而赋予它更多样化的知识库和执行更广泛任务的能力。

GPT-2(左)和 GPT-3(右)的对比。

所有 GPT 模型都利用了 Transformer 架构,这意味着它们有一个编码器来处理输入序列,还有一个解码器来生成输出序列。编码器和解码器都有一个多头自注意力机制,允许模型对序列的不同部分进行不同的加权以推断文本含义和上下文。此外,编码器利用掩码语言建模来理解单词之间的关系,并生成更易于理解的响应。

驱动 GPT 的自注意力机制具体来说,是将 token(文本片段,可以是单词、句子或其他文本分组)转换为表示 token 在输入序列中的重要性的向量。为此,模型需要

  1. 为输入序列中的每个 token 创建查询、键和值向量。

  2. 取两个向量的点积来计算第一步中的查询向量与其他每一个 token 的键向量之间的相似度。

  3. 将步骤 2 的输出输入 softmax 函数来生成归一化权重。

  4. 将步骤 3 中生成的权重乘以每个 token 的值向量,从而生成一个最终向量,表示 token 在序列中的重要性。

GPT 使用的“多头”注意力机制是自注意力机制的进化。模型不会只执行上述 1 到 4 步骤一次,而是并行地对这些步骤多次迭代,每次都生成查询、键和值向量的新的线性投影。这种方式扩展了自注意力机制,让该模型能够掌握输入数据中的子含义和更复杂的关系。

作者生成的 ChatGPT 对话的截图。

尽管 GPT-3 在自然语言处理方面取得了显著进步,但它欠缺足够的符合用户意图的能力。例如,GPT-3 可能生成的输出

  • 缺乏帮助,意思是说输出不遵循用户的明确指示。

  • 包含幻觉,指的是不存在或不正确的事实。

  • 缺乏可解释性,使人类难以理解模型是如何得出特定决策或预测的。

  • 包括有毒或有偏见的内容,指的是有害或令人反感,并传播错误信息的内容。

ChatGPT 中引入了创新的训练方法,以解决标准 LLM 的一些固有问题。

ChatGPT

ChatGPT 是 InstructGPT 的衍生产品,它引入了一种新颖的方法,将人类反馈纳入训练过程,以使模型输出与用户意图更好地保持一致。OpenAI 在 2022 年发布的论文《训练语言模型遵循带有人类反馈的指令》对人类反馈强化学习(RLHF)机制做了深入描述,下文对此做了简要总结。

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

第一项开发工作是通过 OpenAI 招募的 40 家承包商创建的监督训练数据集来微调 GPT-3 模型,在这一数据集中每个输入都有已知输出,供模型学习。输入,或者叫提示,是从实际用户输入到 Open API 的信息中收集的。然后,标注员对提示做出适当的回应,从而为每个输入创建一个已知的输出。接下来 OpenAI 使用这个新的监督数据集对 GPT-3 模型进行调整,以创建 GPT-3.5,也称为 SFT 模型。

为了最大化提示数据集中的多样性,任何给定的用户 ID 只能发出 200 个提示,数据集还删除了所有共享长公共前缀的提示。最后,数据集删除了所有包含个人身份信息(PII)的提示。

在汇总来自 OpenAI API 的提示后,标注人员还被要求创建一些样本提示,以填充那些真实样本数据很少的类别。数据集感兴趣的类别包括:

  • 普通提示:任意问题。

  • Few-shot 提示:包含多个查询 / 响应对的指令。

  • 基于用户的提示:对应 OpenAI API 请求的特定用例。

在生成响应时,标注者被要求尽可能推断用户指令的具体内容。本文介绍了提示请求信息的三种主要方式。

  1. Direct:“告诉我关于……的信息”

  2. Few-shot:基于这两个故事的例子,写另一个关于同一主题的故事。

  3. Continuation:给定一个故事的开头,完成这个故事。

来自 OpenAI API 的提示汇编和标注人员手写的提示一共产生了 13,000 个输入 / 输出样本,用于监督模型训练。

图(左)是从训练语言模型插入以遵循人类反馈的指令。上图来自 OpenAI 在 2022 的论文: https://arxiv.org/pdf/2203.02155.pdf。图(右)附加的上下文是作者添加的。

第二步:奖励模型

在步骤 1 中训练 SFT 模型后,该模型会对用户提示生成更一致的响应。下一个改进是训练一个奖励模型,其中模型输入是一系列提示和响应,输出是一个缩放值,称为奖励(reward)。奖励模型用来做强化学习,在强化学习中模型学习如何生成最大化其奖励的输出(参见步骤 3)。

为了训练奖励模型,每个输入提示会为标注员提供 4 到 9 个 SFT 模型输出。他们被要求将这些输出从最好到最差进行排名,创建输出排名组合,如下:

响应排名组合示例。

将模型中的每个组合作为单独的数据点包括在模型内会导致过拟合(无法推断超出可见数据的范围)。为了解决这个问题,该模型是利用每组排名作为单个批处理数据点构建的。

图(左)是从训练语言模型插入以遵循人类反馈的指令。上图来自 OpenAI 在 2022 的论文: https://arxiv.org/pdf/2203.02155.pdf。图(右)附加的上下文是作者添加的。

第三步:强化学习模型

在最后阶段,模型会收到随机提示并返回响应。响应是使用模型在步骤 2 中学习的“策略”生成的。该策略代表了机器已经学会使用的用来实现其目标的策略,这里说的目标就是最大化模型获得的奖励。基于在步骤 2 中开发的奖励模型,接下来要为提示和响应确定一个缩放器奖励值。然后奖励会反馈到模型中以改进策略。

2017 年,Schulman 等人引入了近端策略优化(PPO),这种方法用于在生成每个响应时更新模型的策略。PPO 包含来自 SFT 模型的 per-token Kullback–Leibler(KL)惩罚。KL 散度衡量两个分布函数的相似性,并对极端距离进行惩罚。在这种情况下,使用 KL 惩罚会减少响应与步骤 1 中训练的 SFT 模型输出之间的距离,以避免过度优化奖励模型,避免与人类意图数据集的偏差太大。

图(左)是从训练语言模型插入以遵循人类反馈的指令。上图来自 OpenAI 在 2022 的论文: https://arxiv.org/pdf/2203.02155.pdf。图(右)附加的上下文是作者添加的。

该过程的第 2 步和第 3 步可以重复进行,但在实践中并没有普遍这样做。

作者生成的 ChatGPT 对话的截图。

模型评估

模型的评估过程是通过在训练期间留出模型未见过的测试集来执行的。OpenAI 在测试集上进行了一系列评估,以确定该模型是否比其前身 GPT-3 表现更出色。

有用性:模型推断和遵循用户指令的能力。在 85±3% 的时间里,标注员更喜欢 InstructGPT 而非 GPT-3 的输出。

真实性:模型产生幻觉的倾向。当使用 Truthful QA 数据集进行评估时,PPO 模型产生的输出显示真实性和信息量略有增加。

无害性:模型避免不当、贬损和诋毁内容的能力。OpenAI 使用 RealToxicityPrompts 数据集测试了模型的无害性。测试在三种条件下进行:

  1. 指示模型提供有礼貌的响应:结果毒性反应显著减少。

  2. 指示模型提供响应,没有任何关于礼貌的设置:毒性没有显著变化。

  3. 指示模型提供毒性响应:模型给出的响应实际上比 GPT-3 模型的毒性大得多。

要了解关于创建 ChatGPT 和 InstructGPT 所用方法的更多信息,请阅读 OpenAI 在 2022 年发表的原始论文:https://arxiv.org/pdf/2203.02155.pdf。

作者生成的 ChatGPT 对话的截图。

原文链接:

 https://towardsdatascience.com/how-chatgpt-works-the-models-behind-the-bot-1ce5fca96286