Attention Is All You Need
应用于NLP的机器翻译问题。
任务
- 由于RNN的递归结构,导致它无法并行计算,RNN以及他的衍生模型最大的缺点就是计算缓慢。并且缺乏对全局信息的理解。因此提出了完全基于attention的Transformer模型。
方法(模型)
Transformer模型是纯attention模型,完全依赖attention机制来描述输入与输出的全局依赖。
模型:
- 输入: x = ( x 1 , x 2 , ⋯ , x n ) x=(x1,x2,⋯,xn) x=(x1,x2,⋯,xn)(是一个离散的符号序列)
- encoder:将它映射成连续值序, z = ( z 1 , z 2 , ⋯ , z n ) z=(z1,z2,⋯,zn) z=(z1,z2,⋯,zn)
- decoder:对于给定的 z z z,生成一个输出符号序列, y = ( y 1 , y 2 , ⋯ , y m ) y=(y1,y2,⋯,ym) y=(y1,y2,⋯,ym)
- 优化器:Adam
- 使用dropout和Label Smoothing防止过拟合
Encoder and Decoder Stacks
Encoder与Decoder堆叠
![image-20201117204444453](https://i-blog.csdnimg.cn/blog_migrate/3fea354f191067510a73a06b2cf47f6e.png)
Encoder
- Transformer模型的Encoder由6个基本层堆叠起来,每个基本层包含两个子层。
- 第一个子层:注意力机制
- 第二个子层:全连接前向神经网络。
- 对两个子层都采用了residual connection,并进行了layer normalization。
Decoder
- Decoder由6个基本层堆叠起来,每个基本层包含三个子层。
- 第一个子层:注意力机制
- 第二个子层:全连接前向神经网络。
- 第三个子层:注意力机制
- 对两个子层都采用了residual connection,并进行了layer normalization。
Attention
注意力机制:将一个query和一个key-value pairs,映射到正确的输入。
- query、key、value、output都是向量。
- 输出作为一个值的加权和计算得到,其中分配到每个值的权重由请求的兼容函数关于对应键计算得到。
Scaled Dot-Product Attention
![image-20201117205900924](https://i-blog.csdnimg.cn/blog_migrate/519b3a72fdeed305a9d32f4e123bdb13.png)
输入: d k d_k dk维的query、key、 d v d_v dv维的value
MatMul:计算query和各个key的点积
Scale:除以 d k \sqrt {d_k} dk 归一化
softmax:获得权重
MatMul:和value相乘得到输出
Multi-Head Attention
多头注意力机制
参数不共享
![image-20201117211209369](https://i-blog.csdnimg.cn/blog_migrate/4fb76d128690ba7a24017ee91b6f3b02.png)
M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , ⋯ , h e a d h ) W O MultiHead(Q,K,V)=Concat(head1,⋯,headh)W^O MultiHead(Q,K,V)=Concat(head1,⋯,headh)WO
用h个不同的线性变换分别将 d m o d e l d_{model} dmodel维的key、value、query映射成 d k d_k dk维、 d k d_k dk维和 d v d_v dv维
代入注意力机制,产生 h × d v h×d_v h×dv维输出,然后拼起来
再用一个线性变换得到最终的输出。
Position-wise Feed-Forward Networks
Position-wise 前向神经网络
- encoder和decoder的每一层都包含一个前向神经网络。
F F N ( x ) = m a x ( 0 , x W 1 + b 1 ) W 2 + b 2 FFN(x)=max(0,xW_1+b_1)W_2+b_2 FFN(x)=max(0,xW1+b1)W2+b2
由两个线性变换和ReLU激活函数组成。
Positional Encoding
位置编码
论文中的位置编码是根据下述公式计算得到的。
P E ( p o s , 2 i ) = s i n ( p o s / 1000 0 2 i / d m o d e l ) PE_{(pos,2i)}=sin(pos/10000^{2i/d_{model}}) PE(pos,2i)=sin(pos/100002i/dmodel)
P E ( p o s , 2 i + 1 ) = c o s ( p o s / 1000 0 2 i / d m o d e l ) PE_{(pos,2i+1)}=cos(pos/10000^{2i/d_{model}}) PE(pos,2i+1)=cos(pos/100002i/dmodel)
-
本文的模型结构没有使用任何递归结构或卷积结构,为了让模型能使用序列的顺序,必须引入某种能表达输入序列每个部分的绝对或相对位置的信息。
-
位置编码:在送入encoder和decoder之前,先对输入进行编码,编码后的向量维度是 d m o d e l d_{model} dmodel,和embedings具有相同的维度,因此可以相加。
-
通过结合位置向量和词向量,就给每个词都引入了一定的位置信息,这样 Attention 就可以分辨出不同位置的词了。
-
选择正弦曲线版本是因为它可以使模型推断出比训练过程中遇到的序列长度更长的序列长度。
数据集
WMT 2014 English-German
WMT 2014 English-French
性能水平
![image-20201118110252849](https://i-blog.csdnimg.cn/blog_migrate/b5ce8743cb22dfec424de444d10ed6a4.png)
- Transformer在英语-德语,英语-法语的翻译任务上都表现出比较好的翻译效果。
- 并且Transformer的训练开销也是最小的。
结论
- 提出的Transformer,是第一个完全基于attention的序列转导模型,用multi-headed self-attention取代了encoder-decoder结构中最常用的循环层。
- 对于翻译任务,Transformer可以比基于循环或卷积层的体系结构训练更快。
扩展了解
机器翻译评价指标:BLEU(Bilingual Evaluation Understudy)
双语评估替补
B L E U = B P ⋅ e x p ( ∑ n = 1 N w n l o g P n ) BLEU=BP⋅exp(\sum _{n=1}^Nw_nlogP_n) BLEU=BP⋅exp(n=1∑NwnlogPn)
B P = { 1 c > r 0 e 1 − r / c ≤ r BP=\begin{cases} 1 & c\gt r \\ 0 & e^{1-r/c} \leq r \end{cases} BP={10c>re1−r/c≤r
- 用于评估模型生成的句子(candidate)和实际句子(reference)的差异的指标。
- 取值范围在0到1之间,,如果两个句子完美匹配(perfect match),那么BLEU是1,反之,如果两个句子完美不匹配(perfect mismatch),那么BLEU为0。