1.注意力机制
2014年,Ilya Sutskever等学者提出了著名的Sequence to Sequence(Seq2Seq)模型,但其中存在两个问题:
1)encoder 最后一个 hidden state,与句子末端词汇的关联较大,难以保留句子起始部分的信息。因此当句子过长时,模型性能下降很快。
2)句子中每个词都赋予相同的权重的做法是不合理的,这样没有足够的区分度。
同样的,在计算机视觉领域中,CNN模型也存在着这样的问题,特别是当图像尺寸很大时,这个问题更加明显。
针对以上缺陷,Dzmitry Bahdanau, Yoshua Bengio等人发表《Neural machine translation by jointly learning to align and translate》,提出了Attention Mechanism,希望实现软区分,并给出了一些 attention 的可视化效果图。同年,Kelvin Xu等人发表论文《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》,将注意力机制引入了计算机视觉领域。他们同时提出了两种注意力机制,即Soft Attention和Hard Attention。
2.代码实现
tensorflow
import tensorflow as tf
x=tf.constant([[1,0,0],[0,2,2]],dtype=tf.float32)
w_query=tf.constant([[1,0],[1