NLP的Transformer是一个新的架构,旨在解决序列到序列的任务,同时轻松处理长距离的依赖关系。计算输入和输出的表示,而不使用序列对齐的RNN或卷积,它完全依赖于自我注意。让我们详细看看什么是变换器。
基本架构


一般来说,转化器模型是基于编码器-解码器架构的。编码器是左边的灰色矩形,而解码器则在右边。编码器和解码器分别由两个和三个子层组成。多头自我意识,全连接前馈网络,在解码器的情况下,编码器解码器自我意识(称为多头关注),有以下可视化)。
编码器: 编码器负责踏过输入的时间步数,并将整个序列编码为一个固定长度的向量,称为上下文向量。
解码器:解码器负责通过输出时间步数,同时从上下文向量中读取。
让我们看看这个设置的编码器和解码器栈是如何工作的。


1.输入序列的词嵌入被传递给第一个编码器
2.然后这些词被转换并传播给下一个编码器
3.编码器栈中最后一个编码器的输出被传递给解码器栈中的所有解码器,如下图所示。
这个 "自我关注 "层在变形器中到底是做什么的?
变压器中的自我关注
自我关注是对关注技术的一种新的诠释。在考虑一个词的嵌入时,自我注意不是看先前的隐藏向量,而是对所有其他词的嵌入(包括那些在句子后面出现的)进行加权组合。
自我注意是如何实现的
步骤
1.通过将单词嵌入与具有学习权重的三个矩阵相乘,单词嵌入被转化为三个独立的矩阵--查询、键和值。这些向量在训练过程中被训练和更新。
2.考虑这个句子--"行动导致结果"。为了计算第一个词 "行动 "的自我意识,计算这句话中与 "行动 "有关的所有词的分数。这个分数决定了在对输入序列中的一个特定单词进行编码时,其他单词的重要性。
- 第一个词的得分是通过取查询向量(q1)与所有词的键向量(k1,k2,k3)的点积来计算的。
- 然后,这些分数被除以8,也就是钥匙向量的平方根。
- 接下来,使用softmax激活函数将这些分数归一化。
- 然后,这些归一化的分数乘以值向量(v1、v2、v3),并将结果向量相加,得出最终向量(z1)。这就是自我注意层的输出。然后,它被传递给前馈网络作为输入。
- 对所有的词都要进行同样的处理


在Transformer架构中,自我意识的计算是相互独立的,不只是一次,而是多次并行的。因此,它被称为多头关注。如下图所示,这些输出被串联起来并进行线性转换。


变换器结构中的注意力和它的工作。
变换器结构使用注意力模型,在三个步骤中使用多头注意力(参考图1)。
1.第一个是编码器和解码器注意力层。对于这种类型的层,查询来自解码器之前的层,键和值来自编码器的输出。这使得解码器的每个位置都能注意到输入序列中的每个位置。
2.第二种类型是包含在编码器中的自我注意层。该层从编码器之前的层的输出接收键、值和查询输入。编码器上的任何位置都可以从编码器前面那层的任何位置接收注意值。
3.第三种类型是解码器自我注意。这与编码器的自我注意类似,所有的查询、键和值都是从前一层检索的。自觉的解码器可以在任何位置使用,为该位置之前的任何位置服务。未来的值用(-Inf)进行屏蔽。这就是所谓的屏蔽式自觉。
4.解码器的输出最后通过一个全连接层,然后是一个softmax层,以产生对输出序列的下一个字的预测。
与RNNs的比较
变换器架构通过在一个完全独立的架构中处理学习的这些方面,消除了RNN架构的时间依赖性问题。因此,转化器有和最长句子中的单词一样多的线性层,但这些层是相对质数和时间无关的,就像RNN的情况。因此,它是令人难以置信的并行和容易计算的。
变压器并不是在所有的应用中都比传统的RNN好,RNN在某些情况下仍然胜出,但在那些与传统RNN相匹配或击败的应用中,它们以较低的计算成本做到了这一点。
变换器的优点
1.它们有可能理解彼此相距甚远的顺序元素之间的关系。
2.2. 它们的准确度更高。
3.3.他们对序列中的所有元素给予同等关注。
4.4. 变压器可以在更短的时间内处理和训练更多的数据。
5.5.它们可以处理几乎任何种类的序列数据。
6.6. 变形器在异常检测中是有帮助的。
总结
变换器模型是一种新的编码器-解码器模型,使用自我意识来理解语音序列。这允许并行处理,比其他具有相同性能的模型快得多。这样一来,他们为现代语言模型(如BERT和GPT)以及最近的生成模型铺平了道路。