这个算是在课程学习之外的探求,不过希望能尽快用到项目实际中。在文章里会援用较多的博客,文末会停止reference。
搜索Transformer机制,会发现高分结果基本上都源于一篇论文Jay Alammar的《The Illustrated Transformer》(图解Transformer),提到最多的Attention是Google的《Attention Is All You Need》。
对于Transformer的运转机制了解即可,所以会基于这篇论文来学习Transformer,结合《Sklearn+Tensorflow》中Attention留意力机制一章完成基本的概念学习;找一个基于Transformer的项目练手
2.进入Transformer
本节内容学习自《从Seq2seq到Attention模型到Self Attention》
上一节引见了seq2seq和attention model,其中attention model由于运用的是RNN,无法做到平行化处理,导致训练工夫很长,直到2017年Google提出了Transformer模型。
本节中,教程将引见Transformer模型。
Transformer模型次要包括了两大特点:self-attention 和 Multi-head。“The transformer”和Seq2seq模型皆包含两部分:Encoder和Decoder。
比较特别的是,”The transformer”中的Encoder是由6个Encoder堆积而成(paper当中N=6),Deocder异样也是运用6个Decoder堆积而成,这和过去的attention model只运用一个encoder/decoder是不同的。
Query、Key、Value
教程在这里引见了attention model的两种解读方式,同时也阐明了如何从attention model转到Transformer。
在attention model中context vector(c_{i})是由attention score和input的乘积加权求和得到,hidden state(h_{t})是由输入句产生。context vector(c_{i})和hidden state(h_{t})可以计算目的句。在attention is all you need 中运用了另一种说法重新解释输入句中的每个文字是由一系列成对的 <地址Key, 元素Value>所构成,而目的中的每个文字是Query,就可以用Key, Value, Query去重新解释如何计算context vector。 经过计算目的Query和输入句中各个Key的相似性,得到每个Key对应Value的权重(权重代表讯息的重要性,即attention score);Value则是对应的讯息,再对Value停止加权求和,得到最终的context vector。
基于下面的Query、Key、Value,可以将之前attention model的Decoder公式停止重写(这算是重点吧)。
score e_{ij}=Similarity(Query, Key_{i})
运用softmax计算attention score(a_{i})$softmax(sim_{i})=a_{i}$,进一步将attention score a_{i}乘上Value_{i}的序列和加总所得 = Attention(Query, Source)即context vector
好吧,这部分公式推导我没好好看,直接照搬了。有兴味的话可以对比一下。
三种attention类型
Transformer计算attention的方式有三种,
encoder self attention,在encoder中.decoder self attention,在decoder中,encoder-decoder attention, 这种attention算法和过去的attention model相似。
分割线以下为Transformer的运转机制,最后我真实是看不懂,只能先列出来,找个例子敲出来试试看吧……
这张著名的图了。
encoder
计算encoder self attention
计算Multi-head attention
Residual Connections
Position-wise Feed-Forward Networks
Positional Encoding
decoder
Masked multi-head attention
The Final Linear and Softmax Layer
|