1.Transformer的入门简介
transformer是一种带有self-attention的seq2seq 的模型
处理seq2seq的问题最常用的架构是RNN
下图,左边的结构是RNN,右边的结构是self-attention layer,bi可以基于整个输入序列而得到的。b1,b2,b3,b4是并行计算的。
self-attention layer 可以取代RNN
2.Self-attention的原理
(1)拿每个query q去对每个key k做attention
(2)进行soft-max处理
softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类!
假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是
更加形象的描述是:
理解完softmax,就容易理解下图了。
(3)得到输出结果b1
其中,代表乘法的意思。
同理,可以得到b2,b3,b4的值。
(4)利用矩阵的思想理解self-attention的第1,2,3步的执行过程
<1>q,v,k的矩阵化表示
<2>α1,1,α1,2,α1,3,α1,4计算过程矩阵化表示
<3>计算得到b
(4)self-attention计算过程回顾
3.self-attention 未考虑位置信息
self-attention模型中是没有位置信息的,原始论文中有一个独特的位置变量ei,这个ei不是从数据中学出来的,而是人为设定的
可以这样理解,将每个词的位置信息理解为one-hot的词向量pi,将pi与xi做拼接。W也可以看做由两部分WI,WP组成。
4.Transformer非常经典的结构图
(1)attention的可视化
从下图中可知,第一个句子,it通过attention知道对应animal,第2个句子通过修改第一个句子的部分内容,可知it对应street
5.Transformer的应用
总结一句话:凡是可以用seq2seq的地方,都可以用transformer