Attention is all your need
SeqtoSeq模型首先由Encoder和Decoder组成;decoder的输入是上一时刻ground truth的结果
Attention注意力模型主要是Self-attention和attention,两者的区别在于query的不同,self-attention的query还是自己,而attention的query是不同的;
Self-attention步骤:
1.首先由单词的embedding和位置的embedding来组成单词的初始embedding,记作e_ori
2.e_ori分别通过三个矩阵变换Wq/Wk/Wv,得到Q/K/V
3.计算Q和K的注意力得分A,其实就是计算相似度,以便后续通过相似度进行加和
4.对计算出来的A进行mask操作,对于decoder来说,看不到后续单词,所以和后续单词的相似度会被遮住,这部分信息不能用;对于填充部分,遮住
5.对mask后的A与V相乘得到最终的表示这些单词的embedding,即为encoder结果
encoder的结果用于后续作为K和V和decoder的输入来进行attention操作
6.attention操作后进入前馈神经网络中,将每一个单词的embedding进行非线性变换得到最终的结果。
矩阵大小
https://zhuanlan.zhihu.com/p/37601161
1.目标句子中的每个单词都应该学会其对应源句子的单词的注意力分配概率。
2.把Attention模型看作是输出Target句子中某个单词和输入Source句子每个单词的对齐模型
3.如果是常规的Target不等于Source情形下的注意力计算,其物理含义正如上文所讲,比如对于机器翻译来说,本质上是目标语单词和源语单词之间的一种单词对齐机制。那么如果是Self Attention机制,一个很自然的问题是:通过Self Attention到底学到了哪些规律或者抽取出了哪些特征呢?或者说引入Self Attention有什么增益或者好处呢?Self Attention在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。
网友评论