论文精读Transformer: Attention is all you need

1 基础背景

由Google机器翻译Google Brain团队发表。
论文链接:https://arxiv.org/abs/1706.03762
源码链接:https://github.com/tensorflow/tensor2tensor
一句话概述:Attention机制摒弃了循环神经网络和卷积神经网络,一经提出就在机器翻译领域达到了SOTA。

2 Motivation

LSTM和CNN存在如下问题。
LSTM是循环执行的,依赖前一项隐藏层信息h(t-1),天然不适合并行,而且受限于隐藏层大小,更容易丢失以前的信息。
CNN需要很多层才能把距离很远的像素或者输入联系起来,输入长度和计算复杂度成线性关系,导致(1)难以学习远距离的输入;(2)网络结构更加复杂;Transformer能够一次将所有的像素或者输入联系起来。
训练时间都很长。Transformer因为不依赖之前的信息,所以可以进行并行可算,减少计算时间。

3 解决思路

其网络结构如下所示。

3.1 Encoder

  1. Input Embedding
    这一步将一个单词src变成一个向量。
  2. Positional Encoding
    因为Transformer本身并不关注词源和词源之间的位置关系,每个词源会和其他词源做注意力机制,所以缺少对词源在句子中的位置的信息的捕获,在这一步通过加入位置信息,来引导Transformer理解词源的位置。
  3. A stack of 6 identical layers(MultiHead + Add&Norm + FeedForward + Add&Norm)
    (1)Attention
    Attention一般分为加和additive注意力和点积dot product注意力。
    本文使用的是Scaled dot product attention,是对【QKT】除以【根号下向量长度】
    假设存在n个词源,Q的大小为 n x dk,K的大小为 n x dk,得到 n x n 的矩阵,再进行缩放。
    缩放的原因是:在向量长度过长后,向量之间差异较大(部分维度的值大,部分小),算出来的值差异大,经过softmax之后会分别靠向0和1,除以dk之后差异变小,就一定程度上避免向两端靠拢。
    注意:softmax是针对每个词源的,而不是所有放一起做。
    softmax之后的矩阵维度是 n x n,可以看做一个权重矩阵,再乘以V。
    本文采用了Multi-head attention
    在获取Q/K/V矩阵之后,将其分为h个head,每个head i有自己的Wqi/Wki/Wvi,分别乘以QKV,得到每个head对应的Qi/Ki/Vi,其维度是原本的1/h,这个head相当于创建了subspace,进行更丰富的依赖关系学习,生成的向量di再拼起来,再经过一次线性变换后得到完整的输出。
    (2)Add
    借鉴了Resnet网络,将输入直接加到输出中,可以避免梯度消失或梯度爆炸。
    (3)Norm
    这一层Norm采用的是LayerNorm,不是Batchnorm。
    (4)Feedforward
    feedforward层 = linear(512-2048) + relu + linear(2048-512),因为是针对每个词源的,所以叫position-wise。因为之前一步的注意力已经获取了词源和词源之间的联系,所以这一步只需要针对单个词源就可以。

3.2 Decoder

  1. A stack of 6 identical layers(MultiHead + Add&Norm + FeedForward + Add&Norm)
    Encoder的输出同时作为Key和Value,即这两个矩阵是相同的。
    (1)Masked multi-head attention
    因为在实际使用时,是使用的自回归auto-regression,所以前一个词预测出来之后,才会预测后一个词。
    因此,在输入时,也应该到第t个词的时候,掩盖掉t+1之后的词,具体方式是计算完QKT之后将其设置为负无穷大,那么softmax之后就变成了0,相当于0权重。
    masking out (setting to −∞) all values in the input of the softmax

4 复杂度分析

复杂度如下表
(1)当句子长度n小于token维度d时,self-attention的复杂度会低于RNN;
(2)卷积神经网络核大小k一般小于n,但是需要很多层卷积才能联系起来;
(3)如果句子长度太大了,可以限制每个词源的搜索范围,只限定和附近r个做注意力机制。

5 结果

在英语转德语的比赛和英语转法语的比赛中,均达到了SOTA。

6 知识补充

batchnormlayernorm
相同点都是针对某部分输入进行标准化
不同点针对某一个feature,对所有样本进行标准化针对某一个样本,对所有feature进行标准化

7 评价

1.相比于RNN,Transformer更少关注之前的序列信息,导致序列信息capture sequential information获取更难。
2.位置信息使用偏少lack of explicit modeling of positional information。这导致难以获取长范围的信息may not capture long-range dependencies。
3.难以获取局部的模式difficulty in capturing local patterns。因为CNN通过卷积和池化能够把局部信息联系起来,而Transformer更容易忽略这些信息。
4.Transformer的时间复杂度与序列长度成平方关系,而RNN和CNN与序列长度成正比,所以在数据集太大的时候,计算复杂度会更高computational complexity。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值