我们继续学习Transformer在我们开始学习之前,让我们回顾一下这幅经典的图片。
残差:
我们从底层向上看,底部x1和x2是我们的词向量。位置信息在位置编码后被添加到新的位置信息中x1和x2.通过自注意力层获得注意力结果z1和z2。
残差:我们可以看到,我们将在位置编码中添加z向量和x向量,这一步称为残差。这意味着z向量与x向量的维度一致。
这张图显示了残差的作用。即使序列再长,求导后梯度接近0,仍然有一个常数项1,不会使模型收敛缓慢,这就是为什么如果使用残差网络模型,通常会变因。
LayerNorm
在讲解LN先复习一下。BN(batch normlization),讨论为什么在序列预测中BN不如LN有用。
假设每一个紫色都被列为样本,每一种行为都有相同的特征,BN是在一个batch标准化中不同样本的相同特征(均值为0,方差为1),并用这个平均值和方差代表整个样本的平均值和方差。
我有一篇专门讲的文章可以看看标准化和归一化的兴趣。
BN的缺点:
- batch size小时,效果比较差,因为BN使用batch平均值和方差代表整体样本平均值的方差batch size小时不普遍。
- BN在NLP效果相对较差。当我们输入序列时,由于序列长度不同,我们需要补充短序列0,这导致了BN有些词平均0很小,影响后续操作。此外,当我们输入一个长序列进行预测时,模型学习的是短序列的平均方差,无法很好地适应新数据BN效果很差。
LayerNorm
和BN最大的区别是LN会在每个样本内部做Norm处理,即序列中的每个单词词进行标准化,其优点是每个序列的长度不同,不会影响新序列的预测。
**这里LayerNorm我们以后讨论的不是很清楚。
Decoder:
Maskd-Mutil Head Attention
由于Decoder和Encoder不同的是,它需要一个序列的输出,所以我现在看不到所有时刻的单词,这个mask意思是把现在时刻以后的所有单词都放在一边mask在实际操作中,多头权重通常会被赋予很大的负值softmax之后会接近0。
Decoder和Encoder的区别
每一个Eecoder同时,同时给每个输出Decoder输入,具体做法是K和V向量传入每一个Decoder中。Q向量是由上次的多头注意机制提供的。
Reference: