前面的两篇文章简单介绍了seq2seq在机器翻译领域的尝试,效果令人满意。上一篇也介绍到这一类问题可以归纳为求解P(output|context)的问题,不同的地方在于context的构建思路不同,上两篇中的seq2seq将context定义为encoder的last hidden state,即认为rnn将整个input部分的信息都保存在了last hidden state中。而事实上,rnn是一个有偏的模型,越靠后的单词在last state中占据的“比例”越高,所以这样的context并不是一个非常好的办法,本文将分享的文章来解决这个问题。题目是Neural Machine Translation by Jointly Learning to Align and Translate,作者是来自德国雅各布大学的Dzmitry Bahdanau,现在是Yoshua Bengio组的一个博士生,文章于2015年4月放在arxiv上。
本篇不再讨论seq2seq,如果您想了解seq2seq,可以去看Sequence to Sequence Learning with Neural Networks和Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation两篇博客。本篇只讨论不同的地方。
本文用encoder所有hidden state的加权平均来表示context,权重表示decoder中各state与encoder各state的相关性,简单的seq2seq认为decoder中每一个state都与input的全部信息(用last state表示)有关,而本文则认为只与相关的state有关系,即在decoder部分中,模型只将注意力放在了相关的部分,对其他部分注意很少,这一点与人类的行为很像,当人看到一段话或者一幅图的时候,往往会将注意力放在一个很小的局部,而不是全部。具体看下图:
decoder中预测每个输出的条件概率变为:
这里每个time step的state变为:
这里,context vector由下式计算:
权重用了一个最简单的mlp来计算,
然后做归一化:
这里的权重反应了decoder中的state s(i-1)和encoder中的state h(j)之间的相关性。本文在为了得到相对来说无偏的state,在encoder部分采用了BiRNN。
在机器翻译领域中,attention model可以理解为source和target words的soft alignment,像下图一样:
上图是英语翻译成法语的一个结果。越亮的地方表示source和target中的words相关性越强(或者说对齐地越准),图中的每一个点的亮度就是前面计算出的权重。
本文最大的贡献在于提出了attention model,为今后研究对话生成,问答系统,自动文摘等任务打下了坚实的基础。context的定义也成为了一个非常有意思的研究点,rnn是一种思路,cnn同样也是一种思路,简单的word embedding也可以算是一种思路,交叉起来rnn+cnn也可以作为一种思路,将word替换成char可以作为一种思路,思路其实非常多,不同的组合有不同的模型,都可以去探索。
另外,不知道是不是Yoshua Bengio组的习惯,本文也在附录附上了详细的模型推导过程。
来源:paperweekly