Transformer结构与论文解读

transformer架构是 Google 团队在 17 年 6 月提出的 NLP 经典之作,由 Ashish Vaswani 等人在 2017 年发表的论文 Attention Is All You Need 中提出,最早使用在机器翻译中,在WMT 2014英德翻译任务中获得28.4个BLEU,比现有的最佳结果(包括集合)提高了2个BLEU,也打开了NLP领域预训练这一新范式。
论文地址:Attention Is All You Need
transformer也使用了经典的seq2seq模式但有些不同,主要的seq2seq模型是基于复杂的循环或卷积神经网络,包括编码器和解码器。性能最好的模型还通过注意机制连接编码器和解码器。Transformer完全基于注意力机制,完全摒弃了递归和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上更优,同时具有更强的并行性,需要的训练时间显著减少
模型结构:
在这里插入图片描述
其中encoder里面的一个框代表一个transformer块,N为块的个数,一个transformer里有几个重点需要关注:位置编码、多头自注意力、残差连接及归一化、FFN。后面关于transformer的变体也大部分是在这些方面展开。

多头注意力机制muti-head attention

文章中使用的注意力机制方法是 Scaled Dot-Product Attention,前面写过注意力机制的文章,只不过这里是自注意力,query和key都取自本身的文本序列,这里贴个图:
在这里插入图片描述
这是单个注意力机制,N为要查询的词的个数,Dx为词向量维度,经过三个不同线性变换到两个Dk维度,一个Dv维度,前两个做点积归一然后softmax,出来的结果与Dv维度的矩阵相乘得到NxDv形状的矩阵输出。
多头注意力就是多弄一些这样的输出:
在这里插入图片描述
注意:这里的多次映射的权重矩阵不是共享的。得到多个输出之后拼接到一起再由线性变换映射到原来的形状。这里有点像卷积神经网络中的多通道,最后也是要将多个通道的输出concat在一起经过线性变换得到想要的输出形状。
综合起来看就是这样:
在这里插入图片描述
知道最后输出的形状是bxNxDv就行了。
masked muti-head attention:
由于在真实训练中,encoder主要负责对一个词的编码,可以看到一个词的上下文,但是在decoder中,任务是机器翻译,接受的只能是上一时刻的输出,是不能看到下文的,所以必须mask掉。
在这里插入图片描述
在训练的时候,decoder的输入是右移一位的输出(是我们已知的真实输出),最开始为起始符,encoder的输出在decoder的中间加入。

位置编码position encoding

由于注意力机制没有考虑词的位置信息,而在NLP中位置信息很重要,作者提出一种位置编码方法position encoding计算词的位置信息,计算方法:
在这里插入图片描述
通过position encoding我们会得到一个矩阵PE,其中每行代表一个词的位置编码,PE(pos,2i)表示矩阵中坐标为(pos,2i)的点,也就是在文本中位置为pos的词的词向量的偶数位置的元素,dmodel为词向量的维度。
所以PE是形状为nxd的矩阵,input形状一样,所以可以将它们相加得到带位置信息的词向量输入。

残差连接及归一化

这里就是图中的add&norm,add就是将上一步的输出也加到输出,transformer的norm不是batch normalization,而是layer normalization,两者差异:
在这里插入图片描述
batch normalization就是在特征上进行归一化,layer normalization是在样本上。
transformer里这一层输入的形状是(b,n,d),b为批量大小,n为序列长度,d为词向量维度。batchnorm和layernorm的差异:
在这里插入图片描述

FFN

原文中叫做Position-wise Feed-Forward Networks,基于位置的前馈网络,作用两个全连接,功能就是将输入形状为(b,n,d)变成(bn,d),再变回(b,n,d),等价于两层核窗口为1的一维卷积层。公式表示:
在这里插入图片描述
文章中x是一个512维的向量,W1将x投影为维度为2048,W2又将2048投影回512。


参考资料:
https://zhuanlan.zhihu.com/p/113233908
https://www.bilibili.com/video/BV1sU4y1G7CN?spm_id_from=333.1007.top_right_bar_window_view_later.content.click
https://www.bilibili.com/video/BV1Kq4y1H7FL?spm_id_from=333.999.0.0


深度学习笔记 2022/01/11

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值