attention已经在上篇文章末尾讲过
transformer:它抛弃了传统的CNN和RNN,整个网络结构完全由Attention机制组成。具体来讲是由self-Attention和Feed Forward Neural Network组成
transformer采用Attention机制是因为:
RNN(或者LSTM,GRU等)的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题:
1 时间片t的计算依赖t-1时刻的计算结果,这样限制了模型的并行能力;
2 顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长的依赖关系,LSTM依旧无能为力。
Transformer的提出解决了上面两个问题,首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架。(Transformer输出同步而RNN是按顺序输出)
transformer是 Seq2seq model with many "self-Attention"
李宏毅讲解视频在这里,真的超级清楚超级细,跟着听一遍就明白细节了
q,k,v
输入为x1,x2,x3,x4,输出为b1,b2,b3,b4(图中仅b2)
transformer的结构
(下边的output指的是前一个的输出,上边的output指的是现在的输出)
例:我input输入 机器学习 ,网络中会先在上方的output输出 machine,再根据 输入的汉字 和 machine 输出 learning,所以最后的结果是 machine learning
现在,如果可以用Seq2seq的东西,都可以被全新的transformer模型代替
(注:Seq2seq+attention也只是初步有了transformer的思想,而transformer本身更复杂)
transformer的变种:Universal Transformer
这个文章蛮好的