天天看點

《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可以發現各種先進的翻譯方法無法發現的翻譯錯誤。我們相信,這項工作是走向機器翻譯軟體系統測試的重要的第一步。在未來的工作中,我們會繼續完善一般方法,并将其擴充至其他人工智能軟體(例如圖像字幕工具和人臉識别系統)。我們還将開展廣泛的努力,幫助持續測試和改進廣泛使用的翻譯系統。                                                            

繼續閱讀