深度学习:transformer模型

                               深度学习:transformer模型

Google于2017年6月发布在arxiv上的一篇文章《Attention is all you need》,提出解决sequence to sequence问题的transformer模型,用全attention的结构代替了lstm,抛弃了之前传统的encoder-decoder模型必须结合cnn或者rnn的固有模式,只用attention,可谓大道至简。文章的主要目的是在减少计算量和提高并行效率的同时不损害最终的实验结果( GGLUE 上效果排名第一https://gluebenchmark.com/leaderboard),创新之处在于提出了两个新的Attention机制,分别叫做 Scaled Dot-Product Attention 和 Multi-Head Attention。Transformer作者已经发布其在TensorFlow的tensor2tensor库中。

考虑到RNN(或者LSTM,GRU等)的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题:

  1. 时间片  t的计算依赖t-1  时刻的计算结果,这样限制了模型的并行能力;
  2. 顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。

transformer模型结构

        论文中的验证Transformer的实验室基于机器翻译的,其本质上是一个Encoder-Decoder的结构,编码器由6个编码block组成(encoder每个block由self-attention,FFNN组成),同样解码器是6个解码block组成(decoder每个block由self-attention,encoder-decoder attention以及FFNN组成),与所有的生成模型相同的是,编码器的输出会作为解码器的输入。Transformer可概括为:

深度学习:transformer模型_第1张图片

具体模型结构如下图:
深度学习:transformer模型_第2张图片

Transformer is the first transduction model relying entirely on self-attention to compute representations of its input and output without using sequence aligned RNNs or convolution。和大多数seq2seq模型一样,transformer的结构也是由encoder和decoder组成。

Transformer Encoder

        Encoder由Nx个相同的layer组成,layer指的就是上图左侧的单元,最左边有个“Nx”(论文中是6x个)。每个Layer由两个sub-layer组成,分别是multi-head self-attention mechanism和fully connected feed-forward network。其中每个sub-layer都加了residual connection和normalisation,即在两个子层中会使用一个残差连接,接着进行层标准化(layer normalization)。因此可以将sub-layer的输出表示为:

 

multi-head self-attention mechanism和fully connected feed-forward network两个sub-layer的解释。

Multi-head self-attention

多头注意力机制——点乘注意力的升级版本。attention可由以下形式表示[深度学习:注意力模型Attention Model:Attention机制]:

 

深度学习:transformer模型_第3张图片

 

Transformer会在三个地方使用multi-head attention:
1. encoder-decoder attention:输入为encoder的输出和decoder的self-attention输出,其中encoder的self-attention作为 key and value,decoder的self-attention作为query。

2. encoder self-attention:输入的Q、K、V都是encoder的input embedding and positional embedding。
3. decoder self-attention:在decoder的self-attention层中,deocder 都能够访问当前位置前面的位置,输入的Q、K、V都是decoder的input embedding and positional embedding。

Note: 在一般的attention模型中,Q就是decoder的隐层,K就是encoder的隐层,V也是encoder的隐层。所谓的self-attention就是取Q,K,V相同,均为encoder或者decoder的input embedding and positional embedding,更具体为“网络输入是三个相同的向量q, k和v,是word embedding和position embedding相加得到的结果"。

未完待续...

 

 

 

[转载]:https://blog.csdn.net/pipisorry/article/details/84946653

你可能感兴趣的:(机器学习,Deep,Learning,NLP)