Attention is All you Need Transformer模型简记

参考了:https://www.jianshu.com/p/ef41302edeef?utm_source=oschina-app

文章要点:

  1. 达到了new state of art。
  2. 用transformer模型代替传统的lstm/rnn,提供并行方法,降低计算复杂度,训练更快。
  3. 引入position embedding代替rnn时序特征。

以机器翻译为例解析transformer,其实分为两个sublayer,一个是multi-head attention,另外一个是 feed foward。两个sublayer都用了残差连接和lyaernorm。

  • Scaled dot-product attention

attention一共有三种。

  1. 用于encoder self-attention,用来提取输入之间的相关性和侧重点,可以代替时序特征。
  2. 用于decoder self-attention,用来提取输出之间的相关性和侧重点,不同的是要加mask即只能前面影响后面。
  3. 用于encoder-decoder self-attention,计算翻译过程中的每个目标字对于输入的不同侧重。

以第三种为例:

 

一般情况下K和V相同,核心思想都是计算目标和源的相似度,softmax得到得分,然后点乘V,得到加权后的结果。

计算相似度的方法有好多种,参见http://phontron.com/class/nn4nlp2017/assets/slides/nn4nlp-09-attention.pdf

大概有拼接加权(适用于大数据),变维相乘,和点乘等。

然后到了multi-head。

本质上就是对不同的head实现不同的线性转换,每个head表示独特的信息,假设原来的维度是[batch, max_seq_len, dim]

论文中用了head=8, dim=512(词向量维度),dk-dv-domodel/h=64

我们先转换成dim/head = 512/8 = 64,输入点乘[512, 64],变成[batch, max_seq, 64]

这样操作8次就得到[batch, 8, max_seq_len, 64],这也就是multi-head attention

然后接下来就是线性加权,点乘一个[h*dv,dim]的权重矩阵,会发现数据被还原成[batch, max_seq_len, dim],但这是加了attention权重之后的结果啦。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章