1. 前言

按照顺序将要介绍Layer Normalization,谈起这个模块,就会想起CV领域比较重要BN层 ,被称为批归一化,它具有加快训练速度、防止过拟合等优点。可是,在NLP领域应用更为广泛的是Layer Normalization。在最后我们介绍Encoder和Deconder的整体结构。

Transformer之Layer Normalization与Transformer整体结构_Self

2. Layer Normalization

上图是Transformer的经典视图,我们标注出了Layer Normalization中的具体位置。我们从模型输入输出出发介绍是 Layer Normalization如何运算的。假设句子有一个有Transformer之Layer Normalization与Transformer整体结构_机器学习_02个句子,句子最长单词数为Transformer之Layer Normalization与Transformer整体结构_Self_03,嵌入维度为Transformer之Layer Normalization与Transformer整体结构_Self_04,则组成的3位张量为Transformer之Layer Normalization与Transformer整体结构_transformer_05, 如下图所示:

Transformer之Layer Normalization与Transformer整体结构_机器学习_06

计算时我们按照N通道进行,计算形式如下所示:

Transformer之Layer Normalization与Transformer整体结构_Self_07

在实现归一化之后,在将得到的值Transformer之Layer Normalization与Transformer整体结构_深度学习_08与输入值Transformer之Layer Normalization与Transformer整体结构_Self_09的对应项相加得到一个self-attention最终输出,流程如下图所示:

Transformer之Layer Normalization与Transformer整体结构_Self_10

3. Enconder的整体结构

总结来讲,他主要有5个步骤,主要包括上文所讲述的Positional encoding,Self-attention和Layer Normalization,和Feed forward。
1)字向量和位置编码
Transformer之Layer Normalization与Transformer整体结构_transformer_11
2)自注意机制
Transformer之Layer Normalization与Transformer整体结构_机器学习_12
3)self-attention 残差连接与 Layer Normalization
Transformer之Layer Normalization与Transformer整体结构_归一化_13
4). 下面进行 Encoder block 结构图中的第 4 部分,也就是 FeedForward(前向传播),其实就是两层线性映射并用激活函数激活,比如说Relu。
Transformer之Layer Normalization与Transformer整体结构_归一化_14
5). FeedForward 残差连接与 Layer Normalization
Transformer之Layer Normalization与Transformer整体结构_归一化_15

4. Deconder的整体结构

接下来将介绍Deconder的整体结构,从流程图可以看出,Deconder模型采用的单元与Enconder基本相同,主要也是Positional encoding,Self-attention和Layer Normalization等,所以不做介绍。

在字向量和位置编码经过结合后,送入Enconder和Deconder,他们经过的Self-attention是不一样的,前者叫做Muti-head Attention后者叫做Masked Muti-head Attention。关于前者已经在这篇文章做了详细介绍,下面就着重说明解码器为什么要采用Masked Muti-head Attention。

RNN在进行解码时,是按照时间顺序输出的,在知道前一个词之后,才能推理出后一个词,也就是说在进行推理的时候,我们不可能暴露后面的句子信息是什么的。但是Self-attention却不是这样的,它需要计算当前词,与其他任一个词之间的相关性,这显然是不科学的,所用我们需要对 Muti-head Attention做一些特别的处理,即掩码操作(MASK)。

为了简答表达,下文仅仅以Self-attention为例子进行介绍。我们先做出假设,经过字向量和位置编码的输出为Transformer之Layer Normalization与Transformer整体结构_Self_09(其实是Transformer之Layer Normalization与Transformer整体结构_transformer_17,Transformer之Layer Normalization与Transformer整体结构_机器学习_18,Transformer之Layer Normalization与Transformer整体结构_机器学习_19;三个值都为Transformer之Layer Normalization与Transformer整体结构_Self_09),可学习的3个矩阵分别是为Transformer之Layer Normalization与Transformer整体结构_transformer_21Transformer之Layer Normalization与Transformer整体结构_机器学习_22Transformer之Layer Normalization与Transformer整体结构_transformer_23,输出Transformer之Layer Normalization与Transformer整体结构_transformer_24(Layer Normalization之前)。Transformer之Layer Normalization与Transformer整体结构_transformer_25Transformer之Layer Normalization与Transformer整体结构_Self_26Transformer之Layer Normalization与Transformer整体结构_transformer_27的计算如下:

Transformer之Layer Normalization与Transformer整体结构_Self_28


然后求得相关分数矩阵,一共有16项,即Transformer之Layer Normalization与Transformer整体结构_深度学习_29Transformer之Layer Normalization与Transformer整体结构_机器学习_30Transformer之Layer Normalization与Transformer整体结构_机器学习_31Transformer之Layer Normalization与Transformer整体结构_transformer_32…计算如图13所示:

Transformer之Layer Normalization与Transformer整体结构_机器学习_33

Transformer之Layer Normalization与Transformer整体结构_归一化_34


上文是最原始的Self-attention,那如何在此基础上引入MASK呢?我们以 I am fine这句话为例,假设我们得到了上文的相关性矩阵。以单词I为例,它的相关性只与Transformer之Layer Normalization与Transformer整体结构_Self_35Transformer之Layer Normalization与Transformer整体结构_Self_36有关系,与Transformer之Layer Normalization与Transformer整体结构_深度学习_37Transformer之Layer Normalization与Transformer整体结构_机器学习_38无关,所以我们可以构造一个下三角形掩码进行表达,具体如下所示,首先生成一个下三角全 0,上三角全为负无穷的矩阵,然后将其与相关分数矩阵(scaled scores)相加即可

Transformer之Layer Normalization与Transformer整体结构_深度学习_39


之后再做 softmax,就能将 - inf 变为 0,得到的这个矩阵即为每个字之间的权重

Transformer之Layer Normalization与Transformer整体结构_Self_40


这样在进行后续计算即可。

需要强调的是,在经过第一个Masked Muti-head Attention后,后续的Blocked三个输入中的Transformer之Layer Normalization与Transformer整体结构_机器学习_18Transformer之Layer Normalization与Transformer整体结构_机器学习_19来源于Enconder的输出。

Transformer之Layer Normalization与Transformer整体结构_transformer_43

Transformer之Layer Normalization与Transformer整体结构_归一化_44

参考

https://wmathor.com/index.php/archives/1438/