问题:NMT通常产生流利的目标语句,但是却不忠于源语句(unfaithful)
解决方法:使用一个短语表作为推荐记忆,为值得推荐的单词添加奖励
步骤:首先通过源语句搜索短语翻译表来导出前缀树以容纳所有候选目标短语,然后再候选目标短语和先前翻译的目标单词之间进行匹配来构建推荐单词集,之后通过使用注意力向量和短语翻译概率来确定每个推荐单词的特定奖励值,最后把此奖励值整合到NMT中来改善翻译结果。
短语翻译表:由Moses直接从并行语料库中学习得到的
构建候选目标短语集合:
首先遍历短语翻译表并获得匹配输入源语句的所有短语对,然后对于每个短语对,将前N个最高概率的目标短语添加到候选目标短语集合中,然后以前缀树的形式表示候选目标短语。如上图所示,找到源语句“ta dingju zai meiguo, bing shenghuo zai mierwoji de jiaoqu”中在短语表中出现的所有短语“ta dingju zai”和“mierwoji de jiaoqu”,对于“ta dingju zai”这个短语,在短语表中有两个翻译“he settled in”和“he settled down”,“mierwoji de jiaoqu”在短语表中有两个翻译”suburb of Milwaukee“和"outskirts of Milwaukee",把这些候选目标短语添加到一个集合中,然后就使用前缀树来表示这个候选目标短语集合。
构建单词推荐集合:
短语前缀的定义:短语的前缀是一个单词序列,以短语的第一个单词开头,以短语的任何单词结束。比如说一个短语,它包含了四个前缀
部分翻译后缀的定义:部分翻译的后缀是一个单词序列,以任何属于
的单词开头,以
结尾。比如说一个部分翻译
,它包含了四个后缀
在解码的每一个步骤i都要构建一个单词推荐集合,如果候选目标短语集合中的一个短语前缀
,能匹配部分翻译
的后缀
的话,则短语
中的下一个单词有可能是下一个预测的单词
,比如说,候选短语集合中有这么一个短语“xxxy”,部分翻译为“zzzxxx”,这个短语的前缀“xxx”能匹配到部分翻译的后缀“xxx”,则这个翻译的下一个单词就有可能是“y”。
以Figure 2为例,假设已经得到部分翻译“he settled in the US, and lived in the suburb of”,它包含一个后缀“suburb of”,同时在候选目标短语集合中,有一个短语“suburb of Milwaukee”的前缀是“suburb of”,因此这个前缀的下一个单词“Milwaukee”就应该是即将被解码器预测的,因此,通过添加奖励来推荐“Milwaukee”这个单词,希望当这个低频词被NMT误译时,这个推荐可以解决这个错误。
算法流程图如上所示,line 2 表示获得所有部分翻译的后缀,用表示每一个后缀,line 3 表示获得属于候选目标短语集合中每一个目标短语的所有前缀,用
表示每一个前缀,如果能匹配上,则把前缀
的下一个单词添加到候选单词集合中。
由于前缀和后缀的定义,可以把每一个短语的第一个单词添加进候选单词集合,因为部分翻译的后缀和任何短语的前缀通常都包含一个匹配的部分
。
现在已经知道哪个单词是值得推荐的,为了更好的计算奖励值,需要知道每一个推荐单词的来源,来源有两个部分:这个单词属于的短语对,源短语和目标短语之间翻译的概率。对于一个推荐单词t,它属于,
表示推荐单词t属于的第m个短语对,
表示这个短语对的翻译概率。以Figure 2为例,当部分翻译为“he”的时候,根据算法1可以获得推荐单词“settled”,单词“settled”被包含在两个短语对中,并且各自的翻译概率为0.6和0.4,因此推荐单词“settled”可以表示为
奖励值的计算
首先提取每一个短语翻译的概率,,对于每一个短语对
,把目标单词
和源单词
之间的注意力权重转换到目标单词
和源短语
之间的对齐概率
,这是一个源单词
属于源短语
的平均对齐概率值。然后计算推荐单词的奖励值
,奖励值由两部分构成:对齐信息和翻译概率。
把奖励值和NMT结合起来
原来NMT的计算为:
整合后的计算为:
其实就是在原来的基础上乘以一个(1+奖励值)的softmax的结果。