讲清 Transformer 模型架构论文(四)

大家好,我是皇子

今天要分享的是整个论文中最核心的部分“模型架构(Model Architecture)

Transformer 模型架构论文《Attention Is All You Need》发表在 NeurIPS 会议上,同时受到论文模板的影响,论文篇幅极致压缩为 8 页的精华,所以我接下来打算分为几部分来讲清,论文地址放在底部链接。

NeurIPS,全称是Conference on Neural Information Processing Systems,中文名为神经信息处理系统大会。这是全球范围内最大、最重要的人工智能和机器学习领域的学术会议之一。会议每年举办一次,吸引了全球范围内的研究者提交他们在人工智能、机器学习、深度学习、神经网络等领域的最新研究成果。会议的形式包括主题演讲、研讨会、论文发表等。是人工智能和机器学习领域的重要风向标,很多重要的研究成果和新的研究方向都会在这个会议上首次公开。

快速了解

Transformer 模型架构(简称:Transformer 模型)在人工智能领域,特别是在自然语言处理(NLP)领域,起到了革命性的作用。

1、自注意力机制:Transformer模型引入了多头自注意力(Multi-Self Attention)机制,这使得模型能够处理长距离的依赖关系和多通道输出的问题,即模型可以更好地理解句子中的各个部分如何相互关联。这对于理解和生成自然语言非常重要。

2、并行计算:与传统的循环神经网络(RNN)相比,Transformer模型的另一个优点是它可以进行并行计算。因为在Transformer模型中,所有的词都是同时处理的,而不是像在RNN中那样一个接一个地处理。这使得Transformer模型在处理大量数据时更加高效。

3、预训练模型:基于Transformer的预训练模型,如BERT、GPT-2、GPT-3等,已经在各种NLP任务中取得了最先进的结果。这些模型首先在大量的文本数据上进行预训练,学习语言的一般特性,然后在特定任务上进行微调。这种方法已经成为NLP领域的标准做法。

模型架构

一图顶千言

这部分涉及到很多计算公式和其他关联的概念性知识,直接看论文肯定会一头雾水,我也是参考网上资料后再简化表述出来方便大家理解的

模型部分的简介先是向我们介绍现在比较好的是一个叫做编码器和解码器的结构,并做解释说明。在编码器将符号表示的输入序列 (X1,…,Xn) 映射到连续表示的序列z=(Z1,…,Zn)(X 的长度和 Z 是一样的),Z的第 t个字符表示为向量 Zt, 而 Zn这就是编码器的输出,即将原始的序列表示为机器学习可以理解的一系列的向量。而解码器会得到编码器给定的输出Zn,然后解码器会生成符号的长度为 m的输出序列 (Y1,…,Ym)(n和m是不一定一样长的,比如说中文翻译成英文他们的长度是不一样长的),每次一个元素。在每一步,模型都是自回归的,在生成下一步时,将先前生成的符号作为额外输入。

一)编码器和解码器堆栈-编码器和解码器的结构

编码器和解码器都是由多个相同的层堆叠而成的。编码器包含六个这样的层,每个层都有两个子层:一个是多头自注意力机制,另一个是位置全连接前馈网络。这些子层都有残差连接(Add)层归一化(Norm)解码器也有六个层,但它有三个子层,多了一个多头注意力层来处理编码器的输出。这个额外的子层使得解码器在生成每个词时,都可以关注到编码器的所有输出。

一图顶千言


标准的 Transformer 模型架构

编码器-解码器-6 层


编码器-2 个子层;解码器-3 个子层


编码器-完整的2 个子层;解码器-完整3 个子层


二)注意力机制-对输入的不同部分赋予不同的关注度

注意力机制的核心思想是对输入的不同部分赋予不同的关注度。这样模型就可以根据需要关注输入的不同部分,而不是平等地对待所有的输入。

1、缩放点积注意力-一种注意力计算方法

这是一种注意力计算方法,它计算一个查询和一组键值对之间的相似度,然后用这个相似度来加权对应的值。这种方法的优点是计算简单,但是当维度很高时,点积的结果可能会非常大,所以需要进行缩放,即除以维度的平方根。

2、多头注意力-多次不同的注意力计算

多头注意力机制是对同一组输入进行多次不同的注意力计算,然后将结果拼接起来。这样可以让模型同时关注输入的不同部分,而且每个头可以学习到不同的注意力模式。

3、注意力在我们模型中的应用-应用在编码器和解码器的 3 个地方

在这个模型中,注意力机制被用在三个地方:一是编码器的自注意力层,让模型关注输入的不同部分;二是解码器的自注意力层,让模型关注之前的输出,以便生成下一个词;三是解码器的编码器-解码器注意力层,让模型关注编码器的输出,以便理解输入的内容。

三)位置全连接前馈网络-提高模型的表达能力

这是每个编码器和解码器层的第二个子层。它是一个全连接的前馈网络,对输入的每个位置都进行相同的处理。这个网络包含两个线性变换和一个ReLU激活函数。虽然它对每个位置都进行相同的线性变换处理,但参数在层与层之间使用是不同的。

通过这种方式,位置全连接前馈网络可以帮助模型学习到输入序列中的复杂模式,从而提高模型的表示能力。

四)嵌入和Softmax-得到输出词的概率

模型使用了词嵌入来将输入的词转换为向量。这些向量可以捕捉词的语义信息。在模型的最后,使用了softmax函数来得到最后的输出概率。这个概率表示了每个可能的输出词是下一个词的概率。

五)位置编码-学习词的位置

由于模型没有任何关于词序列位置的信息,所以需要添加位置编码来给出位置信息。位置编码被加到词嵌入上,这样模型就可以同时考虑词的意义和位置。这个位置编码是通过正弦和余弦函数在不同频率上的变化来生成的,这样可以让模型学习到词的相对位置和绝对位置信息。

--- 往期推荐 ---

讲清 Transformer 模型架构论文(一)

讲清 Transformer 模型架构论文(二)

讲清 Transformer 模型架构论文(三)


论文地址:

https://proceedings.neurips.cc/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf




关注我,一起成长

有启发,点个赞或在看再走呀


如果愿意跟我交朋友,欢迎添加微信

请使用浏览器的分享功能分享到微信等