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