Transformer, NeurIPS17, Attention is all you need

Attention Is All You Need
Citation: 26532 (2021-09-04)

1. Motivation

重读经典,一个重要的起点。

在作者写作那个时期,NLP里的一些序列任务,主要由复杂的RNN、CNN模型组成encoder与decoder,效果最好的模型将encoder与decoder通过attention模型连接起来。

Google的众多作者,提出完全依赖attention,摈弃RNN、CNN的模型,也就是如今早已称为深度学习的基础模型的transformer。

Attention不是他们提出来的,他们站在前人[2, 3, 4]的肩膀上,提出了self-attention。

基于RNN的序列模型,天然地不能并行运行,推理效率低下。因此,当时有一些研究基于CNN的序列模型,虽然可以并行计算,但是由于CNN需要的操作数量随着序列长度而递增很多。

因此,作者考虑有没有一种对于序列模型并行运行(取代RNN)的模式,但是计算序列之间元素的关系,不显著地受限于序列长度。也就是需要一种在计算上同等对待序列中每个元素的方式。同时考虑一堆元素两两关系的很好的数据结构是矩阵,从而引出了self-attention机制。

2. Transformer

transformer_overview.jpg

2.1 Encoder and Decoder Stacks

序列模型,当时包括现在比较成熟的做法还是Encoder-Decoder,考虑提取多层次的序列关系,所以要使用多层。

Encoder: 由多个block组成,每个block包括multi-head attention、skip-connection、layer normalization,并包括一些全连接。除了mutli-head attention,其它的元素都是当时包括现在深度学习领域里经实践好用的一些方法。

Decoder:对输入层加了一个block;然后与Encoder的输出concat。在Decoder里与其它序列模型一样,需要使用mask。

因为是序列模型,在并行计算的同时,还需要加上标示位置的position embedding。

总的组成元素,比较经典,现在看起来也很直观。

2.2 Attention

transformer_attention.jpg

Attention是一个函数,将一个query与一系列key-value映射到输出上。输出是对所有value的加权求和,权重根据query与key之间的关系计算,比如相似度。

Transformer采用的是Scaled Dot-Product算法,

Attention(Q, K, V) = softmax(\frac{QK^T}{\sqrt{d_k}})V

Attention有多种,比如additive attention,

g_{t, t'} = tanh(W_g h_t + W_{g'} h_{t'} + b_g)

a_{t, t'} = \sigma(W_{a}g_{t, t'} + b_a)

l_t = \sum_{t'=1}^n a_{t, t'} h_{t'}

论文采用的Dot-Product计算更快,更省空间,深度学习时代,能用矩阵计算的,就不用别的;能只用一次矩阵计算的,就不用多次(有巨大效果提升另说)。

所谓Scaled,就是对QK^T除以了\sqrt{d_k},期望去除embedding的维度自身带来的计算差异。

Multi-head attention是在attention基础上划分一下,尝试从更多子空间去捕捉序列中元素之间的关系。可能有点类似模型集成。

MultiHead(Q, K, V) = Concat(head_1, ..., head_h)W^O

head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)

对原始的QKV以及最终的concat结果都做一下投影。

2.3 Positional Embedding

因为既不是RNN也不是CNN,所以模型需要加入一些表示顺序的信息。

作者选择了对position进行embedding加到模型中去。

直觉上感觉应该选择学习positional embedding。

但是作者选择了使用固定的embedding的三角函数形式,

PE(pos, 2i) = sin(pos/10000^{2i/d_{model}})

PE(pos, 2i+1) = cos(pos/10000^{2i/d_{model}})

波长组成了从2\pi10000 * 2\pi的几何数列。

这个形式实在是有点匪夷所思,作者说这样的固定形式可以让模型知道这是一个相对位置,从而可能把位置信息学习到模型的其它部分?另外一个优点是,这样的表达可以处理比训练更长的序列长度。从实验结果来看,作者表示学习与固定位置embedding效果几乎一样。

这个表达方式,还是神奇。

3. Experiment

transformer_result.jpg

结果肯定是信息流通更多更通畅,效果更好了。

优点:
(1)对当前已有的最好的模型的最大缺陷进行分析改造,可能就能先得到一个好用的模型,然后再给予解释。

思考:
(1)根据彩票理论,transformer应该可以瘦身,那可以瘦在那里呢?权重一定是要大于0的吗,有没有干扰项?

4. References

[1] Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems. 2017.

[2] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly learning to align and translate. CoRR, abs/1409.0473, 2014.

[3] Yoon Kim, Carl Denton, Luong Hoang, and Alexander M. Rush. Structured attention networks. In International Conference on Learning Representations, 2017.

[4] Ankur Parikh, Oscar Täckström, Dipanjan Das, and Jakob Uszkoreit. A decomposable attention model. In Empirical Methods in Natural Language Processing, 2016.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容