Attention Is All You Need
Abstract
序列转换模型通常基于复杂的RNN或CNN,包含一个编码器和一个解码器。最表现最好的模型还在编解码器之间使用注意力机制链接。
他提出一个简单的网络结构Transformer,仅基于注意力机制。
Introduction
- 序列化计算瓶颈:
- 循环神经网络将序列位置对齐到计算时的时间步,继承了序列的自然形式但使得并行计算无法进行。
- 注意力机制在许多任务模型中变得不可或缺,它使得不论二者在序列中距离远近都可以对其依赖关系进行建模。
Model Architecture
- 大多数序列转换模型都采用编解码器结构,编码器将输入编号序列$x$转化为表示序列$z$,给定$z$,解码器生成输出序列$y$,生成时每一步的输入为上一时刻输出的编号。
- Transformer遵循类似的框架,编码器与解码器均是堆叠自注意力层、点乘和全连接层。
- 编码器包含N=6个相同层,每层有两个子层,均采用参差连接紧接着一个Layer Normalization。
- 多头自注意力层。
- position-wise全连接前馈层。
- 解码器也包含N=6个相同层,在编码器两个子层的基础上添加了第三个子层,在编码器的输出上进行多头注意力机制。同时在自注意力层加上了mask,使得预测时仅能依赖前序已知的输出。
- 注意力可被看作是query与一系列key-val对匹配,得到输出。输出是val的加权和,每个val的权值通过query和对应key的相关程度计算得到。
- Scaled Dot-Product Attetnion
- $Attention (Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V$
- Q,K的维度为 $d_k$,V的维度为$d_v$
- 注意力两种常见形式:Additive Attention和dot-product。后者计算更亏且空间更高效(由于高效的矩阵乘法),Additive Attention是通过有一个隐层的前馈网络计算相似度的。二者在$d_k$较小时表现相当,但若$d_k$变大且没有scale(保证方差为1,维持标准正态分布)项时,前者表现更好。
- Multi-Head Attention
- 实验发现使用多个不同线性层分别映射QKV到各自子空间带来了好的效果。在各自子空间计算输出后再连接并经过线性映射得到最终输出。
- $\operatorname{MultiHead}(Q, K, V) { Concat(head }{1}, \ldots, \text { head }{\mathbf{h}}) W^{O}$
- $head {\mathbf{i}}Attention(Q W{i}^{Q}, K W_{i}^{K}, V W_{i}^{V})$
- $W_{i}^{Q} \in \mathbb{R}^{d_{\text {model }} \times d_{k}}, W_{i}^{K} \in \mathbb{R}^{d_{\text {model }} \times d_{k}}, W_{i}^{V} \in \mathbb{R}^{d_{\text {model }} \times d_{v}}$ and $W^{O} \in \mathbb{R}^{h d_{u} \times d_{\text {matel }}}$
- 文章中h=8,$d_k=d_v=d_{model}/h=64$,随着维度降低,总体计算复杂度与单头类似、
- Transformer中使用了三种形式的注意力
- Encoder-Decoder Attention:Query来自前一层的解码器,key和value来自编码器的输出,使得解码器的每个位置都可以注意到输入序列的每个位置。类似传统编解码器结构。
- 编码器自注意力:qkv均为上一层的编码器输出,编码器的每个位置都可以关注到上一层编码器输出的所有位置。
- 解码器自注意力:类似编码器中的自注意力,但是使用mask阻断由后往前不合法的连接。
另外一个子层为Position-wise前馈层。包含两个线性层以及一个ReLU。
使用embedding得到每个输入token的$d_{model}$向量形式,同时使用线性层和softmax将解码器输出转换为下一个单词的预测概率。
- Positional Encoding
- 由于没有循环和卷积操作,为了让模型感知输入序列的顺序,必须置入token之间的相关位置或绝对位置信息。
- Positional Encoding和输入有着相同的维度,直接加和。
- 使用不同频率的正余弦函数构造出各位置的独立编码。
- 使正余弦函数的原因:作者假设模型能够简单地学到如何attend by relative positions,由于对于任何offset k,在正余弦函数中, $PE_{pos+k}$都能通过$PE_{pos}$的线性变换表示。
- 由于后续注意力前都使用线性层映射特征到低维形式,输入特征都被重组,因此相加和拼接差别应该不大,直接累加起到的作用可能是神经网络在训练中识别得出的。
Why Self-Attention
- 单层计算复杂度
- 可并行计算的计算量
- 最长距离依赖的计算路径长度(对学习长期依赖十分关键),距离越短越容易学习关系(在网络中传输的次数越少)
- 可解释性