天天看点

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

目录

Structure-Invariant Testing for Machine Translation

ABSTRACT

1 INTRODUCTION

2 A REAL-WORLD EXAMPLE

3 APPROACH AND IMPLEMENTATION

3.1 Generating Similar Sentences

3.2 Collecting Target Sentences

3.3 Representations of the Target Sentences

3.4 Translation Error Detection via Structure Comparison

4 EVALUATION

4.1 Experimental Setup

4.2 Dataset

4.3 The Effectiveness of SIT

4.4 Translation Error Reported by SIT

4.5 The Running Time of SIT

4.6 The Impact of Distance Threshold

4.7 Fine-tuning with Errors Reported by SIT

5 DISCUSSIONS

5.1 False Positives

5.2 Building Robust Translation Software

6 RELATED WORK

6.1 Robustness of AI Software

6.2 Robustness of NLP Algorithms

6.3 Machine Translation

6.4 Metamorphic Testing

7 CONCLUSION

Structure-Invariant Testing for Machine Translation

  Pinjia He Department of Computer Science ETH Zurich Switzerland [email protected] Clara Meister Department of Computer Science ETH Zurich Switzerland [email protected] Zhendong Su Department of Computer Science ETH Zurich Switzerland [email protected]  

ABSTRACT

       近年来,机器翻译软件越来越多地融入到我们的日常生活中。人们经常在各种应用程序中使用机器翻译,比如向外国医生描述症状和用外语阅读政治新闻。然而,为现代机器翻译提供动力的神经机器翻译(NMT)模型的复杂性和难处理性使得这些系统的鲁棒性甚至难以评估,更难以保证。机器翻译系统可以返回导致误解、医疗误诊、人身安全威胁或政治冲突的低劣结果。尽管其明显的重要性,确认机器翻译系统的健壮性是非常困难的,因此,还没有充分的探索。

       为了解决这个问题,我们引入了结构不变测试 structure-invariant testing (SIT),一种新的变形测试方法来验证机器翻译软件。我们的主要观点是,相似的源句的翻译结果应该典型地表现出相似的句子结构。具体来说,SIT(1)通过将给定句子中的一个词替换为语义相似、句法相同的词,从而生成相似的源句;(2)通过语法解析树(通过选区或依赖解析获得)表示句子结构;(3)报告结构数量差异超过某个阈值的句子对。为了评估SIT,我们使用它来测试谷歌Translate和Bing Microsoft Translator,输入200个源句,导致64个和70个bug,分别是69.5%和70%的top-1准确率。翻译错误多种多样,包括翻译不足、过度翻译、修改错误、词/短语误译、逻辑不清等。

1 INTRODUCTION

       机器翻译软件在过去十年中迅速发展;如今,用户在各种应用程序上都依赖机器翻译,比如在国外留学时签订租赁协议,向外国医生描述症状,以及用外语阅读政治新闻。2016年,谷歌翻译作为使用最广泛的在线翻译服务,吸引了超过5亿用户,每天翻译超过1000亿字[81]。除此之外,机器翻译服务还被嵌入到各种软件应用程序中,如Facebook[25]和Twitter[82]。 

       机器翻译的发展在很大程度上可以归因于神经机器翻译 neural machine translation (NMT)模型,它已经成为许多机器翻译系统的核心组件。据研究报道谷歌[86]和微软[32],最先进的NMT模型正在接近人类水平的准确性,即BLUE。这些最近的突破使得用户开始在日常生活中依赖机器翻译软件(如谷歌Translate[30]、Bing微软翻译器[5])。

       然而,NMT模型并不像许多人认为的那样可靠。近年来,以神经网络为核心的软件系统中出现了次优和错误输出的现象。典型的例子包括自动驾驶汽车[23,68,79]、情绪分析工具[2,36,46]和语音识别服务[6,71]。这些最近的研究成果表明,神经网络可以很容易地返回较差的结果(例如,错误的类标签),给定特定的输入(例如,错误的类标签)。敌对的例子)。NMT型号也不例外;他们可能会被敌对的例子[22]或自然噪音(例如,输入句子中的拼写错误)[4]所愚弄。这些较差的结果(即,可能导致误解、尴尬、经济损失、医疗误诊、人身安全威胁或政治冲突[17,57,64,65,80]。因此,保证机器翻译软件的鲁棒性是一项重要的工作。

       然而,测试机器翻译软件是极具挑战性的。首先,机器翻译软件不同于传统软件的逻辑是用源代码编码的,它基于复杂的神经网络,有数百万个参数。因此,传统软件(大多基于代码)的测试技术是无效的。其次,最近关于测试人工智能(AI)软件的研究[2,29,36,37,46,62,68]关注于具有更简单输出格式的任务,例如,测试图像分类器,它输出给定图像的类标签。然而,作为最困难的自然语言处理(NLP)任务之一,机器翻译系统的输出(即(例如翻译的句子)要复杂得多。因为它们的结构不是用来处理这种复杂输出的,所以当应用于NMT模型时,典型的人工智能测试方法几乎只能找到“非法”输入,比如有语法错误或不太可能作为输入给出的明显拼写错误的句子。然而,这些错误并不是在实践中出现的问题;微信是一个月活跃用户超过10亿的messenger应用,据报道,其嵌入的NMT模型即使在句法正确的情况下也会返回较差的结果[96]。由于很难建立一个有效的、自动化的方法来评估翻译的正确性,目前的机器翻译软件测试方法有很多缺点。

       试图解决上述问题的方法仍然有其自身的缺陷——即,无法检测语法错误和缺乏真实世界的测试用例。当前机器翻译软件的测试程序通常包括三个步骤[96]:(1)收集双语句子对1和将它们分为培训数据、验证数据和测试数据;(2)计算训练好的NMT模型对测试数据的翻译质量分数(如BLEU[67]和ROUGE [48]);和(3)比较分数与预定义的阈值,以确定测试用例是否通过。然而,基于像BLEU这样的阈值分数的测试,很容易忽略语法错误。BLEU是对目标和参照的n个字母重叠程度的衡量。另外,在计算翻译质量分数(如BLEU)时,需要输入双语句子对,需要事先手工构建。测试,要使用训练集之外的真实用户输入进行需要大量的手工工作来进行基础真值翻译。因此,迫切需要一种能够自动检测机器翻译软件中的错误的有效的测试方法。

       为了解决上述问题,我们引入了结构不变测试(SIT),这是一种新颖的、广泛适用的机器翻译软件验证方法。关键在于,相似的原句,例如,只有一个词不同的句子,翻译结果通常是相似的句子结构。例如,图1展示了三个相似的英语源句和汉语目标句。前两个翻译是正确的,而第三个则不正确。我们可以看到,汉语中第三句的结构与其他两句有明显的不同。对于每个源句,SIT(1)通过NLP技术(即NLP)修改源句中的单个单词,从而生成一个类似句子的列表。bert[19]);(2)将所有的句子输入待测软件,获取译文;(3)使用专门的数据结构(即,选区解析树和依赖解析树)表示每个翻译句子的语法结构;(4)比较翻译后的句子结构。如果译文的原句和任何一个修改后的句子在结构上存在较大的差异,我们将修改后的句子和原句一起报告为潜在的错误。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

       我们申请SIT测试谷歌翻译和Bing微软翻译,从网上抓取200个源句作为输入。SIT成功地在谷歌翻译中发现64个错误问题(定义在第3节)和70个错误问题在Bing微软翻译高准确性(即。,分别为69.5%和70%的最高准确率)。报告的错误多种多样,包括翻译不足、过度翻译、不正确的修改、单词/短语错译和逻辑不清楚,这些都不能被广泛使用的度量指标BLEU和ROUGE检测到。不同翻译错误的例子如图2所示。源代码和数据集也是为了重用而发布的。注意,我们执行测试时的结果是谷歌Translate和Bing Microsoft Translator的快照。在2019年7月发布了我们的结果数据集之后,我们注意到最近一些报道的翻译错误已经得到了解决。

本文的主要贡献如下:

  • 它介绍了结构不变测试(SIT),一种新颖的、广泛适用的机器翻译软件验证方法;
  • 它描述了一个SIT的实际实现,通过采用BERT[19]来生成相似的句子,并利用语法分析器来表示句子结构;
  • 仅用从网上抓取的200个源句,就对SIT进行了评估,成功地找到了谷歌翻译中的64个bug和Bing微软翻译中的70个bug,且准确率很高;
  • 它讨论了SIT发现的各种错误类别,其中没有一个可以被最先进的度量标准发现。

2 A REAL-WORLD EXAMPLE

汤姆打算带他14岁的儿子大卫去海边苏黎世动物园。在他们去动物园之前,他在动物园的网站上查看了购买门票的信息,看到了下面这句德语句子:

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

汤姆来自美国,他不懂德语。为了弄清它的意思,Tom使用了谷歌Translate,这是一个由NMT models提供支持的流行翻译服务[86]。谷歌翻译返回以下英文句子:

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

然而,尽管大卫持有有效证件,动物园工作人员还是拒绝让他自由进入。工作人员发现,由于谷歌返回的错误翻译,他们误解了动物园的规定翻译。正确的翻译应该是:

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

这是一个真正的翻译错误,导致混乱,不愉快的经历。翻译错误也会导致极其严重的后果[17,57,65,80]。例如,一名巴勒斯坦男子因发帖说“早上好”而被以色列警方逮捕,而Facebook的机器翻译服务将其错误地翻译为希伯来语是“攻击他们”,英语是“伤害他们”[17,65]。这既表明了机器翻译软件的广泛依赖,也表明了它失败时的潜在负面影响。为了提高机器翻译软件的可靠性,本文提出了一种结构不变测试的通用验证方法,该方法可以自动准确地检测翻译错误,而不需要预言器。

3 APPROACH AND IMPLEMENTATION

       本节将介绍结构不变测试(SIT)并描述我们的实现。SIT的输入是一个未标记的单语句子列表,而输出是一个可疑问题列表。对于每一个原始的句子,SIT报告0(即。,没有错误的句子被发现)或一个问题(例如。,至少找到一个错误的句子)。每期包含:(1)原句及其译文;top-k farthest5生成源句及其翻译。原句对被报道的原因如下:(1)看到原句是如何被修改的可能帮助用户理解翻译系统出错的原因;(2)实际上,错误可能在于原句的翻译。

       图3说明了SIT的概述。在这个图中,为了简单和清晰,我们使用一个源句作为输入。SIT的关键洞见是相似的源句往往具有相似的句法结构的目标句。根据这一见解,SIT执行以下四个步骤

                (1)生成相似的句子。对于每个源句,我们通过修改句子中的一个单词来生成一个类似句子的列表。

                (2)收集目标句。我们将原始的和生成的相似的句子输入被测机器翻译系统,并收集它们的目标句子。

                (3)表示目标句子结构。所有的目标句都被编码为专门用于自然语言处理的数据结构。

                (4)检测翻译错误。并将译出的修饰句的结构与句子的结构进行了比较翻译句子。如果结构之间有很大的差异,SIT报告                  一个潜在的错误。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

3.1 Generating Similar Sentences

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

       为了测试结构的不变性,我们必须比较两个句法结构相同但至少有一个标记不同的句子。我们发现,给定一个输入句子,在一定的约束条件下,一次改变句子中的一个词,可以有效地生成一组结构相同、语义相似的句子。

       显式地,我们采用的方法是修改输入句子中的单个标记,用另一个具有相同词性的标记(POS)替换它6,从而生成一个备用句子。例如,我们将图4中源句中的“多毛”进行掩码,并将其替换为top-k个最相似的记号,从而生成k个相似的句子。我们对句子中的每个候选标记都这样做;为了简单和避免语法上的奇怪或不正确的句子,我们只使用名词和形容词作为候选标记。

       现在我们讨论替换标记的选择问题。选择一组替换标记的最简单算法可能涉及到使用单词嵌入[60]。可以选择与原句中给定标记具有高向量相似性和相同POS标记的单词作为修改后的句子中的替换词。然而,由于单词嵌入具有相同的价值,无论上下文如何,这种方法通常产生的句子不会出现在公共语言中。例如,单词“fork”可能与单词“plate”有很高的向量相似性,并且有相同的POS标签。然而,“He came to a fork in the road”这句话有意义,而“He came to a plate in the road”这句话则没有意义。

       相反,我们需要一个模型来考虑周围的单词,并提出一组替换,当插入这些替换时,就可以创建现实的句子。这样做的模型是蒙面语言模型(MLM)[59],灵感来自完形填空任务[78]。传销的输入是带有单个标记屏蔽的一段文本(即。,从句子中删除,并用一个特殊的指示符标记替换)。然后,模型的工作就是在给定的上下文中预测那个位置的标记。这种方法迫使模型学习不同令牌之间的依赖关系。由于单个单词可以适应许多不同的上下文,因此在某种意义上,该模型允许单个标记具有多个表示形式。因此,我们得到一组依赖于上下文的替换标记。虽然预测的令牌不能保证具有与原始令牌相同的含义,但如果传销是经过良好训练的,则很有可能带有新预测标记的句子在语法上是正确的,而且有意义。

       一个句子生成过程的例子如图4所示。在我们的实现中,我们使用了BERT[19],它是谷歌最近提出的一种最新的语言表示模型。开箱即用的BERT模型提供了预先训练好的语言表示,可以通过添加额外的轻量级softmax分类层进行微调,从而为广泛的与语言相关的任务创建模型,例如掩码语言建模。BERT接受了大量数据的训练,包括BooksCorpus(8亿单词)和英语维基百科(2500亿单词),其中隐藏语言任务是用于训练的两项主要任务之一。因此,我们相信BERT很适合我们方法的这一方面。

3.2 Collecting Target Sentences

       一旦我们从原来的句子中生成了一个相似的句子列表,下一步就是将所有的原句子输入到被测试的机器翻译软件中,并收集相应的翻译结果(即,目标句子)。我们随后分析结果以找出错误。我们使用谷歌s和Bing s机器翻译系统作为实验的测试系统。为了获得翻译结果,我们调用谷歌Translate和Bing Microsoft Translator提供的api,它们返回的结果与它们的Web接口相同[5,30]。

3.3 Representations of the Target Sentences

       接下来,我们必须对从被测翻译系统中获得的目标句子建模,因为这允许我们比较结构以检测错误。选择表达句子的结构会影响我们进行有意义比较的能力。我们最终想要的是一种精确地为句子结构建模的表示,同时提供两个值之间的快速比较。

       最简单和最快的方法是比较句子的原始形式:字符串。实际上,我们测试了这种方法,性能是合理的。但是,在很多情况下,这种方法都不适用。例如,句子“on Friday, we went to the movies”中的介词短语“on Friday”也可以放在句子的末尾,如“we went to the movies on Friday”。句子是可以互换的,但是字符编辑距离之类的度量标准将表明字符串之间的巨大差异。语法解析克服了上述问题。使用语法分析器,我们可以对字符串的语法结构和单词或单词组之间的关系建模。例如,如果解析正确,上面的两个示例句子在关系值和解析结构方面应该具有相同的表示。

3.3.1原始目标句。在这种方法中,我们让我们的目标句保持原来的格式,即。,作为字符串。在大多数情况下,我们可能会认为,在用一种语言编写的句子中编辑单个标记将导致在已翻译的句子中更改单个标记。假设替换标记的语法角色是相同的,这在所有机器翻译系统中都是理想的。然而,在实践中并不总是这样,因为介词短语,修饰语和其他成分可以经常被翻译系统放置在不同的位置,并生成语义相同、语法正确的句子。尽管如此,这个方法可以作为一个良好的基线。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

3.3.2选区解析树。部分解析是派生字符串语法结构的一种方法。它生成一组群体关系,显示一个词或一组词如何在一个句子中形成不同的单位。这组关系对于SIT特别有用,因为它将反映句子中短语类型的变化。例如,虽然一个介词短语可以放在多个位置产生一个意思相同的句子,但它的选民关系的集合是不变的。选区关系可以可视化为一棵树,如图5所示。选区解析树是一种有序的根树,其中非终端节点是组成关系,终端节点是单词。在形式上,在群体解析中,句子根据给定的上下文无关语法所概述的短语结构规则[14]被分解为它的组成部分。在我们的实验中,我们使用了Zhu等人[99]的移位-减少选区解析器,该解析器在Stanford s CoreNLP库[31]中实现。它每秒可以解析50个句子。

3.3.3依赖解析树。依赖解析同样派生字符串的语法结构。然而,所产生的关系集描述的是词语之间的直接关系,而不是词语如何构成一个句子。这组关系让我们对结构有了不同的见解,并且直观地对SIT很有用,因为它反映了单词之间如何相互作用的变化。在过去的15年中,依赖解析已经取得了很大的进展。基于神经网络的解析器[11]的引入极大地提高了解析速度和准确性。与shift-reduce选区解析器一样,基于神经网络的依赖关系解析器使用类似堆栈的系统,其中使用分类器选择转换。在这种情况下,分类器是一个神经网络,同样训练在注释树银行。在我们的实现中,我们使用了Stanford CoreNLP提供的最新的基于神经网络的解析器,它每秒可以解析大约100个句子。我们使用Universal Dependencies作为我们的注释方案,它是基于Stanford Dependencies[18]发展而来的。

3.4 Translation Error Detection via Structure Comparison

       最后,为了找出翻译错误,我们通过比较句子表征来寻找结构变异。无论句子被建模为原始字符串、单词嵌入或解析树,都有许多不同的度量来计算两个值之间的距离。这些度量标准往往是非常特定于领域的,并且彼此之间可能具有较低的相关性,这使得度量标准的选择非常重要。例如,像Word Mover s Distance[41]这样的度量会给我们一个0在两个句子“He went to the store”和“store He the went to”之间的距离,而字符编辑距离会给我们一个14的距离。我们探索了几个不同的度量标准来评估句子之间的距离:字符(Levenshtein)编辑距离、选区集差异和依赖集差异。

3.4.1 Levenshtein原句之间的距离。Levenshtein距离[44]通常称为“编辑距离”,它比较两个字符串,并通过计算将一个字符串转换为另一个字符串所需的最小字符编辑(删除、插入和替换)数量来确定它们之间的匹配程度。虽然该方法可能不能很好地展示句子之间的语法相似性,但它利用了这样一种预期,即编辑用一种语言编写的句子中的单个标记通常只会导致翻译句子中的单个标记的更改。因此,Levenshtein距离可以作为一个很好的基线度量。

3.4.2选区解析树之间的关系距离。为了评价两组选区关系之间的距离,我们将两组选区语法表之间的距离计算为各短语类型计数的绝对差之和,从而对句子修改后的变化情况有一个基本的了解。这一启发式背后的动机是,一个句子的成分应该保持相同的两个句子之间只有一个标志的同一部分的词性不同。在一个健壮的机器翻译系统中,这也应该反映在目标句中。

3.4.3依赖解析树之间的关系距离。类似地,为了计算两个依赖关系列表之间的距离,我们将每种依赖关系数量的绝对差相加。同样,其动机是当替换单个标记时,理想情况下单词之间的关系将保持不变。因此,在集合中的变化是合理的表明结构不变性被违反,推测有一个平移错误。

3.4.4距离阈值。利用上述指标之一,我们计算原始目标句和生成的目标句之间的距离。然后我们必须决定是否修改后的目标句与其对应的原目标句之间的距离足以表明存在翻译错误。要做到这一点,我们首先根据距离阈值进行过滤,只保留那些距离原始句子比所选阈值更远的句子。然后,对于给定的原始目标句,我们报告top-k (k也是一个选择参数)对目标句的最远修改。我们将距离阈值作为一个手动参数,因为用户可能根据他们的目标对最小化假阳性报告或最小化假阴性报告进行优先排序。在4.6节中,我们将展示不同阈值的权衡。对于每个原始句子,如果至少有一个已翻译生成的句子被认为有问题,则会报告一个问题。

4 EVALUATION

       在本节中,我们通过将其应用于谷歌来评估我们的方法翻译和必应微软翻译与现实世界未标记的句子从网络爬。我们的主要研究问题是:

                                              •RQ1:在机器翻译软件中找到错误的翻译的方法有多有效?

                                              •RQ2:我们的方法可以发现哪些类型的翻译错误?

                                              •RQ3:这个方法的效率如何?

                                              •RQ4:在实践中我们如何选择距离阈值?

4.1 Experimental Setup

       为了验证SIT的结果,我们手动检查每个报告的问题,并共同决定:(1)问题是否包含有bug的句子;以及(2)如果是,它包含何种翻译错误。所有实验都运行在Linux工作站上,使用6核Intel Core i7-8700 3.2GHz处理器,16GB DDR4 2666MHz内存,GeForce GTX 1070 GPU。Linux工作站运行64位Ubuntu 18.04.02, Linux内核为4.25.0。

4.2 Dataset

       通常,为了测试机器翻译系统,开发人员可以采用SIT,并将任何源句作为输入。因此,为了评估我们的方法的有效性,我们从网络上收集真实世界的源句。具体来说,输入句子是从CNN7(有线新闻网)文章中提取的,分为政治和商业两大类。数据集是从两类文章中收集的,因为我们打算评估SIT是否在不同语义上下文的句子上始终表现良好。

       对于每个类别,我们抓取了10篇最新的文章,提取了它们的主要文本内容,并将它们分割成一个句子列表。然后从每个句子列表中随机抽取100个句子作为实验数据集(共200个)。在这个过程中,包含超过35个单词的句子会被过滤,因为我们想要证明机器翻译软件即使对于相对简短的句子也会返回较差的结果。所收集数据集的详细信息如表1所示。

4.3 The Effectiveness of SIT

       我们的方法旨在使用未标记的句子自动查找翻译错误并报告给开发人员。因此,该方法的有效性在于两个方面:(1)报告的结果有多准确;(2)能找到多少错误的句子?在本节中,我们使用表1所示的数据集,通过应用SIT测试谷歌Translate和Bing Microsoft Translator来评估这两个方面。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

4.3.1评估指标

       SIT的输出是一个问题列表,每个问题包含(1)一个原始的源句及其翻译;(2) top-k报告生成的句子及其翻译(即距离源句翻译最远的k个翻译)。这里,我们将top-k准确度定义为在top-k所报告的句子或原始句子中至少有一个包含错误时所报告的问题的百分比。我们用这个作为SIT的精度度量。明确的,如果有一个车句子我top-k生成句子的问题,我们认为这个问题是准确和设置buддy (i (k)为真;其他我们buддy (i (k)为false。如果原句是车,报告为一个问题,然后我们还设置buддy (i (k)为true。给定问题I的列表,其top-k精度计算为

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

4.3.2结果

       Top-k准确性。结果如表2所示。SIT (Raw)、SIT(选区)和SIT(依赖性)是SIT实现,它们分别以原始句子、选区结构和依赖结构作为句子结构表示。表中的每个项都显示了top-k精度以及发现的错误问题的数量。在随后的讨论中,为了简洁起见,我们将SIT(选区)和SIT(依赖性)分别称为SIT (Con)和SIT (Dep)。

       我们观察到SIT (Con)和SIT (Dep)始终比SIT (Raw)表现得更好,这说明了句子结构表征的重要性。在SIT (Raw)中使用的度量,仅仅基于句子中的字符,是脆弱的,容易出现过多或过少的报道错误。例如,SIT (raw)可能会报告在单词级别不同但在句子结构相似的句子,从而导致误报。SIT (Con)和SIT (Dep)在top-k准确度和报告的错误问题数量方面取得了相当的性能。特别是,在测试Bing微软翻译时,SIT (Dep)报告了100个可疑问题。在这些问题中,有70个问题是在第一个报告的句子或原文中出现翻译错误的,准确率达到70%的第一名。SIT (Dep)在谷歌翻译和必应微软翻译中都有最好的性能。它成功地找到64个和70个错误问题,分别以69.5%和71%的最高1的准确性。SIT (Dep)也达到最高的3的准确性(73.9%和78%)。注意源句在同一问题上只有一个词的不同。因此,检查排名前三的句子不会比检查排名前一的句子花费更多的精力。

       此外,我们还研究了SIT是否会在生成的句子中引发新的错误。如表3所示,在所报告的问题中,谷歌翻译和Bing微软翻译器对原句的翻译分别出现了55和60个独特错误。除了这些错误之外,SIT还发现79和66个额外的唯一错误,这些错误只在生成的句子对中显示,而在原始句子中没有。因此,考虑到它极高的top-k精度和大量额外的独特错误报告,我们相信SIT在实践中非常有用。

       由于以下原因,我们没有将SIT的准确性与[96]和[97]进行比较。SIT针对的是一般的误译,而[96]侧重于翻译不足/过度。因此,我们没有进行经验上的比较。在错误类型和数量上,[96]只发现了原句翻译中存在的一些过译或过译错误,而SIT在原句和衍生相似句的翻译中都发现了一般错误。[97]需要有专门结构的输入句子,因此它不能使用我们的数据集检测任何错误。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

4.4 Translation Error Reported by SIT

       SIT能够发现各种翻译错误。在谷歌翻译和Bing微软翻译器的实验中,我们主要发现了5种翻译错误:翻译不足、过度翻译、修改错误、词/短语误译、逻辑不清。错误类型来源于机器翻译的错误分类方法。这五种错误中的每一种都是词法错误、语法错误或语义错误[34]的子集。我们以更直观的方式重新命名它们以帮助读者。为了让您对未发现的错误的多样性有一个大致的了解,本节重点介绍了所有5种错误的示例。表4给出了找到的翻译错误的统计数据。SIT发现的大部分翻译错误都是由于翻译不足、词/短语错译和逻辑不清楚造成的。

4.4.1 Under-Translation

       如果有些词没有翻译(即没有出现在翻译中),这是翻译不足的错误。图6给出了一个包含翻译错误的句子对。在这个例子中,“to Congress”没有被错误地翻译,导致目标句的语义意义不同。具体来说,“向国会撒谎”是违法的,而“撒谎”只是一种不恰当的行为。同样,第2节中介绍的实际示例也是由翻译不足的错误引起的。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

4.4.2 Over-Translation

       如果有些词不必要地多次翻译,或者目标句中的一些词不是从源句中的任何一个词翻译过来的,这就是过度翻译错误。在图7中,目标句中的“thought”并不是由源句中的任何单词翻译而来的,这是一种过度翻译的错误。有趣的是,我们发现过度转换错误经常伴随着一些其他类型的错误发生。该示例还包含一个翻译不足的错误,因为源句中的“were right”错误地没有翻译。在图2中的第二个例子中,单词“a”被不必要地翻译了两次,这使得它成为一个过度翻译错误。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

4.4.3 Incorrect Modification

       如果某些修饰语对句子中的错误成分进行了修饰,这是一种不正确的修饰错误。在图8中,修饰语“new”修饰源句中的“auto manufacturing”。但是,谷歌Translate认为“new”应该修改“hub”。在图2中,第三个例子还显示了一个有趣的不正确的修改错误。在这个例子中(“特权的囚徒”),“privilege”在源句中修饰“prisoners”,而谷歌Translate认为“prisoners”应该修饰“privilege”。我们认为在NMT模型的训练数据中,有一些类似的短语:“A of B”,其中A修改了B,这导致了在这个场景中出现了错误的修改错误。有趣的是,引发这个错误的原始句子是“但即便如此,他们仍然是特权的堡垒。”在最初的句子中,“堡垒”修饰了“特权”,这符合假定的原型。如我们所料,谷歌翻译正确地翻译了这句话。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

   Figure 8: Example of incorrect modification errors detected.

4.4.4 Word/phrase Mistranslation

       如果在目标句中出现了一些符号或短语的翻译错误,那就是词/短语错译错误。图9给出了这类错误的两个主要子类别:(1)一词多义的歧义和(2)翻译错误。

       Ambiguity of polysemy一词多义的模棱两可。每个标记/短语可能有多个正确的翻译。例如,admit的意思是“允许某人加入一个组织”或“勉强同意某事”。然而,通常在特定的语义语境中(例如,一个句子),一个标记/短语只有一个正确的翻译。现代翻译软件对一词多义的处理效果并不理想。在图9中的第一个例子中,谷歌Translate认为源句中的“admit”指的是“勉强同意某事”,导致了符号/短语误译的错误。

       Wrong translation错误的翻译。一个标记/短语也可能被错误地翻译成另一个语义上似乎不相关的意思。例如,图9中的第二个例子中,Bing微软翻译认为“South”指的是“South Korea”,导致了一个单词/短语的误译。

4.4.5 Unclear Logic

如果所有的符号/短语翻译正确,但句子逻辑不正确,这是一个不清楚的逻辑错误。在图10中,谷歌翻译正确的翻译了“服务于民选办公室”和“国家”。但是谷歌翻译产生了“serve in the elected office as a country”而不是“serve in the country in elected office”,因为谷歌翻译不理解两者之间的逻辑关系。NMT模型的翻译中普遍存在逻辑不清的错误,这在一定程度上反映了模型是否真正理解了某些语义。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

4.4.6 Sentences with Multiple Translation Errors

       所报告的句子对中有一定比例包含多个翻译错误。图11给出了一个包含三种错误的句子对。具体来说,源句中的“cover”指的是“reporting news”。但是,它被翻译成“hold”,导致了一个词/短语的误译。此外,目标句中的“church”并不是源句中任何一个词的翻译,是一种过度翻译的错误。微软翻译必应也误以为主题是“参加葬礼火车”。但是原句的意思是主语是“覆盖葬礼火车”,所以这是一个不清楚的逻辑错误。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

4.5 The Running Time of SIT

       在本节中,我们将评估SIT在两个数据集上的运行时间。我们使用3种不同的句子结构表示SIT来测试谷歌翻译和Bing微软翻译。我们将每个实验设置运行10次,并报告其平均值作为结果。SIT的总体运行时间如表5所示,SIT在谷歌Translate上各步骤的运行时间如图12所示(Bing s的结果与此相似)。我们可以看到,SIT使用原始句子作为结构表征是最快的。这是因为SIT (Raw)不需要任何结构表示生成时间。使用依赖解析器可以获得与SIT(原始)相当的运行时间。特别是,SIT (Dep)使用19秒解析2000+个句子(而不是SIT (Raw)用0秒),我们认为这是高效和合理的。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

       在这些实验中,我们对每个翻译系统运行翻译步骤一次,并在所有实验设置中重用翻译结果,因为其他设置对翻译时间没有影响。因此,在表5中,转换时间值对于不同的SIT实现是相同的。我们可以看到SIT花费了大部分时间收集翻译结果。在这一步中,对于每个句子,我们调用谷歌和Bing提供的api来收集翻译后的句子。在实践中,如果用户想用SIT测试他们自己的机器翻译软件,这一步的运行时间会少得多。最近的一项研究表明[92],目前的NMT模型使用单个NVIDIA GeForce GTX 1080 GPU每秒可以翻译大约20个句子。拥有更强大的计算资源(例如。g, TPU[86]),现代NMT模型可以达到每秒数百个句子的翻译速度,这将比我们的实验快2个量级。

       如表5和图12所示,SIT的其他步骤是非常有效的。坐(生)和坐(副)都花了大约1分钟,坐(Con)花了大约2分钟。与SIT (Dep)相比,SIT (Con)要慢一些,因为用于选区解析的模型要比用于依赖解析的模型慢。我们的结论是,作为一个离线工作的工具,SIT在实践中是有效的测试机器翻译软件。

《Structure-Invariant Testing for Machine Translation》笔记Structure-Invariant Testing for Machine Translation

4.6 The Impact of Distance Threshold

       如果翻译生成的句子和原始目标句子之间的距离大于距离阈值,SIT就会报告问题中的top-k句对。因此,这个距离阈值控制(1)报告的bug问题的数量和(2)SIT的top-k精度。直观地说,如果我们降低阈值,将报告更多的错误问题,而准确性将下降。图13显示了距离阈值对这两个因素的影响。在这个图中,SIT (Dep)被用于测试Bing微软翻译在我们的政治和商业数据集与不同的距离阈值。我们可以观察到,当阈值小或大时,bug问题的数量和top-1准确性保持稳定,而值在中间波动。在测试谷歌翻译时,改变距离阈值的影响是类似的。        基于这些结果,我们给出了一些实际使用SIT的指导。首先,如果我们打算发现尽可能多的翻译错误,我们应该使用一个小的距离阈值。一个小的阈值(例如,4为依赖集)在我们的所有实验设置中都工作得很好。特别是,使用一个很小的阈值,SIT报告的大多数问题都具有不错的准确性(例如,70%的最高1的准确性)。我们在4.3.2节的准确率实验中采用了这种策略。当开发者想要在发布前对软件进行集中测试时,他们可以使用SIT with small distance threshold。其次,如果我们想让SIT尽可能精确,我们可以使用一个较大的阈值(例如,15)。当阈值较大时,SIT报告的问题更少,但准确性非常高(例如,86%的最高1的精度)。考虑到网络上源句的数量是无限的,我们可以在很大的距离阈值下运行SIT,并定期报告问题。因此,我们认为SIT在实践中是有效且容易使用的。

4.7 Fine-tuning with Errors Reported by SIT

       在本节中,我们研究报告的错误句子是否可以作为一个微调集,以提高NMT模型的鲁棒性。微调是NMT中常见的做法,训练数据和目标数据通常会占据不同的领域[15,74]。具体来说,我们训练了一个全局注意[51]的编码器-解码器模型,这是CWMTcorpus with 2M bilingual sentence pairs [16]的一个子集上的NMT模型的标准体系结构。编码器和解码器是单向单层LSTMs。我们使用亚当优化器[40]来训练模型,计算每个历元后的验证集上的BLEU[67]分数。我们使用具有最佳验证BLEU分数的epoch参数的模型。请注意,我们在这里没有使用谷歌或Bing s的翻译模型,因为它们不是开源的;注意的编解码器模型是一种非常有代表性的NMT模型。

       为了测试NMT模型,SIT在40个英语句子上运行,这些句子从WMT 17[85]的验证集中选取,通过去除长句子(即长句子)。,并确保所有单词都在NMT model s词汇表中。注意,由于模型没有在来自该领域的数据上进行训练或验证,因此我们模拟了实际场景,其中真实世界的输入与模型训练数据不同。根据这些输入,SIT成功地找到了105个有错误的句子。我们对这105个句子进行了正确的翻译并对NMT模型进行了微调,以降低学习速率。经过这次调整,105个句子都能被正确翻译。同时,训练中使用的原验证集的BLEU分数提高了0.13,这在一定程度上说明其他句子的翻译也得到了提高。这展示了以高效和简单的方式修复SIT报告的错误的能力。关于构建健壮的机器翻译软件的SIT实用程序将在5.2节中进一步阐述。

5 DISCUSSIONS

5.1 False Positives

       SIT可以准确检测翻译错误,其精度可以进一步提高。特别是,SIT的假阳性来自三个主要来源。首先,生成的句子可能会产生奇怪的语义,导致目标句的结构发生变化。例如,基于短语“on the fact”,SIT的当前实现可以生成句子“on the fact”,这自然会有非常不同的中文翻译。使用BERT,它在我们的实验中提供了最先进的掩码语言模型,帮助缓解了这个问题。其次,尽管现有的语法解析器非常精确,但它们可能产生错误的选区或依赖结构,从而导致错误的报告错误。第三,一个源句可以有多个不同句子结构的正确翻译。例如,目标句“10年以后”和“10年以后”虽然句子结构不同,但可以互换使用。为了降低这些因素的影响,SIT按与原始目标句的距离排列,返回前k个可疑句对。

5.2 Building Robust Translation Software

       与测试传统软件类似,测试机器翻译的最终目标是构建健壮的软件。为此,SIT的实用程序如下。首先,所报告的误译通常作为早期警报,因此开发人员可以提前硬编码翻译映射,这是业界采用的最快的错误修复解决方案。第二,所报告的句子可以用作微调集,这在第4.7节中已经讨论过。第三,开发人员可能会发现报告错误的句子对很有用for进一步分析/调试,因为每对句子只相差一个单词。这类似于通过输入最小化/本地化来调试传统软件。此外,结构不变性概念可以作为归纳偏差来设计稳健的NMT模型,类似于Shen等人[75]在标准LSTMs中引入偏差的方法。与传统软件相比,机器翻译软件的调试和bug修复过程更加困难,因为NMT模型的逻辑主要取决于模型的结构和参数。虽然这不是我们工作的主要重点,但我们相信这是未来工作的一个重要研究方向。

6 RELATED WORK

6.1 Robustness of AI Software

       深度学习模型的成功使得人工智能(AI)软件在我们的日常生活中得到广泛应用。尽管深度学习模型精度较高,但其结果可能较差,其中一些甚至会导致致命事故。最近,研究人员设计了多种攻击深度学习(DL)系统的方法。保护DL系统免受这些攻击,优秀的研究进行了测试DL系统,协助调试过程[55],在线检测敌对的例子,或火车网络健壮的方式。与这些方法相比,我们的论文集中在机器翻译系统,这是这些工作没有探索。此外,这些方法中的大多数需要了解被测神经网络(白盒)中的梯度或激活值,而我们的方法不需要模型的任何内部细节(黑盒)。

6.2 Robustness of NLP Algorithms

       深度神经网络提高了许多NLP任务的性能,如阅读理解、代码分析和机器翻译。然而,近年来,受计算机视觉领域对抗性例子研究的启发,研究人员成功地发现了用于各种NLP系统的神经网络产生的bug。与我们的方法相比,这些工作集中在更简单的任务,如文本分类。        Zheng等人[96]分别介绍了两种检测翻译错误的算法:翻译不足和翻译过度。相比之下,我们提出的方法更系统,不局限于特定的误差。根据实验结果,我们可以发现以下错误:翻译不足、翻译过度、修改错误、多义词歧义、逻辑不清晰。Zhou和Sun[97]提出了一种变质测试方法(即, MT4MT)用于机器翻译;他们遵循一种类似于结构不变性的概念。然而,MT4MT只能与主谓宾模式的简单句子一起使用(例如,“汤姆喜欢耐克”)。特别是,它们会更改一个句子中的人名或品牌名,并检查翻译是否存在多个标记。因此,MT4MT不能报告来自现实世界中大多数句子的错误,比如我们在论文中使用的数据集。此外,MT4MT没有提出通用技术来实现他们的想法。我们的工作引入了一种有效的实现方法,通过非平凡的技术(例如,采用BERT进行单词替换和利用语言分析器来生成句子结构),并进行了广泛的评估。

6.3 Machine Translation

       过去几年见证了神经机器翻译(NMT)体系结构的快速发展[32,86]。典型地,一个NMT模型使用一个有注意的编码器-解码器框架[92]。在这个框架下,研究人员设计了各种先进的神经网络结构,从递归神经网络(RNN)[52,76]、卷积神经网络(CNN)[27,28]到不存在递归或卷积的全注意力网络[83]。现有的论文旨在提高NMT模型的性能。与它们不同的是,本文重点研究了NMT模型的鲁棒性。我们认为,在实际中,对于机器翻译来说,鲁棒性与准确性同样重要。因此,我们提出的方法可以补充现有的机器翻译研究。  

6.4 Metamorphic Testing

       变形测试是一种基于已有的测试用例生成测试用例的方法[12,13,73]。关键思想是检测具有不同输入的程序的多次运行的输出中特定于领域的变形关系的违反。变形测试已经被应用于测试各种传统软件,如编译器[43,47]、科学库[93]和数据库系统[50]。由于它在测试“不可测试”程序上的有效性,研究人员也使用它来测试AI软件,如统计分类器[63,87]、搜索引擎[98]和自动驾驶汽车[79,95]。本文介绍了一种新颖的、应用广泛的机器翻译软件变形测试方法——结构不变测试。  

7 CONCLUSION

       本文提出了一种新的、有效的机器翻译软件测试方法——结构不变测试(SIT)。SIT的显著优点是它的简单性和通用性,因此具有广泛的适用性。SIT已经被用于测试谷歌翻译和Bing微软翻译器,并成功地发现64个和70个错误问题,最高准确率分别为69.5%和70%。此外,作为一种通用的翻译方法,SIT可以发现各种先进的翻译方法无法发现的翻译错误。我们相信,这项工作是走向机器翻译软件系统测试的重要的第一步。在未来的工作中,我们会继续完善一般方法,并将其扩展至其他人工智能软件(例如图像字幕工具和人脸识别系统)。我们还将开展广泛的努力,帮助持续测试和改进广泛使用的翻译系统。                                                            

继续阅读