Attention is all you need

提出一种transformer结构,去除rnn和cnn网络,去掉了recurrent的概念

background

rnn缺点:时序计算导致无法并行训练,且无法有效解决

现状

some用cnn取代rnn来优化计算。在计算两个distant input时候计算量较大,而transformer是线性的
(如何实现?
transformer完全依赖self-attention

结构

stacked self-attention and point-wise

encode和decoder

Attention is all you need_第1张图片
transformer基本结构

如图所示,
encoder的基本结构是一个multi-head attention 子网络加一个全连接子网络。每个子网络都引入了residual直连机制,将输入和子网络输出做了一次normalization。encoder由6个这样的子结构组成(为了方便直连,所有embedding输出都是512维度)

decoder基本结构是两个multi-head attention子网络加一个全连接网络,第二个multi-head用来处理encoder的输出。decoder由6个这样的子结构组成(加入了mask机制, masking 的作用就是防止在训练的时候 使用未来的输出的单词。 比如训练时,第一个单词是不能参考第二个单词的生成结果的。 Masking就会把这个信息变成0, 用来保证预测位置 i 的信息只能基于比 i 小的输出。

注意,对于multi-head attention,在encoder中,query=key=value=encoder的输入,在decoder中的第一个multi-head网络中,query=key=value=decoder的输入。在decoder的第二个multi-head网络中,query=decoder第一个mutli-head网络的输出,key=value=encoder的输出。
对于query=key=value的情况,即是大名鼎鼎的self-attention机制

attention机制

给定query,key的维度是,value的维度是

一个attention 函数可以被看做一个query和key-value pairs 到output的映射。query,key,values,output都是向量。

output是由value的加权和得到的,权重取决于query以及对应的key。

目前有两种常用的attention function: 内积和加性(加性通过全连接实现)

scaled内积attention

Attention is all you need_第2张图片
Scaled Dot-Product Attention 结构

先内积,再用 scale, 最后通过一个softmax function得到weight

当较小时,内积attention和加性attention表现差不多。
如果 较大,加性attention表现的更好
论文猜测如果较大,会导致输入到softmax的值较大,使落入饱和区,进而导致梯度消失问题(梯度消失问题很重要)
因子起到调节作用,使得内积不至于太大(太大的话softmax后就非0即1了,不够“soft”了

multi-head attention

multi-head attention的思想很像卷积网络的卷积核

Attention is all you need_第3张图片
multi_head_attention 结构

对query,key,value做h次投影,每次投影后的维度都是,,

然后都经过scaled dot-attention,最后将这h次结果拼接在一起,最后线性输出。


Attention is all you need_第4张图片
multi-hea的attention计算公式

这里的多头参数并不共享
因为论文设定h=8,所以,=/h

Position-wise Feed-Forward Network

Embeddings and Softmax

在预训练input tokens和output tokens的embedding时,embedding层共用相同的权重和softmax权重。

在embedding层,transformer对权重乘以了一个

Positional Encoding

transformer在网络结构中没有recurrent和convlution的概念,为了学习到相对位置之间的关系,提出了position embedding

position embeding是在网络最底层和word embedding一起加入的,维度和embedding维度一样都是,是直接加在一起的

Attention is all you need_第5张图片
position_embedding公式

这里的意思是将id为p的位置映射为一个dpos维的位置向量,这个向量的第i个元素的数值就是PE(p,i)。这里的i对照着公式看可知i<=/2

transformer使用这种正弦函数的原因是,若固定k,位置置p+k的向量可以表示成位置p的向量的线性变换

self-attention的好处

主要体现在计算复杂度的降低和长句子之间的词关联程度。
attention的思路很粗暴,它一步到位获取了全局信息

训练

预处理

WMT 2014 English-German datase数据集
相似长度的句子放在同一batch

训练方法

Adam。β1 = 0.9, β2 = 0.98 and ε = 10−9.

learning_rate公式

learning_rate前warmup_step 步线性增长,后面以正比于的速度减少

正则项

在每一层子网络输入到normalizaiton和下一层网络前做了dropout。
在word embeeding和position embedding相加的时候,做了dropout
dropout率都是0.1

做了label smoothing。 =0.1

u(k)可以是均匀分布
即是在label中加入噪声

实验结果

在机器翻译时,对最近20个保存结果取了平均。采用了beam_search,
beam_size=4, length_penalty=0..6

设置了最长生成长度为input长度+50,但是往往终结得很早。

文章为了比较不同模块对结果的影响,在base的基础上设置了不同的参数进行比较

PPL定义。N是句子长度。PPL越小越好


Attention is all you need_第6张图片
Perplexity-PPL公式

bleu是针对机器翻译的一种评判标准,bleu值在0和1之间,值越大越好
发现变小,模型性能变差

你可能感兴趣的:(Attention is all you need)