Attention
Attention叫法的起源:[1]
其实这与之前语言模型的一个瓶颈有关,因为传统的rnn语言模型,会将输入编码进一个定长的vector中,然后decoder通过这个定长的vector来获得输出。所以这个vector本身会成为瓶颈。attention机制能够:relieve the encoder from the burden of having to encode all information in the source sentence into a fixed- length vector.
这篇提出创造一个alignment model,来指导input与output的关联程度。本篇中使用ff网络来对此建模,并直接jointly training来训练这个网络中的参数。
Attention的本质:
就是用一个一个单独的网络(部分参数)来学习一个加权的参数向量aj(狭义上输入为之前的隐含状态向量sj-1与annotation向量hj),通过这个向量,来实现一个soft的“门机制”。
Attention的分类(非严格意义分类,有交叉):
additive attention(通过一个ff网络加权,来计算出注意力向量aj)
dot-product attention(通过权重矩阵代替ff网络,复杂度一样,但更快,计算效率更高)【scaled dot product attention】
self-attention(指不是关注input 与output的关系,而更多关注input之间的联系)
key-value attention
Attention思路的延展:
譬如fm,FM这个做法其实提出的时间更早,不过与attention本身还是有差异的,但是思路上确实有相通之处:
类似于全部特征固定embedding size。当然,fm获取embedding后并不是像传统dnn一样随后还有weight加权连接,而是直接隐向量之间做点积然后乘以输入的乘积。这里的做法其实类似于dot attention中Q,K的做法,这里使用Q,K的点积来作为后续V值的的激活权重,借此来建模各个输入之间的相关性。和fm唯一的区别是,fm得到的注意力矩阵是对称的,而dot attention中得到是非对称的(因为nlp中词之间的互相“依赖”关系本身也应该是非对称的)【当然,后续的处理也是有差异的,dot att中,使用attention矩阵乘以V矩阵,而fm中是乘以xi xj的交叉积矩阵】
refer:
[1]:NEURAL MACHINE TRANSLATION
BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
[hard attention]:Show, Attend and Tell: Neural Image Caption
Generation with Visual Attention