【2017NIPS】
论文:https://arxiv.org/pdf/1706.03762v5.pdf
代码:https://github.com/tensorflow/tensor2tensor
本文提出了新的网络结构Transformer,仅仅依靠注意力机制而不再使用循环和卷积结构
训练可以采用并行化,从而大大缩短训练时间
介绍
现有的循环模型每个时间步依次计算,这种序列化的方法大大阻碍了训练的并行
尽管有工作采用一些技巧提高了计算效率,但是这种序列化的本质问题仍然存在
注意力机制越来越多的被采用,因为可以建模与元素之间距离无关的相关性,但是目前还没有与循环网络想结合
本文提出了Transformer,避开了循环,而是完全依赖注意力机制来建模输入和输出之间的全局相关性,大大提高了模型的并行性,在8卡P100上训练12小时就可以达到翻译的SOTA
模型结构
现有的模型通常采用encoder-decoder结构,encoder将输入序列𝑥1, ⋯, 𝑥𝑛映射到连续的特征表示𝑧=𝑧1, ⋯, 𝑧𝑛,再基于z使用decoder生成输出序列𝑦1, ⋯, 𝑦𝑚
每一时间步都可以看做是一个自回归模型,将前面生成的输出作为当前步额外的输入
Transformer沿用这个整体框架,由堆叠的self-attention和point-wise、FC层构成encoder、decoder(分别对应下图左右部分)
Encoder and Decoder Stacks
encoder:由6个相同的layer组成,每个layer有两个sub-layer
第一个是multi-head self-attention 机制
第二个是position-wise fully connected feed-forward网络
在每个sub-layer中同时使用了残差结构,后面再接上LayerNormalization