今天阅读的来自谷歌大脑的同学于 2017 年发表的论文《Attention Is All You Need》,目前论文被引次数高达 6100 次。
Attention 机制是 Bengio 等同学在 2014 年提出的,并广泛应用于深度学习各个领域,如计算机视觉、NLP 等。其中,Seq2Seq 模型采用了 RNN 和 Attention 的结合成功应用于机器翻译领域,在诸多任务中都有显著的提升。
在这篇文论文中,作者提出了 Transformer 网络架构,其摒弃了传统的 RNN、LSTM 架构,完全基于 Attention 机制,并在机器翻译领域获得明显的质量提升。
1. Introduction
传统的基于 RNN 的 Seq2Seq 模型由于难以处理长序列的的句子,且因顺序性也无法并行处理。而完全基于 CNN 的 Seq2Seq 模型虽然可以实现并行化,但是非常耗内存。
Self-attention,也称为 intra-attention,是一种将序列的不同位置联系起来并计算序列表示的注意力机制。Self-attention 已成功应用于各个任务中,包括阅读理解、摘要生成、句子表示等任务中。
而本文介绍的 Transformer 是一个完全使用 Self-attention 的模型,即解决了计算量和并行效率的问题,又提高了实验的结果。
由于论文的细节部分太少而我又缺少很多必备知识,而在查阅资料时发现了 Jay Alammar 大佬的博客,大佬采用了非常精彩的视频和图片介绍了 Transformer 模型和 Seq2Seq 模型,大大降低了我的学习成本。为了方便和我有类似背景(缺少相关知识)的同学看这篇文章时不至于太痛苦,所以本片主要以 Jay Alammar 大佬的博文翻译为主。
2. Pre-requisites
本节内容来源于 Jay Alammar 的博客,非常感激大佬通过如此精彩的视觉方式将模型极其直观的表达出来。
2.1 Seq2Seq
Sequence-to-sequence 模型(以下简称 Seq2Seq)是一种深度学习模型,其论文《Sequence to Sequence Learning with Neural Networks》由谷歌的同学于 2014 年发表于 NIPS 会议,目前已有超过 9400 次的引用。Seq2Seq 的应用广泛,常应用于机器翻译,语音识别,自动问答等领域。谷歌翻译也在 2016 开始使用这个模型。接下来介绍的 Seq2Seq 是没加 Attention 的传统 Seq2Seq,而我们现在经常说的 Seq2Seq 是加了 Attention 的模型。
Seq2Seq 可以理解为输入一个序列,然后经过一个黑盒后可以得到另一个序列:
如果将 Seq2Seq 应用于机器翻译领域的话,就是输入一种语言,然后得到另一个语言:
而这个黑盒中,其实就是 Encoder-Decoder 框架。大概可以可以理解为输入一个序列 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn),然后编码器进行编码得到一个上下文信息 C,然后通过解码器进行逐一解码,最后得到另一个序列 ( y 1 , y 2 , . . . , y n ) ( y_1,y_2,...,y_n) (y