2016年的文章,此时注意力机制已经诞生一年,并且产生多种变种。
本文所提出的方法,进一步提高了注意力机制的对齐效果和翻译质量
(借鉴了传统SMT的畸变模型和繁衍度模型,我对此是完全不了解的)
简介 Introduce
Without a distortion model, the generated alignment sometimes contains incorrect word reordering and as a result the meaning of the sentence could be twisted.
Due to the lack of a fertility model, the number of times that each word in the source sentence be aligned to is not restricted, and as a result we sometimes observe that part of the sentence is translated repeatedly, or part of the sentence is missing in the translation.
这里主要在介绍所谓的位变模型和衍生度模型的作用:
- 位变模型(distortion model):对齐结果的顺序可能不对,对翻译结果进行调序。
- 衍生度模型(fertility model):衍生度是指一对多情况中,“多”的具体数值。一个源语言词可以翻译成目标语言词的个数。也就对应一个词可以被“注意”的次数上限和下限,这个可以很好的解决复读和漏译的情况发生。
基本注意力模型(已经是三刷了,常读常新T.T)
这里我会有一个疑问,就是eij那个公式里为什么需要两组线性变换v和α
崔大佬说一个是融合级联的变换,一个是线性回归。
我觉得崔大佬说得很有道理,看成两层就好了,总不会有坏处。
注意力模型的缺陷
主要是三个问题:排序、复读、漏译。具体原因已经在上面说过了。
排序:可以看到对齐并不总是在对角线上的,即需要重排序。
漏译:可以看到,有一半的注意力矩阵是空的
复读机:可以看到,“午夜”被关注太多次,导致night的复读现象
提出的方法
循环注意力 RECATT(recurrent attention mechanism)
此方法的关键区别点(其实只有一个改进点,说的好像很厉害的样子。。。。)
- 把上一时刻的上下文变量Ci传到打分函数里面,从而实现循环
作者认为这样做的好处就是网络不会重复翻译相同的内容,解决复读问题;也不会又太大的跳跃,使得翻译更连贯。(话说这个不是解决排序问题的吗?)
衍生解码器 FERTDEC(fertility-conditioned decoder)
这部分需要结合GRU来看,基础的GRU-decoder流程如下:
此方法的重点在于GRU中引入了覆盖向量di。di的初始值等于所以源词向量之和,在更新中逐渐变小(代表着剩余的未翻译词越来越少),最终变为零。
所以说好的重排序问题还是没有解决啊(那你说他干什么?)
在实验部分的结尾,作者把重排序的能力归功于循环注意力机制(讲机制的时候并没有说这个机制还有这功能啊喂,当时不是说是为了解决复读问题的吗)。然后还举例了一个例句来说明模型的重排序功能有多好(一个例句真的严谨吗???我真的黑人问号了)。
。
好像确实循环结构能改善排序,但是这种表述确实不合理吧。
总结
一共两个方法,都是在现有方法上的一些改进。
个人认为参考借鉴传统机器学习方法的思路是很有创造性的。
但是创造出来的东西。。。就。。。那样。
文章看到后面我甚至开始怀疑(算了,我就是个菜鸡我凭什么怀疑)。