人人都是产品经理 05-01
大道至简:这一轮人工智能(AI)突破的原因其实很「简单」
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

大道至简,本文用通俗易懂的语言解释了 Transformer 的核心原理,对于我们这种没有基础的普通人,也是能快速理解的,也能对当前的大模型有更深入的认识。

过去几年中,人工智能(AI)技术的澎湃发展引领了一场前所未有的工业和科技革命。在这场革命的前沿,以 OpenAI 的 GPT 系列为代表的大型语言模型(LLM)成为了研究和应用的热点。

IDC 近日发布发布的《全球人工智能和生成式人工智能支出指南》显示,2022 年全球人工智能(AI)IT 总投资规模为 1324.9 亿美元,并有望在 2027 年增至 5124.2 亿美元,年复合增长率(CAGR)为 31.1%。

而带来这一轮人工智能科技革命的技术突破是来自 2017 年的一篇论文《Attention is All You Need》,在这篇论文中,首次提出了 Transformer 架构,这个架构是目前大语言模型的核心技术基础。GPT 中的 T 就是 Transformer 的缩写。

下面,我先带大家简明了解下这个突破性架构的核心原理(原文:What Are Transformer Models and How Do They Work?),其实大道至简,原理没有很复杂,对于我们这种没有基础的普通人,也是能快速理解的,也能对当前的大模型有更深入的认识。

顺便抛出一个问题,为什么这轮技术变革不是来自 Google、Meta、百度阿里这样的「传统」AI 强势公司,而是初创公司 OpenAI 引领的呢?

Transformer 是机器学习中最令人兴奋的新进展之一。它们首次在论文《Attention is All You Need》中被介绍。Transformer 可以用来写故事、论文、诗歌,回答问题,进行语言翻译,与人聊天,甚至能通过一些对人类来说很难的考试!但它们究竟是什么呢?你会高兴地发现,Transformer 模型的架构并不复杂,它实际上是一些非常有用的组件的组合,每个组件都有其特定的功能。在这篇博客文章中,你将了解所有这些组件。

这篇文章包含了一个简单的概念性介绍。如果你想了解更多关于 Transformer 模型及其工作原理的详细描述,请查看 Jay Alammar 在 Cohere 发布的两篇出色的文章:

The illustrated transformer 《图解 Transformer》

How GPT3 works 《GPT3 是如何工作的》

简单来说,Transformer 都做些什么呢?

想象一下你在手机上写短信。每打一个词,手机可能会推荐给你三个词。例如,如果你输入 "Hello, how are",手机可能会推荐 "you" 或者 "your" 作为下一个词。当然,如果你继续选择手机推荐的词语,你会很快发现这些词语组成的信息毫无意义。如果你看看每组连续的三四个词,它们可能听起来有点道理,但这些词并没有连贯地组成有意义的句子。这是因为手机中的模型不会携带整个信息的上下文,它只是预测在最近的几个词之后,哪个词更可能出现。而 Transformer 则不同,它们能够追踪正在写的内容的上下文,这就是为什么它们写出的文本通常都是有意义的。

手机可以对短信中使用的下一个单词给出建议,但没有生成连贯文本的能力

我必须得说,当我第一次发现 Transformer 是一次生成一个词来构建文本的时候,我简直不敢相信。首先,这不是人类形成句子和思想的方式。我们通常先形成一个基本的思想,然后开始细化它,添加词汇。这也不是机器学习模型处理其他事情的方式。例如,图像的生成就不是这样的。大多数基于神经网络的图形模型会先形成图像的粗略版本,然后慢慢细化或增加细节,直到完美。那么,为什么 Transformer 模型要一词一词地构建文本呢?一个答案是,因为这样做效果非常好。更令人满意的答案是,因为 Transformer 在跟踪上下文方面实在是太厉害了,所以它选择的下一个词正是继续推进一个想法所需要的。

那么,Transformer 是如何被训练的呢?需要大量的数据,实际上是互联网上的所有数据。所以,当你在 Transformer 输入句子 "Hello, how are" 时,它就知道,基于互联网上的所有文本,最好的下一个词是 "you"。如果你给它一个更复杂的命令,比如说,"write a story.",它可能会想出来下一个合适的词是 "Once"。然后它将这个词添加到命令中,发现下一个合适的词是 "upon",依此类推。一词一词地,它将继续写下去,直到写出一个故事。

命令:Write a story.

回应:Once

下一个命令:Write a story. Once

回应:upon

下一个命令:Write a story. Once upon

回应:a

下一个命令:Write a story. Once upon a

回应:time

下一个命令:Write a story. Once upon a time

回应:there

等等。

现在我们知道了 Transformer 都做些什么,让我们来看看它的架构。如果你见过 Transformer 模型的架构,你可能像我第一次看到它时一样惊叹,它看起来相当复杂!然而,当你把它分解成最重要的部分时,就没那么难了。

Transformer 主要有四个部分:

分词(Tokenization)

嵌入(Embedding)

位置编码(Positional encoding)

Transformer 块(好几个这样的块)

Softmax

其中,第 4 个部分,即 Transformer 块,是所有部分中最复杂的。这些块可以被连在一起,每个块包含两个主要部分:注意力机制和前馈组件。

让我们逐个学习这些部分。

一、Tokenization(分词)

分词是最基本的步骤。它涵盖了一个庞大的词汇库,包括所有的单词、标点符号等。分词步骤会处理每一个单词、前缀、后缀以及标点符号,并将它们转换为词库中已知的词汇。

举例来说,如果句子是 "Write a story.",那么对应的 4 个 token 将是,

二、Embedding

一旦输入内容被分词后,就需要将单词转换成机器更容易处理的数字了。为此,我们使用 embedding(嵌入)技术。Embedding 是任何大型语言模型中最重要的部分之一;它是实现文本与数字转换的桥梁。由于人类善于处理文本而计算机善于处理数字,因此这个桥梁越强大,语言模型就越强大。

简而言之,文本嵌入将每个文本转换为一个向量。如果两个文本片段相似,则其对应向量中的数字也相似(这意味着同一位置上的每对数字都相似)。否则,如果两个文本片段不同,则其对应向量中的数字也不同。

尽管嵌入是数值化的,但我喜欢从几何角度来想象它们。试想一下存在一个非常简单的嵌入方式,可以将每个单词映射到长度为 2(即包含 2 个数值) 的向量上。如果我们按照这两个数值所表示坐标定位每个单词(比如在街道和大道上),那么所有单词都站在一个巨大平面上。在这张平面上,相似的单词会靠近彼此,而不同的单词则会远离。例如,在下面这个嵌入中,"cherry" 的坐标是 [ 6,4 ] ,与 "strawberry" [ 5,4 ] 接近但与 "castle" [ 1,2 ] 相距较远。

在更大的 embedding 情况下,每个单词都被赋值到一个更长的向量(比如长度为 4096),那么这些单词不再存在于二维平面上,而是存在于一个大的 4096 维空间中。然而,在这个高维大空间中,我们仍然可以认为单词之间有近有远,因此 embedding 概念仍然具有意义。

词 embedding 可以推广到文本 embedding,包括整个句子、段落甚至更长的文本都会被赋值到一个向量中。然而,在 transformer 的情形中,我们将使用词嵌入,这意味着句子中的每个单词都会被赋值到相应的向量中。更具体地说,输入文本中的每个 token 都将被定位到其对应的 embedding 向量中。

例如,如果我们正在考虑的句子是 "Write a story." 并且标记是,

通常 embedding 将每个单词(token)赋值到一个数字列表中

三、Positional encoding ( 位置编码 )

一旦我们获得了与句子中每个 token 对应的向量,下一步就是将它们全部转换为一个向量进行处理。将一堆向量转换为一个向量最常见的方法是逐分量相加。

也就是说,我们单独添加每个坐标。例如,如果这些(长度为 2)向量分别是 [ 1,2 ] 和 [ 3,4 ] ,则它们对应的总和为 [ 1+3, 2+4 ] ,即 [ 4,6 ] 。这种方法可以工作,但有一个小细节需要注意:加法满足交换律,也就是说如果你以不同顺序添加相同的数字,则会得到相同的结果。

在这种情况下," 我不难过我很开心 " 和 " 我不开心我很难过 " 两句话将得到相同的向量结果(假设它们具有相同单词但顺序不同)。

这并不好。

因此我们必须想出一些方法来给出两个句子不同的向量表示方式。多种方法可行,在本文中我们选择其中之一:位置编码 ( Positional Encoding ) 。位置编码包括将预定义序列中的一系列向量添加到单词嵌入 ( embedding ) 向量上去,并确保我们获得每个句子都有唯一表示形式且具有相似语义结构、仅单词顺序不同的句子将被分配到不同的向量。在下面的示例中,"Write"、"a"、"story" 和 "." 所对应的向量成为带有位置信息标签 "Write(1)","a(2)","story(3)" 和 ". (4)" 的修改后向量。

位置编码会为每个单词添加一个位置向量,以便跟踪单词的位置

现在我们知道每个句子都有一个独特的向量,这个向量携带了句子中所有单词及其顺序的信息,因此我们可以进入下一步。

四、Transformer block

让我们回顾一下目前为止的内容。单词被输入并转换成 token(分词),然后考虑到它们的顺序(位置编码)。这给了我们每个输入模型的 token 一个向量。现在,下一步是预测这个句子中的下一个单词。这是通过一个非常大、非常复杂的神经网络来完成的,该网络专门训练用于预测句子中的下一个单词。

我们可以训练这样一个大型网络,但是通过添加关键步骤:Attention(注意力)组件,我们可以极大地改进它。在开创性论文《Attention is All you Need》中引入的注意力机制是 Transformer 模型的关键成分之一,也是它们如此有效的原因之一。下面将解释注意力机制,但现在先想象它作为一种向文本中每个单词添加上下文的方式。

在前馈网络的每个块中都添加了注意力组件。因此,如果您想象一个大型前馈神经网络,其目标是预测下一个单词,并由几个较小的神经网络块组成,则在每个这些块中都添加了注意力组件。然后,Transformer 的每个组件(称为 transformer 块)由两个主要组件构成:

注意力组件

前馈组件

Transformer 是许多 Transformer 块的串联。

Transformer 是许多 Transformer 块的串联。每个 Transformer 块由一个注意力组件和一个前馈组件(神经网络)组成。

Attention

Attention 步骤涉及一个非常重要的问题:上下文问题。有时,同一个单词可以用不同的意思。这往往会让语言模型感到困惑,因为 embedding 只是将单词赋值到向量中,而不知道他们使用的单词定义。

Attention 是一种非常有用的技术,可以帮助语言模型理解上下文。为了理解 Attention 的工作原理,请考虑以下两个句子:

句子 1:The bank of the river 句子 2:Money in the bank.

正如您所看到的,单词 "bank" 在两个句子中都出现了,但含义不同。在第一个句子中,我们指的是河流旁边的土地,在第二个句子中则指持有货币的机构。计算机对此一无所知,因此我们需要以某种方式将这些知识注入其中。什么能帮助我们呢?好吧,似乎句子中其他单词可以拯救我们。对于第一个句子,"the" 和 "of" 这些单词对我们没有任何作用。但是,"river" 这个单词让我们知道正在谈论河流旁边的土地。同样,在第二个句子中,"money" 这个单词让我们明白 "bank" 的意思现在是指持有货币的机构。

Attention 有助于根据句子(或文本)中的其他单词为每个单词提供上下文

简而言之,注意力机制的作用是将句子(或文本片段)中的单词在词嵌入中靠近。这样,在句子 "Money in the bank" 中,"bank" 一词将被移动到 "money" 的附近。同样,在句子 "The bank of the river" 中,"bank" 一词将被移动到 "river" 的附近。这样,两个句子中修改后的单词 "bank" 都会携带周围单词的某些信息,为其添加上下文。

Transformer 模型中使用的注意力机制实际上更加强大,它被称为多头注意力。在多头注意力中,使用了几个不同的嵌入来修改向量并为其添加上下文。多头注意力已经帮助语言模型在处理和生成文本时达到了更高的效率水平。如果您想更详细地了解注意力机制,请查看这篇博客文章及其相应视频。

五、The Softmax Layer

现在你已经知道一个 transformer 是由许多层 transformer 块组成的,每个块都包含一个 attention 和一个 feedforward 层,你可以将它看作是一个大型神经网络,用于预测句子中的下一个单词。Transformer 为所有单词输出分数,其中得分最高的单词被赋予最有可能成为句子中下一个单词的概率。

Transformer 的最后一步是 softmax 层,它将这些分数转换为概率(总和为 1),其中得分最高对应着最高的概率。然后我们可以从这些概率中进行采样以获取下一个单词。在下面的例子中,transformer 给 "Once" 赋予了 0.5 的最高概率,并给 "Somewhere" 和 "There" 赋予了 0.3 和 0.2 的概率。一旦我们进行采样,"once" 就被选定,并且那就是 transformer 的输出结果。

softmax 层将分数转换为概率,这些概率用于选择文本中的下一个单词

现在怎么办?

我们只需要重复这个步骤。现在我们将文本 "Write a story. Once" 输入模型中,很可能输出结果是 "upon"。再次重复此步骤,Transformer 最终会写出一个故事,例如:"Once upon a time, there was a … "(" 从前有一天,有一个…… ")。

Summary 总结

在这篇文章中,您已经学习了 transformers 的工作原理。它们由几个块组成,每个块都有自己的功能,共同工作以理解文本并生成下一个单词。这些块如下:

Tokenizer:将单词转换为 token。

Embedding:将 token 转换为数字(向量)。

Positional encoding:在文本中添加单词顺序。

Transformer block:猜测下一个单词。它由注意力块和前馈块组成。

Attention:为文本添加上下文信息。

Feedforward:是 Transformer 神经网络中的一个模块,用于猜测下一个单词。

Softmax 函数 : 将得分转换为概率以便采样出下一个单词。

重复执行这些步骤就可以写出您所看到的 transformers 创建的惊人文本。

Post Training(后期训练)

现在你已经知道了 Transformer 是如何工作的,但我们还有一些工作要做。

想象一下:你扮演 Transformer," 阿尔及利亚的首都是什么?" 我们希望它回答 " 阿尔及尔 ",然后继续进行。然而,这个 Transformer 是在整个互联网上训练出来的。互联网很大,并不一定是最好的问题 / 答案库。例如,许多页面会列出长长的问题列表而没有答案。

在这种情况下," 阿尔及利亚的首都是什么?" 之后的下一个句子可能会是另一个问题,比如 " 阿尔及利亚人口数量?",或者 " 布基纳法索首都在哪里?"。Transformer 不像人类那样思考他们的回应,它只是模仿它看到过(或提供过)数据集中所见到内容。

那么我们该怎样使 Transformer 回答问题呢?

答案就在于后期训练。

就像您教导一个人完成某些任务一样,您可以让 Transformer 执行任务。一旦将 Transformer 训练成整个互联网上使用时,则需要再次对其进行大量数据集培训以涉及各种问题和相应答案。Transformer(就像人类一样)对他们最后学到的事情有偏见,因此后期训练已被证明是帮助 Transformer 成功完成所要求任务的非常有用的步骤。

后期训练还可以帮助处理许多其他任务。例如,可以使用大量对话数据集来进行 Transformer 的后期培训,以使其作为聊天机器人表现良好,或者帮助我们编写故事、诗歌甚至代码。了解更多

如上所述,这是一个概念性的介绍,让您了解 transformers 如何生成文本。如果您想要深入了解 transformer 背后的数学原理,请观看以下视频 ( YouTube ) 。写在最后

正如你所看到的,Transformer 的架构并不复杂。它们是由几个块连接而成,每个块都有自己的功能。它们之所以能够工作得如此出色,主要原因在于它们具有大量参数,可以捕捉上下文中许多方面的信息。我们很期待看到您使用 Transformer 模型构建什么!

最后,你知道为什么这轮技术变革不是来自人工智能强大的 Google 或者 Facebook,而是来自像 OpenAI 这样的初创公司呢?

本文由人人都是产品经理作者【南村小付】,微信公众号:【南村小付】,原创 / 授权 发布于人人都是产品经理,未经许可,禁止转载。

题图来自 Unsplash,基于 CC0 协议。

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

智慧云

智慧云

ZAKER旗下新媒体协同创作平台

相关标签

人工智能 ai 普通人 考试 机器学习
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论