本文基于ACL 2020论文《Learning to Recover from Multi-Modality Errors for Non-Autoregressive Neural Machine Translation》撰写,论文做者为腾讯微信AI团队。git
导语
非自回归神经机器翻译(non-autoregressive neural machine translation,简称非自回归翻译)是近年来兴起的一种新的机器翻译方法。为了提高翻译速度,其抛弃了目标语言词间的依赖关系,并行生成全部目标词,显著提高了翻译速度。但因为同一段原文常常有多种可行的潜在译文,使得非自回归翻译模型在解码时会出现不一样位置的目标语言词是从不一样的潜在译文中选取的问题,被称为多峰问题(multi-modality problem)。该问题一般表现为重复翻译和漏译现象,对非自回归翻译模型的翻译质量具备不利影响。为了缓解该问题,本文提出了一种新的模型RecoverSAT。该模型该译文拆成多个片断并逐段生成,在每一个片断内部采用自回归生成方式,而段间则采用非自回归方式。进一步的,经过引入动态中止机制和段删除机制,该方法能够有效缓解重复翻译和漏译的问题。实验结果显示,该方法在得到与传统神经机器翻译模型可比效果的同时,能够得到约4倍的加速。论文的预印版和代码均已开放。github
背景
自回归神经机器翻译(autoregressive neural machine translation,AT,简称自回归翻译)因其领先的翻译质量而得到普遍关注与应用。但此类模型在生成每一个目标语言词时(即解码)都依赖于在其以前已经生成的词,所以译文生成过程是串行的,使解码速度成为这类模型的一个重要瓶颈。非自回归神经机器翻译(non-autoregressive neural machine translation,简称非自回归翻译)抛弃了目标语言词间的依赖关系,将逐词生成变为全部词并行生成,显著提高了翻译速度,但也相伴产生了多峰问题(multi-modlity problem),一般表现为重复翻译和漏译现象。图1展现了多峰问题的一个示例:微信
源语言句子学习 |
今天有不少农民在作这件事this |
可行译文1编码 |
There are lots of farmers doing this todayspa |
可行译文2翻译 |
There are a lot of farmers doing this today3d |
生成译文1code |
There are lots of of farmers doing this today |
生成译文2 |
There are a lot farmers doing this today |
图1:多峰问题示例
对于源语言片断“不少农民”,有多种可行的翻译方式,如“lots of farmers”和“a lot of farmers”,因为非自回归翻译模型抛弃了目标语言词间的依赖关系,致使其生成的译文中,不一样位置的词可能源于不一样的可行译文。如对于生成译文1,“lots of”源于可行译文1而“of farmers”源于可行译文2。一样的现象在生成译文2中也能够观察到。显然多峰问题对于翻译质量具备不可忽视的负面影响。
在已有的非自回归翻译工做中,一类工做采用多轮解码(iterative decoding)的方法缓解该问题,即每次解码时都将源语言句子和上一轮生成的译文同时做为新一轮解码的输入,具备可以修复生成错误的优势。但该类方法一般须要迭代屡次以得到较好的翻译质量,对翻译速度有显著影响。另外一类方法则经过在模型中额外引入以自回归方式工做的部件的方式注入目标语言端的依赖关系。但这类方法没法对已经发生的生成错误进行修正。
为了缓解多峰问题,本文提出了一种新的半自回归(semi-autoregressive)翻译模型RecoverSAT。该模型具备三个方面的优势:(1) 为了提高翻译速度,该方法将译文拆分红多个片断,并使片断能够并行生成;(2)为了更好的捕捉目标语言端依赖关系,在生成每一个词时,其不只依赖于所在片断内已经被生成的词,还依赖于其余片断内已经被生成的词。一方面,咱们观察到重复翻译多发如今短片断内,所以在每一个片断内部采用自回归方式生成每一个词有助于减小重复翻译现象。另外一方面,将其余片断已被生成的词归入考虑,有助于模型判断其余片断是基于何种可行译文选词并相应对本段内将要生成的词进行调整,从而有助于缓解漏译现象。综合以上两方面,咱们的模型考虑了更多目标语言端信息,从而可以更好得缓解多峰问题。(3)为了使模型具有从已发生的重复翻译错误中进行恢复的能力,咱们提出了一种段删除机制,使得模型在发现某段翻译的内容已在其余段中被翻译时,能够动态将该段删除,从而能够从错误中恢复。
模型结构
图2:模型结构图
图2展现了RecoverSAT的模型结构。对于编码器(encoder),RecoverSAT沿用了经常使用的Transformer结构,这里再也不赘述。RecoverSAT的主要创新点集中于解码器(decoder)。如图所示,在生成译文时,RecoverSAT将译文拆分红多个片断,每一个片断内自左向右逐词生成,而片断间则并行生成。其中“EOS”表示对应的片断已生成完毕,而“DEL”表示相应的片断须要被总体删除。总体过程的几率公式表示以下:
其中x表示源语言句子,y表示译文,表示第i个片断的第t个词,
表示第i个片断的历史信息,L表示片断长度,K表示片断数目。
为了更好的缓解多峰问题,咱们提出了“动态中止”和“段删除”两个机制,其工做原理以下:
动态中止机制:如上所述,与多数已有的非自回归翻译模型不一样,咱们并不预先指定译文的长度,而是经过让模型动态为每段生成特殊符号“EOS”的方式来让模型自行决定译文的长度。咱们称之为动态中止机制。该机制能够从两个方面缓解多峰问题:
- 对于每一个片断,其开头几个词的选择能够更加灵活。以图2为例,对于第2个片断(Segment 2),若是模型将其第一个词选为“of”而不是“lots”,那么模型只需在第1个片断(Segment 1)的结尾处多生成出词“lots”便可避免漏译错误。同理,若是第2个片断的第1个词被选择为“are”,那么第1个片断只需不生成“are”便可避免重复翻译错误。
- 如
的定义所示,生成每一个词时,全部片断中已经生成的词均被做为历史使用,从而使模型能够考虑更多历史信息,从而更易发现多峰问题相关错误并从中恢复。
这里须要指出的是,如何训练模型使其具有上述能力但又保持较好的解码速度是一个很大的挑战。一方面,RecoverSAT的翻译速度与各个片断的最长长度成正比,相应的,咱们须要在构造训练数据时尽可能将参考译文拆分红长度相等的片断,以鼓励模型生成长度大体相等的片断;另外一方面,咱们又须要在训练过程当中给模型提供充足的具备多峰问题相关错误的训练数据,以使模型能够学习到从相关错误中恢复的能力。为了平衡这两方面的要求,在训练过程当中,咱们随机决定每条译文是随机拆分红长度不等的片断仍是长度至关的片断,而且随着训练的进行,逐渐增长拆分红长度至关的片断的译文比例。
段删除机制:显然动态中止机制并不能消除全部多峰问题相关错误,所以咱们引入段删除机制来在已经发生重复翻译错误时从错误中恢复。具体的,当模型发现某一个片断的译文对应的内容已在其余片断中被删除时,模型将生成一个特殊符号“DEL”表示该片断须要被删除。在解码过程完成后,咱们将在后处理阶段将对应的片断从译文中删除,以得到最终译文。须要特别指出的是,咱们观察到重复翻译现象一般在每段的前几个词处发生,由于此时模型可供参考的历史信息很是有限。所以咱们采用预测整段是否删除而非每一个词是否该被删除的建模方式以提高模型的简洁性。在训练过程当中,咱们经过人为插入一些重复片断的方式为模型提供相应的训练数据。
实验效果
为验证模型的有效性,咱们在WMT14 En-De、WMT16 En-Ro、IWSLT16 En-De三个数据集、五个翻译方向上进行了实验,相应的实验结果见图3。从实验结果中咱们能够看到:(1)RecoverSAT得到了与自回归翻译模型(Transformer)可比的翻译质量(BLEU值)。特别的,在分段数为2时,翻译质量差距很小但解码速度快2倍以上。而在分段数为10时,BLEU值降低不足5%,而解码速度为自回归翻译模型的4倍。(2)RecoverSAT在翻译质量上超过了除CMLM之外的全部非自回归翻译模型。而RecoverSAT与CMLM的翻译质量差异很小但RecoverSAT解码速度显著快于CMLM。(3)随着分段数的增长,RecoverSAT翻译质量有较小的降低而解码速度有显著提高,显示其具备较好的泛化性。
图3:实验效果(BLEU值)。其中RecoverSAT括号中的K表示分段数
图4展现了一个实际例子上的翻译结果。在这个例子上,咱们经过要求模型在特定位置生成特定词的方式(绿色标记),探测模型从多峰相关问题恢复的能力。能够看到:(1)已有的非自回归翻译模型(NAT)生成的译文中有多处重复翻译和漏译,而RecoverSAT生成的译文中相应现象不多。(2)RecoverSAT具有动态决定片断长度以缓解重复翻译错误的能力(译文B),也具有从漏译错误中恢复的能力(译文C和D)。(3)RecoverSAT具有发现和删除重复片断的能力(译文D)。
图4:实际翻译质量示例。“Forced Translation”表示咱们强制要求模型生成某个特定的词(绿色标记)以观察相应现象。黄色:重复翻译;红色:漏译;灰色:模型预测须要被删除的片断
结语
为了缓解非自回归翻译中的多峰问题,本文提出一种新的半自回归翻译模型RecoverSAT。该模型经过将译文拆分红多个片断、片断内用自回归方式生成而片断间用非自归方式生成的方法在得到解码速度提高的同时保持了较好的翻译质量。进一步的,该方法经过引入动态中止机制和段删除机制,能够进一步缓解多峰问题并具有必定的从多峰问题相关错误中恢复的能力。将本文中的方法与其余用于解决多峰问题的方法进行有机结合以得到更好的翻译质量和解码速度将是很是值得关注的研究方向。