这个算是在课程学习之外的探索,不过希望能尽快用到项目实践中。在文章里会引用较多的博客,文末会进行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公式进行重写(这算是重点吧)。
使用softmax计算attention score(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的运行机制,最后我实在是看不懂,只能先列出来,找个例子敲出来试试看吧……
image.png
网友评论