论文信息:论文地址
概述
神经机器翻译(NMT)获得了巨大成功,在部分领域几乎达到了人类水平,但这些模型主要是在句子级别的平行语料上进行训练和评估的。文档级别的机器翻译需要捕获上下文进行精确翻译,越来越受到研究者们的关注。
一种直接的解决方案是孤立地翻译文档中的每一个句子,但这样会带来不一致问题。为了解决这个问题,先前大部分方法是提出在文档级数据上训练的条件上下文(context- conditional)机器翻译模型。但是这些方法无法使用在句子级语料上训练的NMT模型。
本文提出了一个在解码阶段将上下文融入已训练句子级翻译模型中的方法,从而不需要在文档级语料上训练条件上下文机器翻译模型。这也是本文的核心创新点。
方法
自训练
首先将文档(D)中的第一个源句子(X_1)转换为目标句子(Y_1),接着在句子对((X_1,Y_1))上对模型进行自训练,从而在给定源句子(X_1)的情况下最大化生成的句子(Y_1)中每个单词的对数概率。自训练程序执行一定数量的梯度下降步骤,并且伴随权重衰减。权重衰减是为了使权重的更新值更接近模型的原始值。对文档中的其余句子重复相同的操作。下图中算法1中显示了解码过程中自训练过程的详细实现。
多趟自训练
由于文档是按照从左到右的单调顺序进行处理的,因此自训练的过程无法获得还未处理句子的信息。为了利用文档的全局信息,本文提出了多趟自训练文档解码。具体来说,就是在对模型进行自我训练的同时从左至右单调处理了多次文档。方法十分暴力直接。
Oracle自训练以提高性能
由于模型翻译的句子可能包含一些错误,自训练的过程可能会放大这些错误,从而对文档中未处理的句子造成更大干扰。为了隔离不完美翻译的效果并估计模型性能的上限,本文以真实翻译为目标对自训练过程进行评估,并将其称为oracle自训练。这类似于语言建模任务中中引入的动态评估方法(dynamic evaluation),其中语言模型的输入文本是用于 在评估过程中训练神经语言模型的目标文本。但在多趟自训练时,本文没有使用oracle自训练,因为模型可能记住正确答案。
实验
数据集
本文主要使用了三个数据集,分别为NIST Chinese-English (Zh-En)数据集, WMT19 Chinese-English (Zh-En)数据集和Open-Subtitles English-Russian (En-Ru)数据集。具体的实验结果可以参照论文。
总结
本文对机器翻译不是特别了解,但总的来说这篇机器翻译论文算是另辟蹊径,只借助句子级机器翻译模型就能够做到文档级翻译,另外方法也是比较简单有效。除此之外,据我所知自训练通常会导致错误放大,使得模型难以训练,但本文引入的动态评估和权重衰减貌似能够客服这个问题,今后也可以重新考虑自训练方法。