Transformer

Simplest Self-Attention

图片说明

求xi的对应yi,首先计算xi与每个xj的点积,得到一个分数(即原序列每个token与xi的重要程度),再经过softmax得到一个比重,最终通过每个xj的重要程度占比,用整个序列来求得yi。

本质就是对整个序列加权平均得到对应的每个token表示。

缺点:输出序列与输入序列的位置顺序无关,无论输入序列的顺序是什么样的,对应的输出序列都是一样的。

Advanced Self-Attention

图片说明

引入可训练的参数W,进行线性变换,使得xi更好地适应多种场景。

缺点:使用softmax求权重,会导致大值更大,使得最终结果的很大部分由值大的来表示。

改进:在softmax之前,使用“Scaling the Dot Product”图片说明 ,使得softmax结果平缓一些。

Multi-head Attention

图片说明

  1. Narrow Self-Attention : 使用h个不同的权重矩阵W将输入序列X的映射到dk/h维的空间中,每个X的映射分别做self-Attention,之后再将h个self-Attention结果拼接起来。(用的最多)
  2. Wide Self-Attention : 使用h个不同的权重矩阵W将输入序列X的映射到dk维的空间中,每个X的映射分别做self-Attention,之后再将h个self-Attention结果拼接起来,再将拼接的结果(dk*h)映射到dk维空间。

Transformer Block

图片说明
图片说明

残差连接:将输入序列X和经过self-Attention的输出加和;

layer norm : 对于输入序列X的每一个xi,对于它的embedding做上图的归一化,即求得embedding的均值和方差来计算;

MLP:由线性映射和非线性激活函数构成,其中每个MLP的线性映射的参数是共享的。

Position Embedding

图片说明

举例:对于第一个位置p1,它的embedding 长度和token embedding等长(假设长度为d),则p1=[PE(1,0),PE(1,1),PE(1,2),...,PE(1,d)],第二个位置p2同理,p2=[PE(2,0),PE(2,1),PE(2,2),...,PE(2,d)]。

另一种position embedding:随机初始化position embedding,每次都对其进行学习更新。

框架图

图片说明

Masked

mask的作用是,避免target里面的单词注意到未来位置上一些单词(在真正的预测过程中是看不到的),所以mask是一个下三角矩阵,且矩阵里面所有的数值均为1。
也因此,target只在decoder中用到。在encoder中不需要考虑这个问题。