1.Attention first show is in Seq2Seq architecture[Year2015]
2.Self-Attention first show is in Lstm network[Year2016]
Attention is all you need
首先咱们回归一下Attention for Rnn(attention in Seq2Seq)
首先,Seq2Seq这个结构由Encoder和Decoder构成,Encoder有m个输入向量(x1,x2,...,xm).
Encoder会把输入的信息压缩到状态向量h中,最后这个状态hm是对所有输入的概括,decoder是一个文本生成器,(这里的文本理解有很多,可以数字,可以是任意一个国家的语言,可以是代码)
依次生成状态(s1,s2,...,sj),然后根据状态s生成单词(这里是映射),把新生成的单词作为下一个输入x'(读作x-prime),如果要用attention的话,害的计算context vector c,每计算一个s就算出一个context vector c,具体是怎样计算的呢?
计算Context vector C步骤
首先要把decoder当前状态sj与encoder所有状态h1到hm做对比,用align函数计算他们的相关性,把算出来的α(i,j)作为权重,我们来看一下权重α(i,j)是怎么计算的。
参考资料
Transformer模型(1/2): 剥离RNN,保留Attention_哔哩哔哩_bilibili
https://github.com/wangshusen/DeepLearning //Slide are brief and clear,highly recommended
https://github.com/wangshusen/DeepLearning/blob/master/Slides/10_Transformer_1.pdf