论文名称:Attention Is All you Need
作者:Ashish Vaswani,Noam Shazeer,Niki Parmar,Jakob Uszkoreit,Llion Jones,Aidan N. Gomez,Łukasz Kaiser,Illia Polosukhin
code:https://github.com/jadore801120/attention-is-all-you-need-pytorch/blob/master/transformer/Models.py
前言
基于RNN或CNN的Encoder-Decoder模型在NLP领域占据大壁江山,然而她们也并非是完美无缺的:
- LSTM,GRU等RNN模型受限于固有的循环顺序结构,无法实现并行计算,在序列较长时,计算效率尤其低下,虽然最近的工作如因子分解技巧1,条件计算2在一定程度上提高了计算效率和性能,但是顺序计算的限制依然存在;
- Extended Neural GPU3,ByteNet4,和ConvS2S5 等CNN模型虽然可以进行并行计算,但是学习任意两个位置的信号的长距离关系依旧比较困难,其计算复杂度随距离线性或对数增长。
而谷歌选择抛弃了主流模型固有的结构,提出了完全基于注意力机制的Transformer,拥有其他模型无法比拟的优势:
- Transformer可以高效的并行训练,因此速度十分快,在8个GPU上训练了3.5天;
- 对于长距离关系的学习,Transformer将时间复杂度降低到了常数,并且使用多头注意力来抵消位置信息的平均加权造成的有效分辨率降低
- Transform是一种自编码(Auto-Encoding)模型,能够同时利用上下文
整体结构
Transfromer的整体结构是一个Encoder-Decoder,自编码模型主要应用于语意理解,对于生成任务还是自回归模型更有优势
我们可以将其分为四个部分:输入,编码块,解码块与输出
接下来让我们按照顺序来了解整个结构,希望在阅读下文前你可以仔细观察这幅图,阅读时也请参考该图