Press "Enter" to skip to content

AAAI 2022 | 高速高质的机器翻译:字节AI-lab联合阿尔伯塔大学提出基于层级预测和深度监督的并行翻译

试想我 们独自去别的国家旅游,如果不懂当地的语言是不是会很不方便呢? 这时候一个好的即时翻译工具就会非常有用。事实上,质量和速度也是机器翻译的两个主要发展目标。

 

机器翻译的质量在2017年Vaswani等提出Transformer构架以后有了极大提升。然而,在实际应用的时候,我们也希望能尽可能地降低翻译的耗时。试想如果能把翻译一个句子的平均耗时从0.1秒降低到0.01秒,我们在实际使用的时候体验是不是会极大改善?

 

本文介绍一篇由字节跳动AI-lab和阿尔伯塔大学合作发表于AAAI2022上的工作:Non-autoregressive Translation with Layer-Wise Prediction and Deep Supervision (DSLP)。它在比Transformer基线模型快十五倍的情况下,实现了更高的翻译质量。推进了实现高速高质量的机器翻译的研究。

 

 

论文地址:

 

https://arxiv.org/abs/2110.07515

 

代码地址:

 

https://github.com/chenyangh/DSLP.git

 

一、非自回归翻译的背景

 

机器翻译的应用非常广泛,提升翻译的质量和速度一直是学界和工业界追求的目标之一。现在的主流机器翻译模型是基于 Transformer [1]的自回归模型 (AT, Autoregressive)。自回归模型简单来说就是一个词一个词地学习和生成。如下图所示,比如要把中文的“感谢”翻译成英文的“Thank you”。一个自回归模型会先去学习生成第一个单词“Thank”,然后再去学习第二个单词“you”。

 

 

图1:自回归模型进行翻译的例子

 

虽然 自回归翻译模型取得了非常好的结果,但大家也许也能看出来,自回归模型的一个缺点就是慢,因为它需要一个一个词地生成。这在实际应用的时候就意味着有较长的延迟,进而降低了用户的体验。

 

为了实现加速,一种流行的做法是使用非自回归模型 (non-autoregressive)。简单来说就是让模型同时去生成“ Thank ”和“ you ”,如图2所示。

 

 

图2:非自回归模型进行机器翻译的例子

 

乍一看也许没问题,但是这种并行生成的方式通常翻译质量较差。为什幺?如图3所示,假设在上面的例子当中,“感谢”的另外一种翻译是“ Many thanks ”。一个并行解码器就可能会生成” Many you “或者” Thank thanks ”。因为它生成每个词的时候并不知道其他位置生成了什幺,模型不会根据第一个词生成的是” Many “还是” Thank “来决定接下来生成什幺。这就很可能会生成重复或者不一致的文本。

 

 

图3:非自回归模型生成不一致的翻译的例子

 

二、模型方法

 

概览

 

那幺问题来了,有没有办法既保证翻译的速度,又保证质量呢?本文提出的 DSLP (Deeply Supervised, Layer-wise Prediction-aware Transformer) 就兼顾了鱼和熊掌。其大致思想是在Transformer 的多层解码器之间建立联系,从而在生成每个词的时候了解到别的词生成的情况。

 

我们先来看下DSLP的速度-质量的取舍,如下所示。

 

 

图4: DSLP 的速度-质量取舍。图中横坐标相对于并行解码 (AT, Autoregressive) 基线模型的加速倍数,纵坐标是用来衡量翻译质量的BLEU分数。

 

图4 中最右上角蓝色的★表示的是DSLP取得的最好的结果。我们看到它的BLEU分数非常接近AT模型,但是却快了差不多15倍。值得强调的是,上图展示的是在 WMT’14 EN→DE上的翻译结果,而在WMT’14 DE→EN(单向) 以及 WMT’16 EN↔RO(双向)这三个翻译任务上,DSLP的翻译质量都超过了AT模型。

 

三、设计动机

 

首先,我们具体看下自回归和非自回归模型的概率建模。给定一个源端的句子

 

和一个目标端的句子 ,自回归模型把生成 的条件概率分解成 。也就是说它基于已经生成的词学习接下来的词,这也是为什幺它的生成速度受到限制。我们再看非自回归模型,它建模的时候忽略目标端词之间的关系,把条件概率的分解简化成 。换个角度说,非自回归模型的建模是假设目标端的词之间没有直接的依赖关系。这也就造成了它的翻译质量相对自回归模型会低一些。

 

想要提高自非回归模型,我们想让它像自回归模型一样,在生成每个位置的 的时候,可以感知到其他位置 的生成结果。但是我们必须让这种感知非常快速。

 

那DSLP是怎幺做到高速的、对别的位置的预测的感知呢?我们首先看一下传统的基于 Transformer 的非自回归翻译。它是由一个多层编码器和一个多层解码器组成的。多层解码器的每个层是相同的结构,他们不断更新对应目标端的词的隐层状态 (hidden state),并在最后一层的时候进行最终预测。图5展示了一个自回归模型把“感谢”翻译成“Thank you”的例子。

 

 

图5:非自回归模型进行翻译的例子

 

这里,给定源端句子x=“感谢”我们注意到这里解码器独立预测两个单词 。

 

和  。 在图5中,我们观察到非自回归模型的两点特性:

 

1. 对每个位置 ,每一层都生成一个隐层状态 与之对应。如图5中绿色虚线框所示。

 

2. 解码层 的位置 的隐层状态 是依赖于浅层 的每个位置 的状态 的。如图5中红色框所示, 依赖于 。

 

也就是说,非自回归的Transformer在不同位置之间是有依赖关系的,只是这个关系是在隐层上而不是在词上。

 

基于这样的观察,DSLP提出把隐层和预测的词结合起来,从而加强不同位置之间的预测的依赖关系。换句话说: 新状态 = 旧状态 + 预测信息 。这样,对隐层状态的依赖也是对预测信息的依赖。那幺,不同位置之间的预测信息,就可以在层和层之间进行传递。

 

DSLP 的具体实现

 

所以DSLP是怎幺样去实现对不同位置的预测的感知呢?它做了两件事:

 

绑定隐层和预测 。让每个隐层表示都去预测目标端的词,并把预测的结果输出给下一层。我们称这一步为  Layer-wise prediction (LP) 。

 

绑定每个位置的状态和对应的目标端的词。 这通过对每层的输出都进行监督学习来实现,也就是 Deep supervision (DS) 。

 

DSLP模型的大致结构如下所示。

 

 

图6: DSLP 模型示意图

 

层级预测 (LP, Layer-wise prediction)

 

具体来说,DSLP先对每一层的每个位置做预测并进行个贪心解码(greedy decoding):

 

然后把解码的结果和本来位置上的隐层表示结合起来:

 

这里 是把隐层表示投射到词表空间上的变换矩阵, 负责把离散的词转换成连续的向量表示。 表示拼接两个向量。 是一个可学习的变化矩阵,它用来使更新后的 和原始的 的维度保持一致。

 

通过这样的变换,后一层预测就从前层获得了其他位置的预测信息,从而可以利用他们来提高整体翻译的一致性。值得一提的是,在模型预测 (inference) 的时候不需要用 进行归一化,而额外向量拼接和几个矩阵乘法在GPU上的时间损耗非常低。最终DSLP预测时的时间损耗只比未经任何修改的非自回归基线模型多了大约百分之五。

 

深度监督 (DS, Deep supervision)

 

然而,只有LP (Layer-wise prediction) 是不够的,我们需要在训练的时候对每个解码层的输出进行正则(regularization) ,让他们尽可能准确得输出对应的目标词。我们通过深度监督(Deep supervision)来实现这样的目标。我们的训练损失函数 (loss) 是对每一层的预测损失的加和:

 

必须要提的是,深度监督和层级预测同等重要。层级预测绑定了状态和预测,这样可以让深层在做决策的时候获得浅层提供的不同位置的预测信息。但是如果没有深度监督,模型不会把每个位置的隐层状态绑定到相对应的词上,也就造成了浅层给深层提供的信息没有用。后面表3的实验对这个直觉进行了验证。

 

混合训练 (MT, Mixed training)

 

前面提到,层级预测需要浅层提供有效的信息。但是即便通过深度监督,模型依然可能会做出很多错误预测,没办法给深层提供足够有意义的信息。于是,我们提出一种 混合训练 (mixed training) 方式 。它混合了模型的 自身预测和数据标注(groundtruth) 。相对于只往下一层输入模型自身的预测,我们以一定的概率混入真实标注。也就是说,用来出入给下一层的目标端词变成了 。 是通过超参 调节的0-1分布。通过这种混合训练,我们可以修正部分模型预测的错误,从而整体提高训练的效率。混合训练和在自回归模型训练时使用的 scheduled sampling [6]相似。(思考题 :scheduled sampling 和我们混合训练的出发点其实是相反的,但是却殊途同归,有兴趣的同学可以想想为什幺?)

 

 

图7: Mixed training示意图

 

四、实验结果

 

主实验

 

首先我们提出的 DSLP 是一个通用的并行解码构架,我们在四个模型上验证了其有效性,分别是:Vanilla NAT [2], CMLM [3], GLAT[4], 和CTC[5]。结果如表1所示,我们看到DSLP相对基线模型上平均有超过1 BLEU的提升。

 

 

表 1: DSLP 在四个基线模型上的实验结果

 

在表1中,我们看到基于 CTC 的 DSLP 模型(使用混合训练)取得了最好的结果。于是我们用它来和其他的非自回归模型进行对比。表2展示了对比的结果,从中我们可以看出DSLP相对于其他的模型达到了非常好的质量-速度平衡。值得强调的是,相对于自回归模型,DSLP在三个任务上取得了更高的BLEU分数,同时解码速度快了14.8倍。

 

 

表2: 基于CTC的DSLP (混合训练) 的模型和其他非自回归模型在四个翻译任务上的对比

 

分析实验

 

为了最小化实验变量,我们在 Vanilla NAT 上进行分析实验。我们对 DSLP 的 DS 和 LP 两个组成模块分别进行消融 (ablation) ,并对比了它们在使用6, 12, 和18层解码器时候的结果。

 

 

表3: DSLP 对 DS 和 LP 的消融实验。并分别测试了它们在6, 12和18个解码层上的结果。

 

从表3中,我们能看到,相对于基线模型 (Vanilla NAT),单独使用 LP 或者 DS 是没有显着提升的。这是因为单独使用LP的模型没办法保证从前层得到的输入是有意义的。而单独使用DS的时候,后层得不得前层的预测信息,也就不知道别的位置的预测。这验证了本文的模型设计思路:利用前层向后层传递不同位置的预测信息,从而提高预测的一致性。

 

我们还对比了模型每层的翻译质量。

 

 

图8: 在基于6层,12层和18层解码器上分别对比 Vanilla NAT 加上LP, DS以及 DSLP的模型结果。

 

我们看到 Vanilla NAT 在只结合 LP 的时候,中间层的 BLUE 是 0,这验证了没有深度监督的保障,中间层的预测不会提供有意义的信息给后层。在只结合 DS 的时候,模型的每一层的预测都可以达到一定的准确性,但它的结果相比于DSLP在每一层上都更低。而且我们注意到只有DS的时候在最后几层BLEU是几乎不增长的。也就是说没有LP,DS是不会基于前层的预测对其生成进行修正的。这进一步验证我们DSLP的设计直觉。

 

 

图9:DSLP 每一层的输出相对上一层不同的预测的比例

 

我们还分析了DSLP模型的每一层相对于上一层的不同的预测的比例。我们看到随着层数增加,深层相对浅层的不同逐渐减少,逐渐趋于稳定。联系到图8的实验中,DSLP的层级BLEU是不断提高的。我们由此可以认为DSLP的深层实际上是在对浅层进行不断的修正,而且每次修正都让生成质量变得更好。这也解释了为什幺较深层的修改会变少,因为深层的翻译质量已经逐步提高,不再需要大量改动。

 

五、结论

 

本文提出了在传统的非自回归的Transformer构架中加入层级预测和深度监督来提高翻译的质量。我们提出的模型在三个翻译任务上的翻译质量超过了自回归模型,并在解码速度上快了14.8倍。达到非常好的质量-速度均衡。

 

本文所用到的数据、训练代码、评测脚本都在提供的GitHub链接上进行了开源分享。更多的细节和结果请参考我们的论文。

 

//

 

本文作者

 

 

 

黄晨阳

 

阿尔伯塔大学·Ph.D.学生 / 计算机专业

 

参考文献

 

[1] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin: Attention is All you Need. NIPS 2017

 

[2] Jiatao Gu, James Bradbury, Caiming Xiong, Victor O. K. Li, Richard Socher: Non-Autoregressive Neural Machine Translation. ICLR 2018

 

[3] Marjan Ghazvininejad, Omer Levy, Yinhan Liu, Luke Zettlemoyer: Mask-Predict: Parallel Decoding of Conditional Masked Language Models. EMNLP/IJCNLP 2019

 

[4] Lihua Qian, Hao Zhou, Yu Bao, Mingxuan Wang, Lin Qiu, Weinan Zhang, Yong Yu, Lei Li: Glancing Transformer for Non-Autoregressive Neural Machine Translation. ACL/IJCNLP 2021

 

[5] Chitwan Saharia, William Chan, Saurabh Saxena, Mohammad Norouzi: Non-Autoregressive Machine Translation with Latent Alignments. EMNLP 2020

 

[6] Samy Bengio, Oriol Vinyals, Navdeep Jaitly, Noam Shazeer: Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks. NIPS 2015

 

作者:黄晨阳

 

Illust rastion by Julia Kuptsova  from icons8

 

-The End-

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注