Transformer论文阅读笔记总结

笔记作个人理解和备忘之用,如有错误请轻喷


1、摘要

        Transformer是一个完全基于注意力机制(attention mechanisms)的简单网络架构,完全不需要循环(recurrence)和卷积(convolutions),具有并行性,加速计算速度使得模型训练的时间显著减少。


2、模型架构

        原论文《Attention Is All You Need》中第一部分的导言和第二部分的背景介绍略过。下面直接讨论第三部分开始的模型架构。

        大部分competitive neural sequence transduction模型都具有解码器和编码器的结构,编码器将输入的序列X映射到序列z,z的每个元素表示一个向量。给定z,解码器会给出输出为y。模型自回归。transformer遵循这种整体架构,使用堆叠的self-attention和全连接网络构造编码器层和解码器层,如下图所示:

                ​​​​​​

         在原论文中,编码器和解码器层都使用了6次图中所示的结构块的堆叠,即N=6。


        编码器和解码器仅仅相差一个masked-Multi-Head-Attention模块,其他计算过程均相同,我们首先讨论编码器的部分:

        首先,输入经过input embedding,将输入的序列转化为维度为d的向量,通过positional encoding的位置编码与embedding后的向量相加共同得到输入,position encoding的使用是因为transformer完全基于注意力机制,相比传统的rnn、lstm等模型没有记录序列的位置信息,因此需要引入位置信息作为标记。在transformer中,使用频率不同的正弦和余弦函数来记录位置空间信息。

         pos表示位置,i表示维度,也就是每个维度的位置编码都对应一个正弦波。

        接着输入同时作为三个矩阵(Q,K,V)传给多头注意力机制函数(Multi-Head Attention),同时将原始输入与经过Multi-Head Attention函数得到的结果进行一个残差连接,之后经过一个LayerNorm层进行归一化后,传递给全连接层神经网络,再次残差连接并LayerNorm归一化,得到一个输出z传递给解码器。

        LayerNorm不同于BatchNorm,BatchNorm是在输入的通道数上进行分割,将每个通道的NWH单独拿出来进行归一化,当batch_size越小的时候,计算得到的均值和方差无法代表全局,效果会越差。LayerNorm在数量N上进行分割,对每一个样本的CWH进行归一化,对所有的特征进行缩放,避免无法代表全局的情况。

        Multi-Head-Attention是transformer最关键的注意力函数,首先需要了解Scaled Dot-Product Attention。

         其中Q和K是将query和key打包成了Q和K矩阵,其维度均为dk,value打包为V矩阵,维度为dv,QK除根号dk是为计算query和key的距离,经过softmax函数输出以此作为value的权重。除以根号dk的原因,作者有在论文提到:

         当dk过大时,点积运算的增长幅度比较大,容易将softmax函数推到梯度非常小的范围里面去,导致梯度消失,因此除以了一个根号dk。

              ​​​​​​​        ​​​​​​​        

        图中即为Scaled Dot-Product Attention的运算过程。mask(opt)表示将序列中结点i之后的结点均设置为不可见,因为transformer中的全局均是可见的,但模型要求是自回归的,因此需要对当前结点之后的部分作隐藏处理。

         Multi-Head-Attention将Q,K,V均通过h次线性投影到dk,dk,dv的维度,在此基础上进行并行的attention函数运算,提高模型的计算速度,最后将所有的计算结果concat起来,再次投影回去得到输出。 

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      

        全连接层中包括两个线性变换,使用relu激活函数:

        ​​​​​​​        ​​​​​​​        ​​​​​​​       

         输入和输出的维度为d_model=512,隐藏层的维度d_ff=2048,即先映射到维度为2048的高维空间,通过使用relu激活函数进行非线性的变换增强模型的表达能力,最后再映射回512的低维空间。


        下面讨论解码器的部分:

        解码器部分大致流程与编码器部分相同,但在编码器的架构前多加了一个Masked-Multi-Head-Attention。因为模型是自回归的,序列的当前结点不应该查看到后续结点的信息,因此作mask处理,隐藏后续的结点信息,经过Multi-Head-Attention的机制作为query传递给下一个Multi-Head-Attention,而key和value都来自编码器的输出,其他过程和编码器部分一致。


        transformer中使用Adam的优化器,优化器的参数β1=0.9,β2=0.98,ε=1e-9,学习率根据以下公式变化:


        transformer中大量使用dropout进行正则化,Dropout率为0.1,在每个子层的输出,embedding和position encoding都使用了Dropout。


        transformer在原架构的基础上进行了一些变种的实验结果如下:

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值