尽管目前大肆宣传,但语言模型并不新鲜。多年来,我们的手机中都有它们,可以自动完成。而且,虽然它们可以为我们节省几秒钟的拼写时间,但没有人会称它们为“智能”或“有知觉”。
从技术上讲,所有语言模型都只是标记的概率分布。他们被训练来确定下一个可能的单词或符号,以先前的单词或符号为准。但是,它们也可以针对其他任务进行微调,例如语言翻译和问答。
语言生成是给算法一个随机词的过程,这样它就可以根据从训练数据中学到的概率生成下一个词,然后不断地为它提供自己的输出。例如,如果模型看到“我”,我们期望它产生“是”,然后是“很好”,等等。
它创建有意义的句子的能力取决于其参考窗口的大小。较旧的基本型号,例如我们手机中的那些,只能回头看一两个单词,这就是为什么它们近视并且在看到中间时忘记句子开头的原因。
在 Transformer 之前,研究人员使用递归神经网络 (RNN) 来解决短记忆问题。无需过多赘述,我们可以说他们的技巧是生成一个隐藏状态向量,其中包含有关输入句子中所有节点的信息,并使用引入的每个新标记对其进行更新。
尽管这个想法非常聪明,但隐藏状态最终总是严重偏向最近的输入。因此,与基本算法一样,RNN 仍然倾向于忘记句子的开头,尽管没有那么快。
后来,引入了长短期记忆(LSTM)和门控循环单元(GRU)网络。与普通 RNN 不同,它们具有内置机制(门),有助于保留相关输入的记忆,即使它们与产生的输出相去甚远。但是,这些网络本质上仍然是顺序的,并且架构过于复杂。它们效率低下并且禁止并行计算,因此不可能同时在多台计算机上运行它们以获得闪电般的性能。
2017 年, Google在这篇论文中首次描述了 Transformer。与 LSTM 和 GRU 不同,他们能够主动选择与给定阶段的处理相关的片段,并在进行估算时参考它们。它们更快、更高效,并且具有基于注意力原则的更简单的架构。
有趣的是,如果您现在阅读该作品,它听起来像是一篇关于机器翻译的普通论文,而当时有很多这样的论文。作者可能没有意识到他们可能已经发明了 AI 历史上最重要的架构之一。
在机器学习的上下文中,注意力是指分配给每个标记的向量,其中包含有关其在序列中的位置及其相对于其他输入元素的重要性的信息。模型可以在不需要串行处理的情况下进行预测时使用它们。让我们把它分解一下,让它变得更清楚。
在 transformers 出现之前,传统的序列到序列处理方法(例如神经语言翻译)是使用一个 RNN 将所有输入编码为单个隐藏状态,然后使用另一个 RNN 解码目标序列。在编码端最重要的是最终状态。
2014 年,Bahdanau 等人。提出了让所有隐藏状态都可用于解码器网络并允许它确定其中哪些对于生成当前输出最重要的绝妙想法。网络只关注了相关部分,忽略了其余部分。
四年后,谷歌的论文发表了。这一次,作者建议完全放弃 RNN,只在编码和解码阶段使用注意力。为此,他们不得不对原有的注意力机制进行一定的修改,从而导致了自注意力的发展。
将自注意力视为单个序列中节点之间的通信机制可能是最简单的。它的工作方式是为所有输入标记分配三个向量——查询 (Q)、键 (K) 和值 (V)——它们代表其初始嵌入的不同方面。
查询向量 (Q) 表示输入要查找的内容。将它们想象成您在 YouTube 搜索栏中输入的短语。
关键向量 (K) 作为输入的标识符,帮助它找到查询的匹配项。这些有点像带有相关标题的 Youtube 搜索结果。
值向量 (V) 表示每个标记的实际内容,并允许模型确定相关节点相对于查询的重要性并生成输出。这些可被视为缩略图和视频说明,可帮助您决定从搜索结果中点击哪个视频。
注意:在 self-attention 中,所有 Qs、Ks 和 Vs 来自相同的序列,而在cross-attention中则不是。
自注意力公式如下所示: Attention(Q,K,V) = softmax((QK^T) / sqrt(d_k)V 。下面是简单的过程:
Transformer 最初是作为 RNN 的简单替代品被发明出来的,用于编码序列,但在过去五年中,它们已被应用于 AI 研究的各个领域,包括计算机视觉,并且经常超越最先进的模型。
不过,在 2018 年,我们不知道如果将它们做大(具有数百万个参数)、提供充足的计算能力并在来自网络的大量、多样化和未标记的文本语料库上进行训练,它们会有多强大。
OpenAI 开发的Generative Pre-trained Transformer (GPT)首次展示了它们的能力,它有 1.17 亿个参数,并在未标记的数据上进行了预训练。在 12 项 NLP 任务中的 9 项中,它的表现都优于经过区别训练的模型,尽管事实上这些算法是专门为这些任务训练的,而 GPT 不是。
然后是GPT-2 模型(最大的模型有 15 亿个参数),紧随其后的是许多其他 transformer。而在 2020 年,OpenAI 终于发布了 GPT-3;它最大的版本有 1750 亿个参数,其架构与 GPT-2 基本相同。
OpenAI 的目标似乎是确定他们可以通过使模型更大并为其提供更多文本和功能来从模型中挤出多高的性能水平。结果令人吃惊。
注意:按照今天的标准,1750 亿个参数被认为是非常小的。
GPT-3 能够生成各种风格和格式的文本,例如小说、诗歌、手册、剧本、新闻文章、新闻稿、图片说明、歌词、电子邮件、对话回复等。它可以编写代码、总结、重新措辞、简化、分类任何信息等等。仅仅列出它的所有功能就需要整整一篇文章。然而,从本质上讲,这个野兽仍然是一个简单的自动完成系统。
好的,所以我们有一个非常强大的语言模型。我们可以将它用作聊天机器人吗?不。
GPT-3 及其类似物仍然是序列完成的工具,仅此而已。如果没有适当的指导,他们会就他们从你的问题中挑选出来的话题胡说八道,并编造虚假的文章、新闻、小说等,这些文章可能看起来流畅、连贯、语法无懈可击,但它们很少有用。
为了创建一个真正有用的聊天机器人,OpenAI 对 GPT-3 或 GPT 3.5(该模型的更新版本)进行了广泛的微调——我们还不知道。虽然有关此过程的许多细节尚未透露,但我们确实知道该机器人的训练方式与其兄弟模型InstructGPT几乎相同。我们还注意到,后者在许多方面与 Sparrow 相似,Sparrow 是 DeepMind 尚未推出的“智能对话代理”版本,在这篇论文中有所描述,该论文稍后发表。
因此,知道所有基于 transformer 的算法实际上都具有相同的架构,我们可以阅读 OpenAI 的博客文章,将其与 Sparrow 论文进行比较,然后对 ChatGPT 的幕后进行一些有根据的猜测。
文章中的微调过程分为三个阶段:
积累向 AI 显示助手应该如何行动的数据。该数据集由文本组成,其中问题后跟精确且有用的答案。幸运的是,大型预训练语言模型的样本效率非常高,这意味着该过程可能不会花费那么长时间。
通过让模型响应查询并为同一问题生成多个答案来对模型进行试用,然后让人类对每个答案进行评分。同时,训练一个奖励模型来识别理想的反应。
使用 OpenAI 的近端策略优化来微调分类器并确保 ChatGPT 的回复根据策略获得高分。
Sparrow 论文描述了一种类似的方法,但有一些额外的步骤。与 DeepMind 的所有对话代理一样,Sparrow 以特定的手工提示为条件,这些提示充当输入,始终由程序员提供给模型,用户看不到。 ChatGPT 也可能会受到这些“隐形”提示的指导。
为了使它成为一个有效的助手, Sparrow被问到问题并生成响应,然后由人类根据 DeepMind 提出的有用性和道德规则的一般原则(例如礼貌和准确性)进行评估。还有一种对抗性训练,人类会积极尝试让 Sparrow 失败。然后,训练了两个神经网络分类器以对其进行评估;一种根据有用性对答复进行评分,另一种确定答案偏离 DeepMind 规则的程度。
ChatGPT 现在知道不要生成令人反感的内容,但它在发布后偶尔会产生不敏感的回复;我们认为 OpenAI 可能已经添加了另一种专门设计用来防止有害文本通过的模型。但当然,我们还不能确定,而且 ChatGPT 本身对此并不知情。
与 ChatGPT 不同,Sparrow 还能够提供证据来支持它所说的内容,因为它会引用来源并访问谷歌搜索。为了让模型能够做到这一点,研究人员更新了它的初始提示,并在其中引入了另外两个角色:搜索查询和搜索结果。
注意:谷歌最近宣布的 ChatGPT 的竞争对手 Bard 可能应用了相同的原则。
在用两个分类器训练后,使用ELI5 数据集和 Sparrow 先前迭代的答案,该模型能够为每个问题生成多个准确且经过充分研究的答案。向用户显示的答案始终是实用性分类器得分最高和规则偏差分类器得分最低的答案。
谷歌基于 LaMDA 语言模型的聊天机器人 Bard于 2 月 6 日发布。它已经引起了轰动,但尚未出现有关其培训的具体细节。 Sparrow 的测试版也有望在 2023 年的某个时候发布。这些机器人中的任何一个是否会像 ChatGPT 一样流行还有待观察。两者都具有独特的功能,使它们有可能成为新的头号聊天机器人,但我们也不认为 OpenAI 会停止更新和改进其超级明星聊天助手。
也许我们很快就会看到具有新的甚至更好的功能的 ChatGPT。无法预测哪家公司最终会在市场主导地位方面名列前茅。但是,无论谁赢得比赛,都将进一步突破人们认为可以通过 AI 技术实现的界限,这肯定会令人兴奋。