Transformers是如何工作的综述

Transformers是一种越来越受欢迎的神经网络架构。Transformers最近被OpenAI用于他们的语言模型中,DeepMind最近将其用于AlphaStar。

Transformers是为了解决序列转导(sequence transduction)或神经机器翻译的问题而开发的。这意味着将输入序列转换为输出序列的任何任务。这包括语音识别,文本到语音转换等。

Transformers是如何工作的综述

Sequence transduction。输入用绿色表示,模型用蓝色表示,输出用紫色表示

对于执行sequence transduction的模型来说,需要某种记忆。例如,我们把下面的句子翻译成另一种语言(法语):

“The Transformers” are a Japanese [[hardcore punk]] band. The band was formed in 1968, during the height of Japanese music history”

在这个例子中,第二句中的“the band”一词指的是第一句中引入的band “The Transformers”。当您在第二句中读到band 时,您知道它正在引用“The Transformers” band。这对翻译很重要。有很多例子,其中一些句子中的单词指的是前一句中的单词。

对于翻译这样的句子,模型需要弄清楚这些依赖关系和连接。循环神经网络(RNN)和卷积神经网络(CNN)由于其各自的特点,一直被用来解决这一问题。让我们回顾一下这两种体系结构及其缺点。

循环神经网络

循环神经网络中包含循环,允许信息持续存在。

Transformers是如何工作的综述

输入表示为x_t

在上图中,我们看到神经网络的一部分,处理一些输入x_t并输出h_t。循环允许信息从一个步骤传递到下一个步骤。

循环可以用另一种方式来思考。一个循环神经网络可以被看作是同一个网络的多个副本,每个网络将一个消息传递给一个后继网络。考虑如果我们展开循环会发生什么:

Transformers是如何工作的综述

展开的循环神经网络

这种链式性质表明,循环神经网络与序列和列表明显相关。这样,如果我们想翻译一些文本,我们可以将每个输入设置为文本中的单词。循环神经网络将前一个单词的信息传递给下一个可以使用和处理该信息的网络。

下图显示了序列模型通常使用循环神经网络的工作原理。每个单词被单独处理,并且通过将隐藏状态传递到解码阶段来生成所得到的句子,然后生成输出。

Transformers是如何工作的综述

长期依赖问题

考虑一个语言模型,它试图根据前面的单词预测下一个单词。如果我们想预测“the clouds in the sky”这句话的下一个单词,我们不需要进一步的语境。很明显,下一个单词是sky。

在这种情况下,相关信息与所需地点之间的差异很小,RNN可以学习使用过去的信息并找出该句子的下一个词是什么。

Transformers是如何工作的综述

但有些情况下我们需要更多的背景。例如,假设您正在尝试预测文本的最后一个词:“I grew up in France… I speak fluent French ”。最近的信息表明,下一个单词可能是一种语言,但如果我们想缩小范围,我们需要法国的语境,那就在文本的后面。

Transformers是如何工作的综述

当相关信息与需要它的点之间的差距变得非常大时,循环神经网络(RNN)就会变得非常无效。这是因为信息在每一步都传递,而且链越长,信息在链上丢失的可能性越大。

从理论上讲,RNN可以学习这种长期依赖关系。在实践中,他们似乎并没有学习它们。LSTM是一种特殊类型的RNN,它试图解决这类问题。

长短期记忆(LSTM)

当安排一天的日程时,我们优先安排我们的约会。如果有什么重要的事情,我们可以取消一些会议,安排一些重要的事情。

循环神经网络(RNN)不会这样做。每当添加新信息时,它都会通过应用一个函数完全转换现有信息。整个信息都被修改了,没有考虑什么是重要的,什么是不重要的。

LSTM通过乘法和加法对信息进行小的修改。利用LSTM,信息流经称为单元状态(cell states)的机制。通过这种方式,LSTM可以选择性地记住重要的或忘记不重要的事情。

在内部,LSTM如下所示:

Transformers是如何工作的综述

每个cell将前面的cell状态和前面cell的输出作为输入x_t(在句子到句子的转换中是一个单词)。它操作这些输入并基于它们生成一个新的cell状态和一个输出。

对于cell状态,在翻译时,对于翻译单词重要的句子中的信息可以从一个单词传递到另一个单词。

LSTM的问题

同样的问题也发生在RNN上,通常是LSTM,也就是说,当句子太长时,LSTM仍然做得不好。这样做的原因是,将上下文与当前正在处理的单词保持距离的可能性随着距离的增加呈指数递减。

这意味着当句子很长时,模型经常会忘记序列中远处位置的内容。RNN和LSTM的另一个问题是难以并行处理句子的工作,因为你必须逐字处理。总而言之,LSTM和RNN存在3个问题:

  • 顺序计算禁止并行化
  • 没有对长期和短期依赖关系进行显式建模
  • 位置之间的“距离”是线性的

Attention

为了解决其中的一些问题,研究人员创造了一种关注特定单词的技术。

神经网络可以使用注意力(attention)重点关注它们所给出的信息的一部分。例如,一个RNN可以处理另一个RNN的输出。在每个时间步上,它都聚焦于另一个RNN的不同位置。

为了解决这些问题,注意力是一种用于神经网络的技术。对于RNN,不是仅将整个句子编码为隐藏状态,而是每个单词具有相应的隐藏状态,该状态一直传递到解码阶段。然后,在RNN的每个步骤使用隐藏状态进行解码。以下gif显示了这种情况。

Transformers是如何工作的综述

绿色步骤称为 编码阶段和紫色的步骤是 解码阶段

其背后的想法是,句子中的每个单词都可能包含相关信息。因此,为了使解码精确,需要使用注意力来考虑输入的每个单词。

为了在序列转导中引起对RNN的注意力,我们将编码和解码分为两个主要步骤。一个步骤用绿色表示,另一个用紫色表示。绿色的步骤称为编码阶段,紫色的步骤称为解码阶段。

Transformers是如何工作的综述

绿色的步骤负责从输入创建隐藏状态。我们不像在使用注意力之前那样,只将一个隐藏状态传递给解码器,而是将句子的每个“单词”生成的所有隐藏状态传递给解码阶段。在解码阶段使用每个隐藏状态,以确定网络应该注意的位置。

例如,在将句子“ Jesuisétudiant”翻译成英语时,要求解码步骤在翻译时查看不同的单词。

Transformers是如何工作的综述

这个gif显示了将句子“Jesuisétudiant”翻译成英语时给予每个隐藏状态的权重。颜色越深,每个单词的权重就越大

或者,当你翻译“L 'accord sur la zone economique europeenne a ete signe en aout 1992”这句话的时候。从法语到英语,以及对每个输入的关注程度。

Transformers是如何工作的综述

将句子“L'accord sur lazoneéconomiqueeuropéenneétélogéenooût1992。”翻译成英文

但是我们讨论过的一些问题仍然没有通过使用注意力的 RNN来解决。例如,并行处理输入(单词)是不可能的。对于大型文本语料库,这会增加翻译文本所花费的时间。

卷积神经网络

卷积神经网络有助于解决这些问题。有了他们,我们可以

  • 并行化很简单(每层)
  • 利用local依赖项
  • 位置之间的距离是对数的

用于序列转导的一些最流行的神经网络Wavenet和Bytenet是卷积神经网络。

Transformers是如何工作的综述

Wavenet,模型是卷积神经网络(CNN)

卷积神经网络可以并行工作的原因是输入上的每个单词可以同时处理,而不一定取决于之前要翻译的单词。不仅如此,输出字和CNN的任何输入之间的“距离”是log(N) - 这是由输出到输入生成的树的高度的大小(您可以在上面的GIF上看到它)。这比一个RNN的输出和一个N阶输入的距离要好得多。

问题在于卷积神经网络在翻译句子时不一定有助于解决依赖问题。这就是为什么Transformers被创造出来的原因,它们是两个有注意力的CNN的组合。

Transformers

为了解决并行化问题,Transformers试图通过使用卷积神经网络和注意力模型来解决问题。注意力提高了模型从一个序列转换到另一个序列的速度。

我们来看看Transformer的工作原理。Transformer 是一种利用注意力提升速度的模型。更具体地说,它使用self-attention

Transformers是如何工作的综述

Transformers

在内部,Transformer 具有与上述模型类似的架构。但Transformer由六个编码器和六个解码器组成。

Transformers是如何工作的综述

每个编码器彼此非常相似。所有编码器都具有相同的架构。解码器共享相同的属性,即它们彼此非常相似。每个编码器由两层组成:Self-attention和前馈神经网络。

Transformers是如何工作的综述

编码器的输入首先流过Self-attention层 ,它帮助编码器在对特定的单词编码时查看输入语句中的其他单词。解码器具有这两个层,但它们之间是一个注意力层,帮助解码器将注意力集中到输入语句的相关部分。

Transformers是如何工作的综述

Self-attention

现在我们已经看到了模型的主要组成部分,让我们开始研究各种向量/张量以及它们如何在这些组件之间流动,以将训练模型的输入转换为输出。

与NLP应用程序中的情况一样,我们首先使用嵌入算法将每个输入单词转换为向量。

Transformers是如何工作的综述

每个单词都嵌入到大小为512的向量中。我们将用这些简单的框表示这些向量。

嵌入只发生在最下面的编码器。所有编码器共有的抽象是,它们接收一个大小为512的向量列表。 在底部编码器中,它将是嵌入单词,但在其他编码器中,它将是直接位于下方的编码器输出。 在我们的输入序列中嵌入单词后,它们中的每一个都流过编码器的两个层中的每一层。

Transformers是如何工作的综述

在这里,我们开始看到Transformer的一个关键属性,即每个位置的单词在编码器中流经自己的路径。self-attention层中的这些路径之间存在依赖关系。然而,前馈层不具有那些依赖性,因此各种路径可以在流过前馈层时并行执行。

接下来,我们将示例切换为更短的句子,我们将查看编码器的每个子层中发生的情况。

Self-Attention

让我们首先看看如何使用向量计算self-attention,然后继续查看它是如何实际实现的 - 使用矩阵。

Transformers是如何工作的综述

找出一个句子中单词之间的关系,并给予正确的注意力

计算self-attention的第一步是从每个编码器的输入向量创建三个向量(在本例中,是每个单词的嵌入)。因此,对于每个单词,我们创建一个Query向量、一个Key向量和一个Value向量。这些向量是通过将嵌入乘以我们在训练过程中训练的三个矩阵得到的。

请注意,这些新向量的尺寸小于嵌入向量。它们的维数为64,而嵌入和编码器输入/输出向量的维数为512。它们不必更小,这是一种架构选择,可以使multiheaded attention的计算(大部分)保持不变。

Transformers是如何工作的综述

将x1乘以WQ权重矩阵产生q1,即与该词相关联的“Query”向量。我们最终在输入句子中创建每个单词的“”,“key”和“Value”投影。

什么是“Query”,“key”和“value”向量呢?

它们是对计算和思考注意力很有用的抽象概念。一旦你开始阅读下面的注意力是如何计算的,你就会知道你需要知道的关于这些向量所扮演的角色。

计算self-attention的第二步是计算分数。假设我们在计算这个例子中第一个单词的self-attention,“Thinking”。我们需要用这个单词给输入句子中的每个单词打分。当我们在某个位置编码一个单词时,分数决定了我们要把多少注意力放在输入句子的其他部分。

通过将查询向量的点积与我们得分的相应单词的key向量计算得分。因此,如果我们处理位置#1中单词的self-attention,则第一个分数将是q1和k1的点积。第二个分数是q1和k2的点积。

Transformers是如何工作的综述

第三步和第四步是将分数除以8(论文中使用的key向量的维数的平方根- 64)。这导致了更稳定的梯度。这里可能有其他可能的值,但这是默认值),然后通过softmax操作传递结果。Softmax将这些分数归一化,使它们都是正的,加起来等于1。

Transformers是如何工作的综述

该softmax分数确定每个单词在该位置表达的程度。很明显,这个位置的单词将具有最高的softmax分数,但有时候关注与当前单词相关的另一个单词是有用的。

第五步是将每个Value向量乘以softmax分数(准备对它们求和)。这里的直觉是保持我们想要关注的单词的值不变,并淹没不相关的单词(例如,通过将它们乘以像0.001这样的小数字)。

第六步是对加权value向量求和。这将在此位置生成self-attention层的输出(对于第一个单词)。

Transformers是如何工作的综述

这就是self-attention计算的结论。得到的向量是一个我们可以发送到前馈神经网络的向量。然而,在实际实现中,为了加快处理速度,这种计算是以矩阵的形式进行的。现在我们来看看这个我们已经看到了计算的直观感觉。

Multihead attention

还有一些其他细节可以让它们更好地工作。例如,Transformers使用Multihead注意力的概念,而不仅仅是在一个维度上相互关注。

它背后的想法是,无论何时翻译单词,您都可以根据您提出的问题类型对每个单词进行不同的关注。下面的图片显示了这意味着什么。例如,每当你在“I kicked the ball”这句话中翻译“kicked ”时,你可能会问“Who kicked”。根据答案,将单词翻译成另一种语言可能会发生变化。或者问其他问题,比如“Did what?”等等......

Transformers是如何工作的综述

Transformers是如何工作的综述

Transformers是如何工作的综述

位置编码

Transformer的另一个重要步骤是在编码每个单词时添加位置编码。编码每个单词的位置是相关的,因为每个单词的位置与翻译有关。

最后

本文概述了Transformers如何工作的,以及为什么这是一种用于序列转导的技术。

相关推荐