【MindSpore易点通】Transformer的编码和解码

简介

在上一篇【MindSpore易点通】Transformer的注意力机制帖子中,跟大家分享了注意力机制的结构和原理。基于上篇内容,本次再和大家一起解锁下Transformer中的Encoder和Decoder以及Softmax部分。

【MindSpore易点通】Transformer的编码和解码_第1张图片

Encoder结构

图中红框内就是Transformer的Encoder block结构,从下到上是由Multi-Head Attention-->Add & Norm-->Feed Forward-->Add & Norm组成的。因为Multi-Head Attention部分比较复杂,所以单独有分享:【MindSpore易点通】Transformer的注意力机制,了解了Multi-Head Attention的结构和计算过程,现在重点解析下Add & Norm和Feed Forward部分。

Add & Norm:Add & Norm层由有两个输入的路径,一个是经过了Multi-Head Attention处理,一个是直接输入。并且Add和Norm两部分组成,其结构和计算公式如下:

【MindSpore易点通】Transformer的编码和解码_第2张图片

Add的计算:X+MultiHeadAttention(X)。这是一种残差结构,对于网络层数较多的常用此结构,可以让网络只关注当前差异的部分,我们所熟悉的ResNet网络中就包含这种结构:

Norm指Layer Normalization,通常用于RNN结构,Layer Normalization会将每一层神经元的输入都转成均值方差都一样的,这样可以加快收敛。

Feed Forward层比较简单,是一个两层的全连接层,第一层的激活函数为Relu,第二层不使用激活函数,对应的公式如下

【MindSpore易点通】Transformer的编码和解码_第3张图片

通过以上几层计算就可以构造出一个Encoder block,Encoder block接收输入矩阵X(n*d),并输出一个矩阵O(n*d)。通过多个 Encoder block 叠加就可以组成 Encoder。第一个 Encoder block 的输入为句子单词的表示向量矩阵,后续 Encoder block 的输入是前一个Encoder block的输出,最后一个Encoder block输出的矩阵就是编码信息矩阵C,这一矩阵后续会用到Decoder中。

Decoder结构

图中蓝框部分为Transformer的Decoder block结构,包含两个Multi-Head Attention层。第一个Multi-Head Attention层采用了Masked操作。第二个Multi-Head Attention层的K, V矩阵使用 Encoder 的编码信息矩阵C进行计算,而Q使用上一个 Decoder block 的输出计算。最后有一个 Softmax 层计算下一个翻译单词的概率。

第一层Multi-Head Attention:Decoder block的第一个Multi-Head Attention采用了Masked操作,因为在翻译的过程中是顺序翻译的,即翻译完第i个单词,才可以翻译第i+1个单词。通过Masked操作可以防止第i个单词知道i+1个单词之后的信息。

Masked计算:是Decoder的输入矩阵和Mask矩阵,输入矩阵包含词的表示向量,Mask是一个n×n的矩阵。下图就是计算过程

首先得到输入X矩阵,通过输入矩阵X计算得到Q,K,V矩阵,计算得出Q矩阵与K转置矩阵的乘积。在得到乘积之后需要进行Softmax,计算注意力分数,因为在翻译的过程中是顺序翻译的,即翻译完第 i 个单词,才可以翻译第 i+1 个单词。通过 Masked 操作可以防止第 i 个单词知道 i+1 个单词之后的信息。所以在Softmax之前需要使用Mask矩阵遮挡住每一个单词之后的信息。然后与矩阵V相乘,得出输出Z,这样第m个单词的输出向量Zm只包含单词m的信息。

根据上述的计算过程得到一个Mask Self-Attention的输出矩阵,然后通过Multi-Head Attention拼接多个输出,得到第一个Multi-Head Attention的输出Z,Z与输入X维度一样。

第二层Multi-Head Attention与第一层的区别在于其中Self-Attention的K, V矩阵不是使用上一个Decoder block的输出计算的,而是使用Encoder的编码信息矩阵计算的。这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息。

Softmax预测

在图中的绿色框中是最终的预测输出,按照矩阵行的顺序进行预测,预测完成,输出最终的翻译结果。

【MindSpore易点通】Transformer的编码和解码_第4张图片

总结

本篇分享中将Transformer分成了Encoder、Decoder和Softmax三个部分进行了分析。Transformer注意力机制和残差结构的设计,在NLP领域中是将任意两个单词的距离是1,对解决NLP中棘手的长期依赖问题是非常有效,从而也有效提高模型性能。

你可能感兴趣的:(transformer,深度学习,机器学习)