本文主要用于记录发表于2015年的一篇神作(引用量上千)。该论文将注意力机制在机器翻译的领域进行了升级,而本笔记意在方便初学者快速入门,以及自我回顾。
论文链接:http://aclweb.org/anthology/D15-1166
基本目录如下:
- 摘要
- 核心思想
- 总结
------------------第一菇 - 摘要------------------
1.1 论文摘要
近年来注意力机制被运用于神经机器翻译模型已是常态,但却很少有论文专注于对注意力架构的改进。本论文就提出了两种简单但却有效的注意力机制,全局注意力(global)和局部注意力(local)。其中,局部注意力机制的运用使得神经机器翻译模型远胜于非注意力机制模型(5个BLEU点)。在融合了各个注意力机制模型之后,更是刷新了一波英文翻德文的记录。
------------------第二菇 - 核心思想------------------
2.1 注意力机制介绍
本文提出的两种注意力机制(global & local)其本质区别在于,全局注意力会参考所有输入词,而局部注意力只会考虑部分输入词。而全局注意力,其实可以简单理解为soft_attention的简化版(可参考本菇另一篇论文笔记] ,而局部注意力,可以简单理解介于hard_attention和sorf_attention之间,但是耗费更短的时间来训练。流程上来理解,全局和局部注意力机制唯一的不同就是生成(语境向量)的方法,而一旦有了之后,接下来的步骤都是一样的,我们新的隐状态即为,
然后这个注意力向量就会被传入一个softmax层,来预测当前词,
接下来,我们就来仔细聊一下这两种注意力机制。
2.2 全局注意力机制介绍
该注意力机制重点在于考虑所有输入的隐状态来生成语境向量。与soft_attention类似,该注意力机制也是有对齐向量()的概念,不同的是,该对齐向量的计算更简单,直接由当前隐状态()和每一个输入隐状态()计算得出权重,其计算公式如下,
其中作者设计了三种打分函数(剧透一下,最后general的效果最好)。有了对齐向量以后,语境向量就很好生成了,这里再贴一张原论文的图,方便大家理解,
看了图应该就一目了然了,所以说,这种全局注意力的计算及实现方法是真的很简单,而且也没用高深的计算公式,也没用复杂的神经网络。这里论文作者多谈了几句和soft_attention的区别,重点就是本论文的计算路径简单了很多(虽然本菇还是有一点疑惑,这一点区别的理解,因为从本质上来看,本菇觉得计算开销都很大,可能还需仔细阅读源码,先mark,后期来补,欢迎大神解惑)。
2.3 局部注意力机制介绍
局部注意力机制其实就是为了解决全局注意力机制计算开销过大的问题,比如篇章级或者长句的翻译,遍历所有的隐状态来求对齐向量显然比较困难,因此,局部注意力,如其名,只会关注部分隐状态。因此,该机制的重点就在于如何找寻与预测词对应的隐状态。而论文中也给出了2种找寻的办法,
1)单一映射。即同一时刻的预测词与输入词应该具有强关联关系。确定了目标隐状态之后,再划定一个窗口D,则可以扩大视野,然后再用上面global的计算语境向量的方法即可。
2)显然单一映射,太过暴力了,更多的还是采用一种预测的办法。一种求解对应隐状态区间的计算公式为,
其中为句子长度,都是模型的参数。另外为了更好的计算对齐向量,还引入了高斯分布,如公式(11)。这里,再贴一张原论文的图,加深大家对局部注意力机制的理解,
2.3 论文实验结果分析
论文作者把自己提出的框架都挨个试了一遍,这里就不具体展现了。有兴趣的读者可以自行研读。总体看下来的感觉就是全局和局部的注意力机制也都各有优劣,大家还是要结合具体的业务,尝试过后,再做具体的选择。
------------------第三菇 - 总结------------------
3.1 总结
到这里,整篇论文的核心思想及其创新点已经说清楚了。本论文主要集中在于对注意力机制的改进,提出的全局和局部注意力机制,都足够新奇,但也都在情理之中。主要还是拓宽了我们设计注意力机制的思路。
简单总结一下本文就是先罗列了一下该论文的摘要,再具体介绍了一下注意力机制,尤其是全局和局部注意力机制那一块的理论。希望大家读完本文后能进一步加深对该论文的理解。有说的不对的地方也请大家指出,多多交流,大家一起进步~