Transformer模型解析记录

1.模型整体结构

图1 Transformer结构图

整个Transformer模型由Encoder和Decoder两部分组成。Encoder负责对输入数据的编码,而Decoder负责对编码后的数据进行解码。

Encoder由N个结构相同,参数不共享的模块组成,每个模块又由多头自注意力层和全连接层组成,其中多头自注意力层和全连接层都加上了残差连接和layer normalization。

Decoder与Encoder结构类似,相比于Encoder,Decoder部分多了一个Multi-Head Attention,第一个Multi-Head Attention采用Masked操作,第二个Multi-Head Attention的 K 和 V 使用Encoder的输出,而Q使用上一个Decoder block的输出。
Decoder的输出通过一个线性层和softmax输出下一个翻译单词的概率。

2.Encoder

Encoder由N个结构相同,参数不共享的的Layer组成(论文中N=6),也即图1左侧的单元,最左边有个“Nx”。
每个Layer由Multi-Head AttentionFeed-Forward两个sub_layer组成。其中每个sub_layer都加了残差连接(Residual Connect)和归一化(Normalization)操作。则每个sub_layer的输出可表示为:

2.1.Multi-Head Attention

Muti-Head Attention从结构上来看就是通过h个不同的线性变换将输入投影到h个不同的组合,最后将h个不同的Attention结果拼接起来,最后经过一个Liner层得到Muti-Head Attention的输出。

其中, 、

Muti-Head Attention输出的维度是

关于Attention的详细介绍,可以参考之前文档:

2.2.Feed Forward

Feed Forward也称Position-wise feed-forward networks,该层主要提供非线性变换。之所以是position-wise是因为过线性层时每个位置i的变换参数是一样的。

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

:Attention输出之后的结果会和相乘来进行维度变换,那这里为什么又要增加一个2层的FFN网络呢?
:FFN网络的加入给模型增加了非线性(Relu激活函数),增加了模型的表现能力。当然去掉FFN层也是可以的,只不过效果上会差些。

3.Decoder

Decoder是图1的右半部分,与左半部分的Encoder类似,但又存在一些区别。

Decoder比Encoder多了一个Multi-Head Attention,第一个Multi-Head Attention采用Masked操作,因为在生成任务中,前面的词语是看不到后面词语的信息的,因此需要加入Masked来避免信息泄露。第二个Multi-Head Attention输入的是根据Encoder的输出编码矩阵映射而来,而是根据上一个Decoder的输出映射而来。

最后有一个 Softmax 层计算下一个翻译单词的概率。

模型在解码的过程中需要注意的是训练和预测不一样。
在训练时,解码是一次全部decode出来,用上一步的ground truth来预测(mask矩阵也会改动,让解码时看不到未来的token);
而预测时,因为没有ground truth了,需要一个个预测。

4.Position Embedding

上面简单介绍了EncoderDecoder模块,下面简单介绍一下Transformer的Position Embedding。

引入Position Embedding主要是为了弥补Transformer模型对位置信息的不足,将Position Embedding与token Embedding相加后,即可保留各个token的位置信息。

论文作者提出了两种添加位置信息的的方法:
一种方法是直接用不同频率的正余弦函数直接计算各个token的位置id,公式如下:

另一种方法是直接学习出一个Position Embedding。

通过实验发现,两种方法结果差不多,最后作者选择了第一种方法。

5.总结

Transformer 与 RNN 不同,可以比较好地并行训练。

Transformer 本身是不能利用单词的顺序信息的,因此需要在输入中添加位置 Embedding,否则 Transformer 就是一个词袋模型了。

Transformer 的重点是 Self-Attention 结构,其中用到的 Q, K, V矩阵通过输出进行线性变换得到。

Transformer 中 Multi-Head Attention 中有多个 Self-Attention,可以捕获单词之间多种维度上的相关系数 attention score。

参考资料

Transformer 模型详解 (推荐)
【NLP】Transformer模型原理详解
【经典精读】Transformer模型深度解读

你可能感兴趣的:(Transformer模型解析记录)