【论文阅读】Attention Is All You Need

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
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 $$ Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt {d_k}})V $$

输入: d k d_k dk维的querykey d v d_v dv维的value

MatMul:计算query和各个key的点积

Scale:除以 d k \sqrt {d_k} dk 归一化

softmax:获得权重

MatMul:和value相乘得到输出

Multi-Head Attention

多头注意力机制

参数不共享

image-20201117211209369 $$ head_i=Attention(QW^Q_i,KW^K_i,VW^V_i) $$

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维的keyvaluequery映射成 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
  • 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=BPexp(n=1NwnlogPn)

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>re1r/cr

  • 用于评估模型生成的句子(candidate)和实际句子(reference)的差异的指标。
  • 取值范围在0到1之间,,如果两个句子完美匹配(perfect match),那么BLEU是1,反之,如果两个句子完美不匹配(perfect mismatch),那么BLEU为0。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有胡子的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值