最初出现在著名论文《Attention is all your need》中,基于Transformer的架构已成为大多数成功的人工智能模型中必不可少的。
然而,许多用户甚至基于人工智能的产品的创造者可能不了解Transformer是什么或它是如何工作的。
嗯,阅读研究论文并理解所有内容非常困难。
本文旨在向所有人解释 Transformer 的基本概念,无论您是高中生还是经验丰富的技术专家。我们将重点介绍构成 Transformer 的基本直觉和逻辑块。
我们将从简单的解释开始,逐渐深入探讨人工智能的更复杂方面。无需任何先验知识。
注意:除非另有说明,文章中使用的所有图像均使用 DALLE 3 或 Imgflip meme 生成器创建。
我们想要构建什么
能够像人类一样思考和反应的计算机。
人类用语言思考和交流,语言包含了关于世界的所有知识。教学和学习也通过语言进行。如果计算机能够处理和理解语言,我们就可以创造出像人类一样行为的人工智能。在互联网上,语言主要以文本形式出现。
理解所有这些文本可以自然而然地让计算机具备理解问题、指令和提示的能力。
研究人员已经开发了各种算法和神经网络来实现这一点,比如 CNN、RNN 和 LSTM(不要担心它们是什么)。数据中的模式反映了语言和人类思维的底层逻辑,太复杂了,无法手动弄清楚。神经网络就是为检测这些而设计的。
一项引人注目的观察表明,语言理解始于简单而复杂的能力预测给定句子中的下一个单词。
这项任务的一个有效架构是transformer。它最初是为语言翻译而开发的,但已被证明对许多任务都很有用。
目标是创建一个人工智能模型来接收输入并产生相关且合理的输出。这些模型在大规模运行时表现出与人类思维和表达类似的能力。
几乎所有的人工智能模型都是建立在以下几个基本原则之上的:
- 计算机理解数字;因此,可以使用各种方法将数据(如文本)转换为数字。
- 这些数字中隐藏着统计或逻辑模式,可以通过数学方法计算出来。它们不是胡言乱语,而是基于语言和人类互动的一些基本规则。
- 手动寻找这些模式几乎是不可能的。因此,我们尝试创建一个神经网络架构来找出这些问题。
- 完成后,您就可以使用“ AI 模型”根据从训练数据中学习到的所有知识来生成新的响应。
如何创建 AI 模型
我们现在暂时转移一下话题,忘掉 Transformer。
以下是如何通过简单(但复杂)的步骤创建 AI 模型:
- 选择您希望 AI 执行的操作 — — 例如生成文本。
- 收集正确类型的数据进行训练。在本例中,数据就是互联网上的所有文本。
- 将所有数据转换成计算机可以理解的数字。弄清楚如何将这些数字输入神经网络。
- 神经网络本质上是一个精密的计算器,它根据您提供的数据,利用数学运算来得出结果。
- 使用各种方法训练这个网络(基本上就是调整所用数学中的变量),以便它学会为收到的数据提供正确的结果。结果以数字形式呈现,然后我们将其改回原始格式,例如单词。
- 最后,训练好的人工智能将用新数据进行测试,看它是否给出正确的输出。
让我们探索一下在 Transformer 环境中每个步骤是如何发生的。
在您继续阅读时,请记住,这里的每一步都可以通过创新来进一步突破界限。
我将介绍一系列技术主题来构建基础,然后连接各个点以获得完整的画面。
序列建模
句子本质上是单词序列。构建一个可以预测该序列中下一个单词的系统属于“序列建模”。
我们的目标是为人类语言创建一个伟大的序列模型。
传导(在人工智能背景下)
想象一下,明天的测验有一堆问题(有些有答案,有些没有答案)。传导就像学习足以回答这些特定问题的内容,而不是学习测验中可能出现的所有材料。
基本上,如果你在准备周期测试时只是简单地研究前几年的试卷中的问题而不是阅读教科书,那么你就是在进行传导:P
当你有很多问题但只有少数答案时,这种方法尤其有用。通过查看所有问题(甚至是没有答案的问题),我们尝试根据它们之间的模式或相似性来猜测答案。
传导学习通常用于在有限数量的标记数据和大量未标记数据上训练模型的场景。其目标是将输入与输出进行映射,而不是试图在它们之间找到某种一般规则。
循环模型
想象一下,你正在讲一个故事,你说的每一个词都取决于你之前说过的词。循环模型的工作原理如下:它们会跟踪到目前为止的故事,所以当要说下一个词时,它们会记住你所说的一切,并选择最合适的词。
在语言中,这意味着它们可以通过根据前面的单词猜测下一个单词来帮助写作。如果你教它很多故事或对话,它就会学习句子通常如何构成的模式以及哪些单词经常组合在一起。
这对于短序列来说没问题,但对于长序列来说就成了问题。序列越长,它们需要的内存就越多,训练时间也越长。
由于这些问题,研究人员希望创建比循环模型更好的东西。
注意力(在人工智能背景下)
顾名思义,这就是关注重要的事情。
假设你已经看过了漫威电影宇宙的所有电影,直到《复仇者联盟:终局之战》。你的任务是写一个简短的总结,用十个关键点概括最重要的内容。作为人类,你可以理解什么是重要的,什么是不重要的。你可能会提到灭霸打响指的情节,而忽略其他一些情节,比如钢铁侠和绿巨人在《奥创纪元》中的战斗。
你怎么知道的?你怎么能让计算机知道的?我们需要找到一种方法来让输入的某些部分更加重要。这正是注意力的作用。
从技术角度来说,注意力机制会计算权重,确定对输入数据的每个部分给予多少关注。此过程使模型能够优先处理与任务最相关的输入部分的信息,从而提高其在翻译、文本摘要和问答等任务上的表现。
像 RNN 这样的模型会按顺序处理数据,但有时很难记住或重视句子开头部分的信息。注意力机制解决了这个问题,它让模型能够“回顾”输入句子的所有部分(无论当前位置如何),并“关注”对下一步预测或生成最重要的部分。
注意力机制与 RNN 的结合充分利用了两者的优势:RNN 能够以固有结构处理序列,而注意力机制能够突出显示整个序列中的相关信息。
提醒:我们在这里讨论的所有内容本质上都是应用于我们系统以计算输出的“数学”。当我说“注意力”时,我指的是在计算输出之前引入一个数学步骤。
然而,由于内存问题,人们对循环模型并不满意。所以,他们开始思考这个问题。我们真的需要笨拙的循环网络吗?如果我们将它从方程式中完全移除会怎么样?
当时,没人知道它是否真的有效。实验完成并训练模型后,研究人员得出结论,也许“注意力就是你所需要的一切! ”:P。
自注意力机制
注意力机制可以通过多种方式实现。其最终目标是从数学角度赋予重要内容更多权重。自我注意力是一种技术,通过这种技术,我们可以查看句子的所有部分,并了解每个部分相对于其他部分的重要性。
想象一下,你身处一个房间里,里面挤满了谈论不同话题的人。你正试图跟上关于你最喜欢的电影的对话。为此,你需要更多地关注谈论这部电影的人,即使其他对话也在同时发生。你还可以思考你对这部电影的了解,以了解他们在说什么。这样,你就可以很好地理解在你最喜欢的电影的背景下,哪场对话对你来说是最重要的。这类似于 AI 模型中的自注意力。
当你读懂字里行间的内容时,你会发现所有这些都是人类对于我们如何行为的普遍直觉,只不过转换成了一种更合乎逻辑和技术性的格式。
编码器和解码器
大多数现代人工智能模型都包含称为编码器和解码器的组件。
顾名思义,编码器对数据进行编码 – 将输入(比如句子)转换为特定格式(通常是数字,有一个花哨的名称,称为“嵌入” – 稍后会详细介绍)。
编码器试图将输入的句子转换成复杂的数字形式,其中包含大量的上下文、理解以及给定句子中单词之间的关系。
然后解码器使用它来生成可能是该句子中的下一个单词的输出。
它以“自回归”的方式工作,这意味着创建的输出与下一步的输入相结合,并且网络可以继续这样不断生成新的输出。
Transformer
最后,我们来了解一下Transformer吧!
图片取自首次引入 transformer 的官方研究论文。
不用担心这个复杂的框图。我把它放在那里只是为了给出一个基本的视觉概念,让你了解Transformer架构是什么样子。你看到的每个块基本上就像一个数学函数。
这是在此阶段需要建立的重要直觉。人工智能模型中的许多步骤都涉及操纵数据并将其从一种形式转换为另一种形式,以最有效地呈现数据并获得最佳结果。它转换数据(因此被称为转换器)。我们下面探讨的很多内容都属于这种类型的功能。
Transformer 中的编码器
编码器内部有多层结构。当我说“层”时,请将其视为对输入数据执行的数学步骤。Transformer 中的编码器有六个相同的层,这意味着输入数据要经过六个步骤,所有步骤都对数据执行类似的操作。
每层由两个子层组成:
- 多头自注意力:将注意力过程拆分为“多个头”,每个头执行自己的注意力计算。这些头并行运行,每次计算可能不同。这有助于我们理解输入序列的不同方面。每个头产生输出,这些输出组合在一起以获得该层的最终输出。
- 全连接前馈网络:它接收来自自注意力过程的标准化输出,并执行更多数学运算以获得更加转换的输出。这有助于模型更好地理解输入。
总而言之,编码器的输入经过以下旅程:
- 它进入第一层,并通过多头自注意力过程进行转换。这告诉模型在输入中需要考虑的最重要的事情。
- 然后他们经过“添加和规范化”步骤。
- 然后,它们进入前馈网络,对它们进行更多操作以获得更加变换的输出,然后再次经过“添加和规范化”步骤。
- 最后,我们得到了第一层的输出,它保留了与输入相同的形状,但是由于我们对它们应用了所有数学运算,所有数据点都发生了重大转变。
- 然后,输出进入第二层,并执行完全相同的步骤。如前所述,编码器有六个相同的层。因此,第二层的输出进入第三层,并再次进行转换。依此类推,直到到达第六层的末尾。
为什么我们要做六次同样的事?有什么不同?
它有助于模型更好地理解输入的模式和上下文。虽然所有六层的数学方程式都相同,但这些方程式中有一些变量。研究人员称它们为“参数”,每层的参数都不同。目标是找到每层的最佳参数值,以便模型在所有这些处理之后获得对输入的最佳表示。当有人说“训练人工智能”时,这就是他们试图做的事情。
这个过程有助于模型深刻理解词语之间的关系以及它们的实际意义。
经过 6 层编码器转换后,最终输出是给定输入的“矢量表示”。如果你目测该表示,它基本上看起来像一个巨大的数字矩阵。这些数字保存了输入单词和句子的含义以及单词组在上下文中的关联方式。
这个表示现在成为下一个构建块(解码器)的输入。
Transformer 中的解码器
它与编码器类似,同样有 6 个相同的层。但是,每层都有一个额外的子层,用于对编码器的输出执行自注意力过程。
来自编码器的向量表示,即充满上下文线索的密集矩阵,到达解码器的第一层。以下是逐步发生的事情:
- 带有转折的自注意力:最初,解码器层在一些启动输出上应用多头自注意力机制的修改版本,称为掩蔽注意力 – 稍后会详细介绍。
- 在自我注意之后,解码器也会像编码器一样执行“添加和规范化”步骤。此步骤通过规范化数据来帮助稳定学习,确保转换不会将值推得太远。
- 交叉注意层是每个解码器层中的额外子层。在这里,解码器会注意编码器的输出。它使用编码器的上下文来帮助生成序列中合适的下一个元素。
- 交叉注意力之后,数据会经过另一个前馈网络,在此进行进一步的转换。这些转换旨在完善解码器对输入及其运行环境的理解。
- 与前面的步骤一样,这个过程经过另一次“添加和规范化”,以确保转换的一致性和稳定性。
这样就完成了通过一个解码器层的旅程。输出现在稍微更接近最终结果,移动到下一层,直到 6 层的末尾。
这些层之间的重复并非多余,而是深化了模型的认知。每一层都有其独特的参数集,增加了另一层复杂性,不仅理解原始信息,还理解语言模式、上下文和含义的细微差别。
训练模型本质上是在所有层上微调这些参数的过程,以实现从输入到输出的最佳转换,代表通过编码和解码阶段捕获的细微差别。
在遍历解码器的所有六层之后,这个艰苦的过程的最终结果是一个反映预期任务的序列,无论是翻译的句子,文本的延续,还是另一种形式的序列输出,它都会被进一步处理成正确的格式,然后才能显示为您看到的最终输出。
我们再看一下架构图。也许你现在会比以前更理解它。
图片取自首次引入 transformer 的官方研究论文。
请注意,左边部分是编码器,右边部分是解码器。编码器的输出在第二个子层与解码器的输入相连。在此之前,解码器具有称为输出嵌入的东西,它们在掩蔽注意层中处理。解码器计算输出后,会发生两个额外的步骤——线性和 softmax。让我们尝试修复这些差距。
- 每个输入词都被转换成数字数组,我们称之为输入嵌入,捕捉其上下文含义。
- 位置编码被添加到这些嵌入中以合并序列顺序信息。
- 该模型通过其编码器-解码器层处理这些内容,以理解句子、学习关系并执行翻译或回答问题等任务。
- 在解码器中(用于生成任务),输出嵌入表示迄今为止翻译或生成的序列(这可能是生成最终答案的简单起始句),位置编码确保模型以正确的顺序生成序列。
啊……有点太技术化了。让我简单说一下。
- 你有一句话。你把它分解成单词。
- 您将这些单词转换为数字。
- 当你这样做时,你会跟踪这些单词在原始句子中的位置,以确保它们具有正确的顺序。
- 您将到目前为止拥有的所有内容传递给六层数学运算,这些运算会将您的数字转换为更复杂的数字,并具有特殊的理解。这就是您的编码器。
- 当编码器忙于处理输入句子时,解码器则准备生成输出。它从句子的开头开始,比如说“The”。然后,解码器将其传递到另一组六层,这些层会尝试进一步生成单词,一次一个,同时利用编码器创建的特殊数字中包含的所有理解。
- 最后,经过对许多数字进行多次数学运算之后,您将创建最终的特殊数字,将其转换回文本格式,形式为输入句子中最有可能出现的一个新单词。
- 你就是变形金刚!
我们说人工智能是一个黑匣子,因为我们不明白这些数字为何以及如何“特殊”,但计算机似乎对此了如指掌。这个过程竟然能奏效,这真是太了不起了,只要反复预测下一个单词,我们就能观察到让人感觉很智能的突发行为。
哲学结论?
读完这篇文章后,你可能会想知道这个过程有多复杂,以及有人是如何想出这个方法的。研究人员是不是有一天醒来决定,“让我们建立一个很棒的人工智能”,不知何故他们明白他们应该构建这 6 层编码器和解码器,并进行随机数学运算来创建这些数字,以便一切都能神奇地发挥作用?
这可能会让人感到不知所措。你怎么才能搞清楚这个过程?你怎么知道从哪里开始?
事情是这样的。研究是一个自然的渐进过程,它建立在几十年前所有事物的基础之上。如果你想探索,你的起点不应该是 Transformers。你必须回溯 Transformer 论文之前的数百篇论文,当你慢慢把这些点连接起来时,事情就会变得更加清晰,人们是如何真正走到这一步的。
然后,你也可以推动事情向前发展。每一步都是一个可以改变的数学或逻辑方程,从而带来新的发现。你可以在过程中添加、删除或替换一两个步骤,这可能会带来很大的不同。
这是研究方面的问题。其他方面呢?作为产品制造商或企业领导者,您如何运用这些理解和知识?
这可以帮助你在众多噪音中找出值得下注的东西。当 Transformers 推出时,OpenAI 工程师立即投入到实验中。他们全力以赴扩展这些模型,因为他们直觉地认为这在当时的许多其他架构中确实有效。自然而然地,他们建立了长期领先优势,并率先将基于该技术的消费产品推向市场。
当你理解了某些事物的工作原理时,你可能会建立起强烈的直觉,帮助你很早就能快速地识别出在新的发展中什么是值得学习的。
有时,对现有架构进行微小的更改可以带来巨大的变化。也许您的经验和意识可以帮助您发现可以进行的此类更改。
RA/SD 衍生者AI训练营。发布者:chris,转载请注明出处:https://www.shxcj.com/archives/3976