Attention Is All You Need. NIP 2017
这篇paper在2017年挂到arXiv上了「Paper Link」,是Google的一篇文章,不得不说Google大爹太强了,提出Transformer之后在NLP领域产生了一系列的变革,衍生出了BERT、GPT、T5、ChatGPT等等一系列的模型,而且Transformer在CV也有很大的影响力,这里回顾一下原Paper,记录一下笔记
论文从Abstract、Introduction、Method、Experiments、Conclusion五个方面进行解读,解读不是翻译,添加了个人理解色彩,如有问题欢迎指正~
1. 摘要
目前(2017年)主要的序列转移模型(sequence transduction models)大多是循环神经网络或者卷积神经网络,而且是Encoder-Decoder架构的。本文提出了一个新的网络架构Transformer,他舍弃了之前的循环卷积等结构,新的架构能够非常高效的并行
,加快训练速度。在实验结果上,在WMT 2014 English-to-German翻译任务上达到了28.4 BLEU,提升了2个点;在WMT 2014 English-to-French翻译任务上达到了41.8 BLEU,也是最好的效果。
在之前Transformer其实是做机器翻译任务
的,可能当时也没想到能这么火?
2. 引言
在Transformer没出来之前,语言模型或机器翻译这种任务上大多使用的是循环神经网络、LSTM和GRU,在模型架构方面也比较统一,都限制在循环网络以及Encoder-Decoder架构中。循环神经网络的计算是有顺序的,比如在得到t-1时刻的隐状态之后才能计算t时刻的值,这会带来两个缺点:1. 后面的状态需要等待前面计算结束,浪费了时间,做不到完全并行。2. 当序列过长时,需要大量的内存来存储之前的结果。
在注意力机制出来之后,序列任务能够做到完全并行计算了,但是大多数工作还是将其与循环网络结合来使用。而本文提出的Transformer完全舍弃了循环网络那一套慢而且性能差的方法,transformer能够在序列之间构建全局的依赖关系,在所有token之间学习关联性,实现完全的并行化,加快计算效率的同时具有非常好的性能。
3. 主要方法
大多数的翻译任务都是Encoder-Decoder架构的,作者这里延续了此架构,Encoder接受输入,Decoder以自回归的方式进行输出。整个流程大概如下:给定一个序列,将其输入encoder中得到序列
,此特征输入到decoder中生成输出
3.1 Encoder-Decoder Stacks
模型的整体结构如图所示,包含一个Encoder和Decoder
Encoder:编码器是6个相同的transformer block,其中每一个block包含self-attention layer以及feed-forward layer,我们将每个layer称为sublayer,计算过程为,其中特征向量的维度为
Decoder:解码器也是6个相同的transformer block,但是与编码器有所区别的是加入了mask,因为在解码阶段是以自回归的方式进行解码的,在翻译当前单词的时候是不能看到后面单词的,不然会对翻译的结果造成影响,这点会在论文最后进行说明
