对为 ChatGPT 提供支持的机器学习模型的温和介绍将从引入大型语言模型开始,深入探讨使 GPT-3 能够被训练的革命性自我注意机制,然后深入到从人类反馈中强化学习,这是使 ChatGPT 与众不同的新技术。
大型语言模型
ChatGPT 是一类机器学习自然语言处理模型的外推,称为大语言模型 (LLM)。LLM消化大量的文本数据并推断文本中单词之间的关系。这些模型在过去几年中不断发展,因为我们看到了计算能力的进步。LLM 随着输入数据集和参数空间大小的增加而增加其功能。
语言模型最基本的训练涉及预测单词序列中的单词。最常见的是,这被观察到为下一个令牌预测和屏蔽语言建模。
作者生成的下一个令牌预测和掩蔽语言建模的任意示例。
在这种基本的测序技术中,通常通过长期 - 短期记忆 (LSTM) 模型部署,该模型在给定周围上下文的情况下用统计上最有可能的单词填充空白。这种顺序建模结构有两个主要限制。
该模型无法比其他单词更重视周围的某些单词。在上面的例子中,虽然“阅读”可能最常与“恨”联系在一起,但在数据库中,“雅各布”可能是一个狂热的读者,模型应该更重视“雅各布”而不是“阅读”,并选择“爱”而不是“恨”。
输入数据是单独和顺序处理的,而不是作为一个整体处理的。这意味着当训练 LSTM 时,上下文窗口是固定的,仅超出序列中几个步骤的单个输入。这限制了单词与可以推导出的含义之间关系的复杂性。
为了解决这个问题,2017年Google Brain的一个团队推出了变压器。与LSTM不同,变压器可以同时处理所有输入数据。使用自我注意机制,该模型可以相对于语言序列的任何位置为输入数据的不同部分赋予不同的权重。此功能在将意义注入LLM方面实现了巨大的改进,并能够处理更大的数据集。
GPT 和自我关注
生成预训练转换器 (GPT) 模型于 2018 年由 openAI 首次推出,名为 GPT-1。这些模型在 2019 年通过 GPT-2、2020 年使用 GPT-3 继续发展,最近一次是在 2022 年通过 InstructGPT 和 ChatGPT。在将人类反馈集成到系统中之前,GPT 模型演变的最大进步是由计算效率的成就推动的,这使得 GPT-3 能够比 GPT-2 接受更多的数据训练,使其具有更多样化的知识库和执行更广泛任务的能力。
GPT-2(左)和 GPT-3(右)的比较。由作者生成。
所有 GPT 模型都利用转换器架构,这意味着它们有一个编码器来处理输入序列和一个解码器来生成输出序列。编码器和解码器都具有多头自注意机制,允许模型对序列的各个部分进行差分加权以推断含义和上下文。此外,编码器利用屏蔽语言建模来理解单词之间的关系并产生更易于理解的响应。
驱动 GPT 的自我注意机制的工作原理是将标记(文本片段,可以是单词、句子或其他文本分组)转换为表示标记在输入序列中的重要性的向量。为此,模型,
为输入序列中的每个标记创建查询、键和值向量。
通过取两个向量的点积,计算步骤 1 中的查询向量与所有其他标记的键向量之间的相似性。
通过将步骤 2 的输出馈送到 softmax 函数中来生成归一化权重。
生成一个最终向量,通过将步骤 3 中生成的权重乘以每个令牌的值向量来表示标记在序列中的重要性。
GPT 使用的“多头”注意力机制是自我注意的演变。模型不会执行一次步骤 1-4,而是并行多次迭代此机制,每次生成查询、键和值向量的新线性投影。通过以这种方式扩展自我注意,该模型能够掌握输入数据中的子含义和更复杂的关系。
截图来自作者生成的ChatGPT。
尽管 GPT-3 在自然语言处理方面取得了显着进步,但它与用户意图保持一致的能力有限。例如,GPT-3 可能会产生
缺乏帮助意味着他们不遵循用户的明确说明。
包含反映不存在或不正确的事实的幻觉。
缺乏可解释性使得人类难以理解模型如何得出特定的决策或预测。
包含有害或冒犯性以及传播错误信息的有毒或偏见内容。
在ChatGPT中引入了创新的培训方法,以抵消标准LLM的一些固有问题。
ChatGpt
ChatGPT 是 InstructGPT 的衍生产品,它引入了一种将人类反馈纳入训练过程的新方法,以更好地使模型输出与用户意图保持一致。来自人类反馈的强化学习 (RLHF) 在 openAI 的 2022 年论文《训练语言模型以遵循人类反馈的说明》中有深入描述,并在下面进行了简化。
第 1 步:监督微调 (SFT) 模型
第一个开发涉及通过雇用 40 名承包商来创建监督训练数据集来微调 GPT-3 模型,其中输入具有可供模型学习的已知输出。输入或提示是从开放 API 的实际用户条目中收集的。然后,贴标机对提示编写适当的响应,从而为每个输入创建已知的输出。然后使用这个新的监督数据集对 GPT-3 模型进行微调,以创建 GPT-3.5,也称为 SFT 模型。
为了最大限度地提高提示数据集的多样性,任何给定用户 ID 只能有 200 个提示,并且删除了共享长通用前缀的任何提示。最后,删除了包含个人身份信息 (PII) 的所有提示。
在汇总来自 OpenAI API 的提示后,标签人员还被要求创建样本提示,以填写只有最少实际样本数据的类别。包括的兴趣类别
普通提示:任意询问。
少数镜头提示:包含多个查询/响应对的指令。
基于用户的提示:对应于为 OpenAI API 请求的特定用例。
在生成响应时,标签员被要求尽最大努力推断用户的指令是什么。本文介绍了提示请求信息的三种主要方式。
直接:“跟我说说...”
少镜头:鉴于这两个故事的例子,写另一个关于同一主题的故事。
延续: 给定一个故事的开始,结束它。
来自 OpenAI API 的提示编译并由标记人员手写,产生了 13,000 个输入/输出样本,可用于监督模型。
第 2 步:奖励模型
在步骤 1 中训练 SFT 模型后,模型会生成对用户提示的更好对齐响应。下一个改进以训练奖励模型的形式出现,其中模型输入是一系列提示和响应,输出是缩放器值,称为奖励。为了利用强化学习,需要奖励模型,其中模型学习产生输出以最大化其奖励(请参阅步骤 3)。
为了训练奖励模型,标签机为单个输入提示提供 4 到 9 个 SFT 模型输出。他们被要求从最佳到最差对这些输出进行排名,创建输出排名组合,如下所示。
响应排名组合的示例。由作者生成。
将模型中的每个组合作为单独的数据点包括在内会导致过度拟合(无法推断超出看到的数据)。为了解决该问题,该模型是利用每组排名作为单个批处理数据点构建的。
第 3 步:强化学习模型
在最后阶段,模型将收到随机提示并返回响应。响应是使用模型在步骤 2 中学习的“策略”生成的。该策略代表机器已经学会用于实现其目标的策略;在这种情况下,最大化其奖励。根据步骤 2 中开发的奖励模型,然后确定提示和响应对的缩放器奖励值。然后,奖励会反馈到模型中以发展策略。
2017年,舒尔曼等人. 引入了近端策略优化 (PPO),该方法用于在生成每个响应时更新模型的策略。PPO包含来自SFT模型的每代币Kullback-Leibler(KL)惩罚。KL 散度测量两个分布函数的相似性,并惩罚极远距离。在这种情况下,使用 KL 惩罚可以缩短响应与步骤 1 中训练的 SFT 模型输出的距离,以避免过度优化奖励模型并过于偏离人类意图数据集。
该过程的步骤 2 和 3 可以反复迭代,但在实践中尚未广泛完成。
模型评估
模型的评估是通过在训练期间搁置模型未见过的测试集来执行的。在测试集上,进行了一系列评估,以确定模型是否比其前身 GPT-3 更好地对齐。
有用性:模型推断和遵循用户说明的能力。贴标机更喜欢 InstructGPT 的输出,而不是 GPT-3 85 ± 3% 的时间。
真实性:模型的幻觉倾向。PPO模型产生的产出在使用TruthfulQA数据集进行评估时显示出真实性和信息性略有增加。
无害:模型避免不适当、贬损和诋毁内容的能力。使用RealToxicPrompts数据集测试了无害性。该测试在三种条件下进行。
指示提供尊重的反应:导致毒性反应显着减少。
指示提供反应,没有任何尊重设置:毒性无显着变化。
指示提供毒性反应:反应实际上比 GPT-3 模型毒性大得多。
有关创建 ChatGPT 和 InstructGPT 所用方法的更多信息,请阅读 OpenAI 训练语言模型发表的原始论文,以遵循人类反馈的说明,
祝你学习愉快!