Attention mechanism中,给输入序列中对应的每一个Ht分配权重(打分)究竟是怎样打分

(本问题相关背景阅读可戳这里:Attention based model 是什么,它解决了什么问题? )注意机制的具体实现方式可以有很多种,所以最开始那篇文章很抽象地写了一个a(s, h),然后说他们的a就取了个前馈网就过去了;这里的a在一般的应用场景里没有必要取得太复杂,题主后面列出来的w\u0026#39;tanh(Ws+Vh+b)也算是这个前馈网络的一种最常见的实现方法(此处w,W,V,b为待学习参数)。说白了其实就是把当前状态s_{i-1}和编码端信息h的关系套一个参数化黑箱(比如前面那个简单的一层非线性前馈网络),再给产生的得分套一个softmax,然后根据输出和答案之间的损失,通过反向传播去学习这个黑箱的参数(例如上面的w,W,V,b),从而使得这个黑箱函数a(.)可以捕捉到s和h的关系。或许直觉上更容易理解一些的做法是a(s,h) = similarity_W(s,h)或s\u0026#39;Wh(双线性),这样学出来的函数可以直接反映当前状态s和编码端信息h的某种相似度;解码部分产生输出的时候会随时根据当前隐状态信息s,去编码器端找尽可能和s相似的h,把更多注意力放在它们上面。不同作者可能偏好使用不同的实现方式,它们最后在性能上可能差异并不大,不过目前还没看到比较系统的比较。p.s. 不确定题主说的“这两个参数”指的是什么;s和h并不是要学习的参数……参数在函数a(.)里面
■网友
最近刚好看了这篇文章,这篇文章很多细节作者都给了一个参考文献一笔带过。
这篇文章讲的是用框架RNN Encoder Decoder,结合attention机制去完成机器翻译。Encoder-Decoder这个框架想必都比较清楚,而RNN Encoder Decoder则是在Encoder、Decoder的过程使用RNN,具体框架我按文中的公式整理了一个图:
Attention mechanism中,给输入序列中对应的每一个Ht分配权重(打分)究竟是怎样打分

h和s其实是Encoder-Decoder过程中使用RNN计算得到的隐含层向量。
上面的图是传统的模型,这篇文章用Attention机制修改了c.
Attention机制中公式
Attention mechanism中,给输入序列中对应的每一个Ht分配权重(打分)究竟是怎样打分

定义的是(文章中给出的解释)第j个输入(hj)和第i个输出的匹配评分。(其实在翻译中主要是为了处理类似China和中国的对应,希望在China与中 和 China与国 的匹配评分都比较高)。
这样eij表示的是输入j与输出i之间的匹配得分,这样aij就可以表示给定给定输入j,翻译输出为i的概率。(输入的是source words,输出的是target words)
Attention mechanism中,给输入序列中对应的每一个Ht分配权重(打分)究竟是怎样打分

而ci表示attention计算得到的向量,也就是decoder的输入。Ci的含义可以理解为当前预测词yi的context,是yi的预测与source sentence那一部分相关联。(如将“I love China”翻译为“我爱中国”,China其实和“中国”相关联,即China的预测过程需要“中国”出席(attend))。
Attention mechanism中,给输入序列中对应的每一个Ht分配权重(打分)究竟是怎样打分

接下来的decoder过程的输入就是ci,y_{i-1}, s_{i-1}了,最终得到输出yi(从而得到预测词)。
【Attention mechanism中,给输入序列中对应的每一个Ht分配权重(打分)究竟是怎样打分】 关于如何打分,在训练过程中训练数据表示连贯的"中” “国"和“China”匹配分数很高,在负反馈的过程中相关的权重便得以更新,以后这批语料就可以用上述得到的attention模型配合训练的权重完成打分。


    推荐阅读