Bridging the Gap between Training and Inference for Neural Machine Translation翻译

Bridging the Gap between Training and Inference for Neural Machine Translation 翻译

原文链接:https://arxiv.org/abs/1906.02448
摘要 神经机器翻译(NMT)以根据上下文词生成下一个词的方式顺序生成目标词序列。在训练时,它根据真实(这里及下文的真实都是指训练集中真实的译文句子)上下文进行预测,而在推理时,它必须从头开始生成整个词序列。这种(向模型)送入的上下文的差异会导致错误的累积。此外,词级训练要求在生成的词序列和真实词序列之间进行严格匹配,这会导致对不同但合理的翻译进行过度校正。本文解决了这些问题,我们在训练过程中不仅从真实词序列中而且从模型生成的预测序列中采样上下文词,其中预测序列根据句子级的最优值来选择。在中文 → \to 英语和WMT’14英语 → \to 德语翻译任务上的实验结果表明,我们的方法可以在多个数据集上取得显著改进。

1 引言

神经机器翻译已显示出令人鼓舞的结果,并且最近引起了更多关注。大多数NMT模型都属于编码器-解码器框架,包括基于RNN的模型 (Sutskever et al., 2014; Bahdanau et al., 2015; Meng and Zhang, 2019) ,基于CNN的模型(Gehring et al., 2017)以及基于注意力的模型 (Vaswani et al., 2017) ,这类模型根据前面的上下文词预测下一个词,从而得出目标词上的语言模型。场景是这样的:在训练时,它根据真实上下文进行预测,而在推理时,整个词序列由训练得到的模型自行生成,模型先前生成的词作为上下文送入模型。结果,训练和推理时预测出的词是从不同的分布中提取的,即分别从数据分布和模型分布中提取的。这种差异称为曝光偏差exposure bias)(Ranzato et al., 2015,本文和这篇文章解决同一问题),导致训练和推理之间存在差距。随着目标序列的增长,序列之间会累积误差,并且模型必须在训练时从未遇见的条件下进行预测。

直观地讲,为解决此问题,应令模型与推理时相同的条件下进行训练并预测。受DATA AS DEMONSTRATOR(DAD)的启发(Venkatraman et al., 2015),在训练过程中同时提供真实词和预测词作为上下文。 NMT模型通常会优化交叉熵损失,这需要在预测序列和基本事实序列之间的词一级进行严格的成对匹配。一旦模型生成了一个偏离真实序列的词,交叉熵损失将立即纠正错误,并将剩余生成带回真值序列。但是,这引起了新的问题。句子通常具有多种合理的翻译,即使模型生成的词与真实词不同,也不能说该模型是错误的。例如,

reference: We should comply with the rule.
cand1: We should abide with the rule.
cand2: We should abide by the law.
cand3: We should abide by the rule.

一旦模型生成“abide”作为第三个目标词,交叉熵损失将迫使模型生成“with”作为第四个词(如cand1),从而产生更大的句子级似然性,并且与reference一致,尽管“by”是正确的选择。然后,将“with”作为上下文,以生成“the rule”,结果,模型被教导生成“abide with the rule”,这实际上是错误的。翻译cand1可以视为过度校正overcorrection)现象。另一个潜在的错误是,即使模型在“abide”之后预测了正确的词“by”,在生成后续翻译时,也可能会因(向模型)送入“by”而不适当地产生“the law”(如cand2)。假设reference和训练标准使模型记住始终在“with”一词后面的短语“the rule”的模式,为帮助模型从两种错误中恢复并创建正确的翻译,如cand3,即使先前预测的短语是“abide by”,我们也应该送入“with”而不是“by”。我们将此解决方案称为过度校正恢复Overcorrection Recovery, OR)。

在本文中,我们提出了一种弥补训练和推理之间差异并提高NMT的过度校正恢复能力的方法。我们的方法首先从其预测词中选择oracle词,然后从oracle词和真实词中采样作为上下文。同时,不仅通过逐词贪婪搜索选择oracle词,而且还通过句子级的评估(例如,BLEU)来选择oracle词。 BLEU在交叉熵的成对匹配限制下允许更大的灵活性。在训练开始时,该模型会以更大的可能性将真实词选作上下文。随着模型逐渐收敛,越来越多地选择oracle词作为上下文。通过这种方式,训练过程从完全指导的方案变为较少指导的方案。在这种机制下,模型有机会学习处理推理中的错误,并且还具有从对可选翻译的过度校正中恢复的能力。我们在RNNsearch模型和更强大的Transformer模型上都验证了我们的方法。结果表明,我们的方法可以显著提高两种模型的性能。

2 基于RNN的NMT模型

我们的方法可以应用于各种NMT模型。在不失一般性的前提下,我们以基于RNN的NMT(Bahdanau et al., 2015)为例介绍我们的方法。假设源序列和观察到的翻译为 x = { x 1 , … , x ∣ x ∣ } \textbf x = \{x_1, \ldots, x_{|\textbf x|}\} x={x1,,xx} y ∗ = { y 1 ∗ , … , y ∣ y ∗ ∣ ∗ } \textbf y^∗ = \{y_1^∗, \ldots, y_{|\textbf y^*|}^*\} y={y1,,yy}

编码器。使用双向门控循环单元(GRU)(Cho et al., 2014)以获取两个隐藏状态序列, x i x_i xi的标记为 h i = [ h → i ; h ← i ] h_i = [\overrightarrow h_i; \overleftarrow h_i ] hi=[h i;h i]。注意,使用 e x i e_{x_i} exi表示词 x i x_i xi的嵌入向量。
h → i = G R U ( e x i , h → i − 1 ) {\overrightarrow{h}_{i}=\mathbf{G} \mathbf{R} \mathbf{U}(e_{x_{i}}, \overrightarrow{h}_{i-1})} h i=GRU(exi,h i1)

h ← i = G R U ( e x i , h ← i + 1 ) \overleftarrow{h}_i=\mathbf{GRU}(e_{x_{i}}, \overleftarrow{h}_{i+1}) h i=GRU(exi,h i+1)

注意力。注意力旨在提取源信息(称为源上下文向量)。在第 j j j步,在源序列上评估和归一化目标词 y j ∗ y_j^∗ yj和第 i i i个源词之间的相关性,
r i j = v a T tanh ⁡ ( W a s j − 1 + U a h i ) r_{ij} = \textbf v^T_a \tanh (\textbf W_as_{j−1} + \textbf U_ah_i) rij=vaTtanh(Wasj1+Uahi)

a i j = exp ⁡ ( r i j ) ∑ i ′ = 1 ∣ x ∣ exp ⁡ ( r i ′ j ) a_{ij}=\frac{\exp(r_{ij})}{\sum_{i'=1}^{|\textbf x|}\exp(r_{i'j})} aij=i=1xexp(rij)exp(rij)

源上下文向量是所有源标记的加权和,可以通过下式计算得出
c j = ∑ i = 1 ∣ x ∣ a i j h i c_j=\sum_{i=1}^{|\textbf{x}|}a_{ij}h_i cj=i=1xaijhi
解码器。解码器采用GRU的变体来解出目标信息。在第 j j j步,目标隐藏状态 s j s_j sj由下式给出
s j = GRU ( e y j − 1 ∗ , s j − 1 , c j ) s_j = \textbf{GRU}(e_{y_{j-1}}^*, s_{j-1}, c_j) sj=GRU(eyj1,sj1,cj)
目标词汇表中所有词的概率分布 P j P_j Pj是根据该词前面的真实词的嵌入、源上下文向量和隐藏状态计算得到
t j = g ( e y j − 1 ∗ , c j , s j ) t_j = g \left(e_{y_{j-1}}^*, c_j, s_j\right) tj=g(eyj1,cj,sj)

o j = W o t j o_j = \textbf{W}_ot_j oj=Wotj

P j = softmax ( o j ) P_j = \text{softmax}(o_j) Pj=softmax(oj)

其中 g g g表示线性变换, W o \textbf{W}_o Wo用于将 t j t_j tj映射到 o j o_j oj,使得每个目标词在 o j o_j oj中具有一个对应的维数。

3 方法

我们方法的主要框架(如图1所示)是以一定的概率将真实词或先前预测的词(即oracle词)作为上下文。通过训练模型去处理测试期间将出现的情况,可能会减少训练与推理之间的差距。我们将介绍两种选择oracle词的方法。一种方法是使用贪婪搜索算法在词一级选择oracle词,另一种方法是根据句子级最佳选择oracle序列。句子级oracle提供了与真实序列匹配的n-gram的选项,因此内在地具有从替代上下文的过度校正中恢复的能力。为了预测第 j j j个目标词 y j y_j yj,我们的方法涉及以下步骤:

  1. 在第 { j − 1 } \{j-1\} {j1}步中选择一个oracle词 y j − 1 oracle y_{j-1}^{\text{oracle}} yj1oracle(在词级或句子级)。 (见 Oracle词选择一节)
  2. 以概率 p p p从真实词 y j − 1 ∗ y_{j-1}^* yj1中,或以概率 1 − p 1-p 1p从oracle词 y j − 1 oracle y_{j-1}^{\text{oracle}} yj1oracle中采样。 (见带衰减采样一节)
  3. 将采样得到的词用作 y j − 1 y_{j-1} yj1并将公式(6)和(7)中的 y j − 1 ∗ y_{j-1}^* yj1替换为 y j − 1 y_{j-1} yj1,然后在基于注意力的NMT上进行接下来的预测。

3.1 Oracle词选择

通常,在第 j j j步,NMT模型需要将真实词 y j − 1 ∗ y_{j-1}^∗ yj1作为上下文词来预测 y j y_{j} yj,因此,我们可以选择一个oracle词 y j − 1 oracle y_{j-1}^\text{oracle} yj1oracle来模拟上下文词。oracle词应该是与真实词近似的词或同义词。使用不同的策略将产生不同的oracle词 y j − 1 oracle y_{j-1}^\text{oracle} yj1oracle。一种选择是可以使用词一级的贪婪搜索来输出每个步骤的oracle词,这称为词级Oracle(称为WO)。此外,我们可以通过使用波束搜索扩大搜索空间,然后使用句子级的度量,例如, BLEU(Papineni et al., 2002),GLEU(Wu et al., 2016),ROUGE(Lin,2004) et al., 据此选择的翻译句称为oracle句,翻译中的词为句级Oracle(表示为SO)。

词级Oracle

对于第 { j − 1 } \{j-1\} {j1}个解码步骤,选择词级oracle的直接方法是从公式(9)得出的词分布 P j − 1 P_{j-1} Pj1中选择概率最高的词,如图2所示。 o j − 1 o_{j-1} oj1中的预测分数是softmax操作之前的值。在实践中,我们可以通过引入Gumbel-Max技术(Gumbel, 1954; Madison et al., 2014)来获得更健壮的词级oracle,它提供了一种简单有效的方法从分类分布中进行采样。

如图3所示,将Gumbel噪声视为正则化项,添加到公式(8)的 o j − 1 o_{j-1} oj1中,然后执行softmax运算, y j − 1 y_{j-1} yj1的词分布近似为
η = − log ⁡ ( − log ⁡ u ) \eta =-\log(-\log u) η=log(logu)

o ~ j − 1 = ( o j − 1 + η ) / τ \tilde o_{j-1} =(o_{j-1} +\eta)/\tau o~j1=(oj1+η)/τ

P ~ j − 1 = softmax ( o ~ j − 1 ) \tilde P_{j-1} = \text{softmax}(\tilde o_{j-1}) P~j1=softmax(o~j1)

其中 η \eta η是根据均匀随机变量 u ∼ U ( 0 , 1 ) u\sim \mathcal{U}(0, 1) uU(0,1)计算出的Gumbel噪声, τ \tau τ是温度。当 τ \tau τ接近0时,softmax函数与argmax运算相似,当 τ → ∞ \tau\to \infin τ,softmax函数逐渐成为均匀分布。类似地,根据 P ~ j − 1 \tilde P_{j-1} P~j1,选择最佳词作为词级oracle词
y j − 1 oracle = y j − 1 WO = argmax ( P ~ j − 1 ) y_{j-1}^\text{oracle} = y_{j-1}^\text{WO} = \text{argmax}\left(\tilde P_{j-1}\right) yj1oracle=yj1WO=argmax(P~j1)
注意,Gumbel噪声仅用于选择oracle,它不会影响训练的损失函数。

句子级Oracle

句子级Oracle通过句子级度量所需的n-gram匹配实现更灵活的翻译。在本文中,我们将BLEU用作句子级的量度。为了选择句子级的oracles,我们首先对每个批次中的所有句子执行波束搜索,假设波束大小为 k k k,并获得 k k k个最佳候选翻译(根据概率)。在波束搜索过程中,我们还可以将Gumbel噪声应用于每个词的生成。然后,我们通过每个翻译与真实序列的BLEU分数来评价它,并使用具有最高BLEU分数的翻译作为oracle句。我们将其表示为 y S = ( y 1 S , … , y ∣ y S ∣ S ) \textbf y^S =(y_1^S, \ldots, y_{|\textbf y^S|}^S) yS=(y1S,,yySS),然后在第 j j j个解码步骤中,将句子级的oracle词定义为
y j − 1 oracle = y j − 1 SO = y j − 1 S y_{j -1}^\text{oracle} = y_{j-1}^\text{SO} = y_{j-1}^\text{S} yj1oracle=yj1SO=yj1S
但是句子级的oracle带来一个问题。由于模型在每个步骤都从真实词和句子级的oracle词采样,因此两个序列中词数量应相同。但是,我们无法通过朴素的波束搜索解码算法来确保这一点。基于上述问题,我们引入了强制解码force decoding),以确保两个序列具有相同的长度。

强制解码。由于真实序列的长度为 ∣ y ∗ ∣ |\textbf y^*| y,因此强制解码的目标是生成一个序列,其中包含 ∣ y ∗ ∣ |\textbf y^*| y个词,后面跟一个特殊的句子结尾(EOS)符号。因此,在波束搜索中,一旦某个候选翻译趋于以EOS结束时短于或长于 ∣ y ∗ ∣ |\textbf y^*| y,我们将强制它生成 ∣ y ∗ ∣ |\textbf y^*| y个词,即,

  • 如果候选翻译在第 j j j步得到了词分布 P j P_j Pj,其中 j ≤ ∣ y ∗ ∣ j\le |\textbf y^∗| jy 并且EOS是 P j P_j Pj中(概率最高的)第一个词,那么我们选择 P j P_j Pj中(概率第二高)第二个词作为该候选词的第 j j j个词翻译。
  • 如果候选翻译在第 { ∣ y ∗ ∣ + 1 } \{|\textbf y^*|+1\} {y+1}步获得词分布 P ∣ y ∗ ∣ + 1 P_{|\textbf y^*|+1} Py+1 ,其中EOS不是 P ∣ y ∗ ∣ + 1 P_{|\textbf y^*|+1} Py+1 中的头一个词,则我们选择EOS作为候选翻译的第 { ∣ y ∗ ∣ + 1 } \{|\textbf y^*|+1\} {y+1}个字。

通过这种方式,我们可以确保所有 k k k个候选翻译都具有 ∣ y ∗ ∣ |\textbf y^*| y个词,然后根据BLEU分数对 k k k个候选进行重新排序,并选择最上面的一个作为oracle句子。为了将Gumbel噪声添加到句子级的oracle选择中,我们在强制解码期间的第 j j j个解码步骤将 P j P_j Pj替换为 P ~ j \tilde P_j P~j

3.2 衰减采样

在我们的方法中,我们采用的采样机制随机选择真实词 y j − 1 ∗ y_{j-1}^* yj1或oracle词 y j − 1 oracle y_{j -1}^\text{oracle} yj1oracle作为 y j − 1 y_{j-1} yj1。在训练开始时,由于模型训练不足,因此将 y j − 1 oracle y_{j -1}^\text{oracle} yj1oracle用作 y j − 1 y_{j-1} yj1太多会导致收敛非常慢,甚至陷入局部最优状态。另一方面,在训练快结束时,如果仍然以很大的概率从真实词 y j − 1 ∗ y_{j-1}^* yj1中选择上下文 y j − 1 y_{j-1} yj1,则该模型不会充分暴露于推理时必须面对的情况,在推理中就不知道如何处理。从这个意义上说,从真实词中选择的概率 p p p不能固定,必须随着训练的进行逐渐降低。最初, p = 1 p = 1 p=1,这意味着完全基于真实词对模型进行训练。随着模型逐渐收敛,模型会更频繁地从oracle词中进行选择。

从Bengio et al.(2015)那里借来一些想法,但又有所不同。Bengio et al.将 p p p作为mini-batch索引值的函数以逐步减小 p p p,我们则用衰减函数定义 p p p,衰减函数取决于训练epoch的指数 e e e(从0开始)
p = μ μ + exp ⁡ ( e / μ ) p = \frac{\mu}{\mu+\exp(e/\mu)} p=μ+exp(e/μ)μ
其中 μ \mu μ是超参数。该函数严格单调递减。随着训练进行,送入真实词的概率 p p p逐渐降低。

3.3 训练

使用上述方法选择 y j − 1 y_{j-1} yj1后,我们可以根据公式(6),(7),(8)和(9)得到 y j y_j yj的词分布。在计算训练损失时,我们不将Gumbel噪声添加到分布中。目的是基于最大似然估计(MLE)最大化真实序列的概率。因此,以下损失函数被最小化:
L ( θ ) = − ∑ n = 1 N ∑ j = 1 ∣ y n ∣ log ⁡ P j n [ y j n ] \mathcal{L}(\theta)=-\sum_{n=1}^N\sum_{j=1}^{|\textbf y^n|}\log P_j^n[y_j^n] L(θ)=n=1Nj=1ynlogPjn[yjn]
其中 N N N是训练数据中句对的数目, ∣ y n ∣ |\textbf y^n| yn表示第 n n n个真实句子的长度, P j n P_j^n Pjn表示预测的第 n n n个句子在第 j j j步的概率分布,因此 P j n [ y j n ] P_j^n [y_j^n] Pjn[yjn]是在第 j j j步生成真实词 y j n y_j^n yjn的概率。

4 相关工作

其他一些研究人员已经注意到NMT中的曝光偏差问题,并试图解决它。 Venkatraman et al.(2015)提出了DATA AS DEMONSTRATOR(DAD),训练实例初始化为两个相邻的真实词对,其后每一步将预测词与下一个真实词配对作为新的训练实例。 Bengio et al.(2015)进一步发展了该方法,即以变概率的方式从真实词和先前的预测词中采样作为上下文,而不是在整个训练过程中概率不变。这类似于我们的方法,但是它们不包括通过句子级oracle从过度校正中恢复,也不包括在预测分布上添加噪声扰动。

尝试的另一个方向是句子级的训练,认为句子级的度量标准(例如BLEU)为生成带来了一定程度的灵活性,因此可以更大地缓解曝光偏差问题。为了避免曝光偏差的问题,Ranzato et al.(2015)提出了一种新颖的用于序列级训练的混合增量交叉熵增强算法(Mixed Incremental Cross-Entropy Reinforce, MIXER),该算法直接优化用于推理的句子级BLEU。Shen et al.(2016)将最小风险训练(Minimum Risk Training, MRT)引入到端到端NMT模型中,该模型通过相对于任意评估指标(例如句子级BLEU)直接最小化预期损失来优化模型参数。Shao et al.(2018)提出通过概率n-gram匹配目标消除曝光偏差,该目标在贪婪解码策略下训练NMT NMT。

5 实验

我们在NIST中文 → \to 英语(Zh → \to En)和WMT’14英语 → \to 德语(En → \to De)的翻译任务上进行了实验。

5.1 设置

对于Zh → \to En,训练数据集由从LDC语料库提取的1.25M句对组成。我们选择包含878个句子的NIST 2002(MT02)数据集作为验证集,并选择NIST 2003(MT03),NIST 2004(MT04),NIST 2005(MT05)和NIST 2006(MT06)数据集作为测试集,分别包含919、1788、1082和1664个句子。对于En → \to De,我们对WMT’14提供的语料库进行实验,该语料库包含4.5M个句对。我们使用newstest2013作为验证集,并使用newstest2014作为测试集,其中分别包含3003和2737句子。我们使用BLEU评分来衡量翻译质量(Papineni et al., 2002)。对于Zh → \to En,使用mteval-v11b.pl脚本计算不区分大小写的BLEU分数。对于En → \to De,我们通过multi-bleu.pl脚本对references分词,并使用区分大小写的BLEU分数评估性能。这些指标与以前的工作完全相同。此外,我们根据Collins et al.(2005)的方法进行统计显著性检验。

在训练NMT模型时,我们将Zh → \to En翻译任务中的源词和目标词限制为最频繁的30K词,分别覆盖两个语料库的大约97.7%和99.3%的词。对于En → \to De翻译任务,使用字节对编码(bytepair encoding, BPE)(Sennrich et al., 2016)方式对句子编码,对源语言和目标语言进行37k的合并操作,词汇量分别为39418和40274个符号。我们将训练数据集中的句子长度限制为Zh → \to En50个词,En → \to De128个子词(subword)。对于RNNSearch模型,词嵌入和隐藏层的维数为512,测试时的波束大小为10。所有参数均由[-0.1, 0.1]上的均匀分布初始化。使用小批量随机梯度下降(SGD)算法训练模型参数,批量大小设置为80。此外,利用adadelta优化器(Zeiler, 2012)调整学习率, ρ = 0.95 \rho = 0.95 ρ=0.95 ϵ = 1 e − 6 \epsilon= 1e- 6 ϵ=1e6。dropout应用于输出层,dropout率为0.5。对于Transformer模型,我们使用默认设置(https://github.com/pytorch/fairseq )训练基本模型。

5.2 系统

涉及以下系统:

RNNsearch:我们实现了第2节描述的模型的改进,其中解码器使用两个GRU和一个注意力。具体地,将公式6替换为:
s ~ j = GRU 1 ( e y j − 1 ∗ , s j − 1 ) \tilde s_j = \textbf{GRU}_1(e_{y_{j-1}^*}, s_{j-1}) s~j=GRU1(eyj1,sj1)

s j = GRU 2 ( c j , s ~ j ) s_j = \textbf{GRU}_2(c_j, \tilde s_j) sj=GRU2(cj,s~j)

此外,在公式3中,将 s j − 1 s_{j-1} sj1替换为 s ~ j − 1 \tilde s_{j-1} s~j1

SS-NMT:我们在RNNsearch的基础上实施了计划采样(scheduled sampling, SS)方法(Bengio et al., 2015)。衰减方案与我们方法中公式(15)相同。

MIXER:我们实现了混合增量交叉熵增强(Ranzato et al., 2015),其中句子级的指标为BLEU,平均奖励根据使用1层线性回归器的离线方法获得。

OR-NMT:基于RNNsearch,我们引入了词级oracle、句子级oracle和Gumbel噪声,以增强过度校正恢复能力。对于句子级的oracle选择,我们将波束大小设置为3,公式(11)中设置 τ = 0.5 \tau= 0.5 τ=0.5,公式(15)的衰减函数设置 μ = 12 \mu = 12 μ=12。OR-NMT是带有Overcorrection Recovery的NMT的缩写。

5.3 Zh → \to En翻译结果

我们将在本节中使用NIST Zh → \to En数据集在两个基线模型上验证我们的方法。

RNNsearch的结果如表1所示,Tu et al.(2016)提出对基于RNN的NMT中的覆盖率进行建模,以提高翻译的充分性。Shen et al.(2016)提出了针对NMT的最低风险训练(MRT),以相对于BLEU分数直接优化模型参数。Zhang et al.(2017)建模失真以增强注意力模型。与之相比,我们的基线系统RNNsearch 1)优于带有覆盖模型的基于RNN的浅层NMT系统(Tu et al., 2016); 2)在相同的数据集上比使用MRT(Shen et al., 2016)和Distortion(Zhang et al., 2017)性能更好。我们希望这项工作中使用的强大的浅层基线系统能够使评估具有说服力。

我们还将与其他两种旨在解决暴露偏差问题的相关方法进行比较,包括计划采样(Bengio et al., 2015)(SS-NMT)和句子级训练(Ranzato et al., 2015)(MIXER) 。从表1中可以看出,通过采取措施缓解曝光偏差,SS-NMT和MIXER都实现了提升。我们的方法OR-NMT则通过直接合并句子级的oracle和噪声扰动来缓解过度校正问题,其性能优于基线系统RNNsearch和上述系统。特别是,我们的ORNMT在四个测试数据集上的平均表现比RNNsearch高出+2.36个BLEU点。与这两个相关模型相比,我们的方法进一步对大多数测试集取得了重大提升,平均提升了大约+1.2个BLEU点。

Transformer上的结果

我们提出的方法也可以适用于更强大的Transformer模型。评估结果列于表1。我们的词级方法可以使基本模型平均提高+0.54个BLEU点,而句子级方法可以进一步提高+1.0个BLEU点。

5.4 因素分析

我们提出了几种策略来提高解决过校正问题的方法的性能,包括利用词级oracle、句子级oracle以及将Gumbel噪声纳入oracle选择中。为了研究这些因素的影响,我们进行了实验并在表2中列出了结果。当仅使用词级oracle时,翻译性能提高了+1.21个BLEU点,这表明将预测词作为上下文可以减轻曝光偏差。当使用句子级oracle时,我们可以进一步实现+0.62个BLEU点的改进。它表明,就BLEU而言,句子级oracle比词级oracle要好。我们推测其优越性可能来自词生成的更大灵活性,这可以减轻过度校正的问题。通过在词级和句子级oracle词生成过程中合并Gumbel噪声,BLEU分数分别进一步提高了0.56和0.53。这表明Gumbel噪声可以帮助选择oracle词,这与我们的说法相符,即Gumbel-Max提供了一种有效且健壮的方式从分类分布中进行采样。

5.5 关于收敛

在本节中,我们分析了不同因素对收敛的影响。图4给出了RNNsearch、无噪声的词级oracle(WO)和有噪声的句子级oracle(SO)的训练损失曲线。在训练中,使用验证集上的BLEU得分来选择最佳模型,图5显示了在不同因素下的BLEU得分曲线之间的详细比较。RNNsearch收敛迅速,在第7个epoch达到了最佳结果,训练损失在第7个epoch后继续下降,直到结束。因此,RNNsearch的训练可能会遇到过拟合问题。图4和图5还显示,结合oracle采样和Gumbel噪声会导致收敛速度稍慢,并且在验证集上出现最佳结果之后,训练损失不会持续减少。这与我们的直觉是一致的,即尽管需要更长的时间才能收敛,但Oracle采样和噪声可以避免过拟合。图6显示了在不同因素下MT03测试集的BLEU得分曲线。在句子水平上以噪声( τ = 0.5 \tau= 0.5 τ=0.5)采样Oracle时,我们获得了最佳模型。在没有噪音的情况下,我们的系统收敛到较低的BLEU分数。很容易理解,在训练过程中反复使用其自身的结果而不进行任何正则化将导致过度拟合和快速收敛。从这个意义上讲,我们的方法得益于句子级采样和Gumbel噪声。

5.6 关于长度

图7显示了MT03测试集上所生成译文相对于源句子长度的BLEU分数。特别是,我们根据源句子的长度将MT03测试集的翻译分为不同的bin,然后分别对每个bin中的BLEU分数进行测试,结果如图7所示。我们的方法相对于基线系统可以在所有bin中实现巨大提升,特别是(10,20],(40,50]和超长句子(70,80]。交叉熵损失要求预测序列与真实序列完全相同,对于长句子而言更难实现,而我们的句子级oracle可以帮助从这种过度校正中恢复过来。

5.7 对曝光偏差的影响

为了验证改进是否主要是通过解决曝光偏差问题获得的,我们从Zh → \to En训练数据中随机选择了1K个句对,并使用预训练的RNNSearch模型和提出的模型对源语句进行解码。 RNNSearch模型的BLEU得分为24.87,而我们的模型得分还要高出+2.18分。然后,我们计算真实词的数目,这些词由我们的模型生称的预测分布中的概率大于基线模型生成的概率,并将其标记为 N \mathcal{N} N。reference中一共有28,266个词, N = 18 , 391 \mathcal{N}=18,391 N=18,391,比例是18,391/28,266 = 65.06%,这可以证明改进主要是通过解决曝光偏差问题获得的。

5.8 En → \to De翻译的结果

我们还在En → \to De翻译任务上对WMT’14基准测试方法进行了评估。 从表3中列出的结果中,我们得出结论,所提出的方法明显优于基线模型以及相关方法。 与Zh → \to En任务的结果相似,计划采样和MIXER均可改善两个基准系统。 我们的方法分别以+1.59和+1.31个BLEU分数改进了RNNSearch和Transformer基线模型。 这些结果表明,我们的模型在不同的语言对之间都能很好地工作。

6 结论

端到端NMT模型在训练时以真实词为上下文逐词生成翻译词,推理时则以模型生成的词为上下文。为了减小训练和推理之间的差异,在预测一个词时,我们使用采样方案将真实词或先前的预测词作为上下文送入模型。可以使用词级或句子级优化来生成预测的词(称为oracle词)。与词级的oracle相比,句子级的oracle可以进一步为模型配备过度校正恢复功能。为了使模型完全暴露于推理(原文写成reference了)时的环境,我们逐步衰减地从真实词中采样上下文词。我们在实际翻译任务上与两个强大的基线模型以及相关工作比较,验证了我们方法的有效性,在所有数据集上均取得了显著改善。我们还得出结论,句子级oracle比词级oracle更优越。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值