"); //-->
10.1 介绍Transformer,为什么要介绍self Attention呢?因为在Transformer中最多的multi head attention和Mask multi head attention来自Scaled dot product attention,而scaled dot product attention来自self attention,如图15所示。
10.2 什么是self attention呢?self attention和local attention、stride attention都是attention的一种;self attention是每一个Q与每一个K依次计算注意力系数,如图18所示,而像local attention是Q只与相邻的K计算注意力系数,stride attention是Q通过跳连的方式与K计算注意力系数。
图18 从左至右依次为:self attention、local attention、stride attention
10.3 Self attention为什么可以用于处理像机器翻译这种序列数据?
输入序列中的每一个位置的数据,可以关注其他位置的信息,由此通过Attention score来提取特征或者捕获输入序列每一个token之间的关系。
10.4 Self attention是如何具体实现的? 总共分为4步,如图19所示
图19 Self attention的实现过程
11. 什么是Scaled dot product attention?11.1 self attention最常见的有两种,一种是dot product attention、另一种是additive attention,如图20所示,前者的计算效率更高。
图20 dot product attention与additive attention的区别
11.2 什么是Scaled ?
scaled的具体实现方式如图21所示,这一操作的目的是为了防止内积过大,从梯度角度考虑,避免靠近1,易训练;与batch normalization有一些相似的功能。
图21 scaled操作在attention中的位置
12. 什么是Multi head attention?12.1 Multi head attention在Transformer架构中的位置如图15所示。
12.2 提出背景:CNN具有多个channel,可以提取图像不同维度的特征信息,那么Self attention是否可以有类似操作,可以提取不同距离token的多个维度信息呢?
12.3 什么是group 卷积?如图22所示,将输入的特征多个channel分成几个group单独做卷积,最后再进行con c操作。
图22 group卷积
12.4 Multi head attention的实现方式?与self attention根本不同是什么?
如图23所示,以2个head的为例,将输入的Q、K、V分成两份,每一小份的Q与对应的K、V分别操作,最后计算得到的向量再进行conc操作,由此可以看出,Multi head attention与group卷积有着相似的实现方式。
图23 Multi head attention与self attention的区别
12.5 如何从输入输出维度,角度来理解Multi head attention?如图24所示。
图24 Multi head attention的输入输出维度
13. 什么是Mask Multi head attention?13.1 Mask Multi head attention在transformer架构中的位置如图15所示。
13.2 为什么要有Mask这种操作?
Transformer预测第T个时刻的输出,不能看到T时刻之后的那些输入,从而保证训练和预测一致。
通过 Masked 操作可以防止第 i 个单词知道 i+1 个单词之后的信息,如图25所示。
图25 Mask操作在Transformer中的位置
13.3 Mask操作是如何具体实现的呢?
Q1只跟K1计算,Q2只跟K1、K2计算,而对于K3、K4等,在softmax之前给一个非常大的负数,由此经过softmax之后变为0,其在矩阵上的计算原理实现如图26所示。
图26 Mask操作的矩阵计算上的实现方式
14. 什么是ADD?14.1 Add就是残差连接,由2015年ResNet这篇文章发扬光大(目前引用量已超过16万),与Skip connection的区别在于需要大小维度全部相同。
14.2 作为大道至简想法的极致,几乎每一个深度学习模型都会用到这个技术,可以防止网络退化,常用于解决多层网络难训练的问题。
图27 ADD在Transformer架构中的位置(左)与残差连接原理示意图(右)
15. 什么是Norm?15.1 Norm就是layer normalization。
15.2 核心作用:为了训练更加稳定,和batch normalization有相同的作用,都是为了使输入的样本均值为零,方差为1。
15.3 为什么不使用batch normalization,使用的是layer normalization呢?因为一个时序数据,句子输入长度有长有短,如果使用batch normalization,则很容易造成因样本长短不一造成“训练不稳定”。BN是对同一个batch内的所有数据的同一个特征数据进行操作;而LN是对同一个样本进行操作。
图28 layer Normalization在Transformer架构中的位置(左)与batch normalization的区别(右)
16. 什么是FFN?16.1 FFN就是feed forward networks。
16.2 为什么有了Self attention层,还要有FFN?Attention已经有了想要的序列信息特征,MLP的作用是把信息投影到特定的空间里,再做一次非线性映射,和Self attention交替使用。
16.3 结构上:包括两层MLP,第一层的维度为512*2048,第二层的维度为2048*512,且第二层MLP没有使用激活函数,如图29所示。
图29 FFN的具体实现过程
17. Transformer是如何训练出来的?17.1 数据上,在Transformer论文中有提到,用到了4.5M和36M的翻译句子对。
17.2 硬件上,base模型是8个P100 GPU训练了12个小时,大模型是训练了3.5天。
17.3 模型参数和调参层面:
第一,可训练的参数包括WQ、WK、WV、WO,换包括FFN层的参数。
第二,可调的参数包括:每一个token向量表示的维度(d_model)、head的头数、Encoder和Decoder中block重复的次数N、FFN中间层向量的维度、Label smoothing(置信度0.1)和dropout(0.1)。
18. Transformer为什么效果好?18.1 虽然题目是Attention is all you need,但后续一些研究表明,Attention、残差连接、layer normalization、FFN,这些因素共同成就了Transformer。
18.2 Transformer优点包括:
第一,提出深度学习既MLP、CNN、RNN后的第4大特征提取器。
第二,一开始用在机器翻译,随着GPT和Bert彻底出圈;是一个转折点,在这个点之后,NLP领域快速发展,之后多模态、大模型、视觉Transformer等开始兴起。
第三,给人们信心,原来CNN和RNN之后,还可以有效果更好的特征提取器。
18.3 Transformer的不足之处?
第一,计算量大,对硬件要求高。
第二,因为无归纳偏置,需要很多数据才可以取得很好的效果。
最后,这篇文章的参考资料基于Transformer论文、李宏毅老师的课程、李沐老师的课程、知乎上一些关于Transformer优秀的分享,这里不一一介绍(在学习过程中没有及时记录Reference),如果有侵权,请您告知,我会及时备注或修改。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。