百度百科:神经注意力机制可以使得神经网络具备专注于其输入(或特征)子集的能力。注意力机制(attention mechanism)是解决信息超载问题的主要手段的一种资源分配方案,将计算资源分配给更重要的任务。核心目标也是从众多信息中选择出对当前任务目标更关键的信息。
两个框架的对比:由固定的中间语义表示C换成了根据当前输出单词来调整成加入注意力模型的变化的Ci
1.未引入注意力:
2.引入注意力机制:
先讲正常的框架,再引入注意力
论文:•Volodymyr Mnih, Nicolas Heess, Alex Graves, Koray Kavukcuoglu. Recurrent Models of Visual Attention. NIPS 2014: 2204-2212
•Dzmitry Bahdanau, et al.,Neural machine translation by jointly learning to align and translate, 2015
抽象的encoder-decoder模型!注意力机制正式依附于这样的模型。
c是上下文向量,可以直接把最后一个隐状态作为上下文的变量,也可以对最后的隐状态进行非线性变换或者对所有的隐状态进行非线性变换。
问题:输入的序列不论长短都会编码成一个固定长度的向量表示,而解码则受限于该固定长度的向量表示。
解决:注意力机制。
定义每个输出的条件概率为:
Si为解码器RNN的隐层状态:
Ci上下文变量取决于编码器状态序列,通过注意力系数对hj加权求得注意力系数由softmax函数计算。也有相似函数
由开头看出,区别在每个Ci可能对应着不同的源语句子单词的注意力分配概率分布。注意力分配的系数的计算:
比如左边query输入people,与key等计算相似度,乘以相对应的value,就计算出对应的注意力系数。
详细流程
阶段1:根据query和key计算两者的相似性
阶段2:对第一阶段的原始分值进行归一化处理
阶段3:根据权重系数对value进行加权求和,得到的系数。
Tansformer
Transformer其实这就是一个Seq2Seq模型,左边一个encoder把输入读进去,右边一个decoder得到输出