機器翻譯是計算語言學的一個分支,是人工智能的終極目標之一,具有重要的科學研究價值。同時,機器翻譯又具有重要的實用價值。隨著經(jīng)濟全球化及互聯(lián)網(wǎng)的飛速發(fā)展,機器翻譯技術在促進政治、經(jīng)濟、文化交流等方面起到越來越重要的作用。機器翻譯雖已廣泛應用于各個領域,但現(xiàn)有神經(jīng)網(wǎng)絡測試工作均未在自然語言處理的模型上進行過測試。然而,研究發(fā)現(xiàn)在這些翻譯模型中存在不一致性問題。發(fā)表于 ICSE 2020 的論文《Automatic Testing and Improvement of Machine Translation》率先對機器翻譯進行測試,并提出了一種用于檢測及修復神經(jīng)網(wǎng)絡翻譯器中所存在的不一致性問題的方法——TransRepair。TransRepair 結(jié)合了變異測試及蛻變測試兩種方法以檢測不一致性問題。對于所檢測的問題,提出了一種基于概率的后處理方法以對該問題進行修復。本期 AI Time PHD 直播間,我們很榮幸地邀請到論文的一作,北京大學孫澤宇博士為大家分享他們的研究成果!
孫澤宇,北京大學信息科學技術學院 2019 級博士生,導師為張路教授,指導老師為熊英飛研究員。主要研究方向為程序自動生成和軟件測試,已在相關領域的國際頂級會議如ICSE, AAAI, IJCAI, FSE等發(fā)表多篇論文。
研究動機:機器翻譯的不一致性
隨著機器學習的發(fā)展,多用途的自然語言翻譯系統(tǒng)相繼問世,許多系統(tǒng)能夠?qū)崟r有效地在數(shù)千種語言之間進行翻譯。然而事實上,大多翻譯系統(tǒng)并不完美,存在大量翻譯上的錯誤。研究發(fā)現(xiàn),人為的誤譯可能造成非常嚴重的后果,成為改變歷史的導火索。例如,19 世紀末著名的《烏查里條約》誤譯事件。由于意大利對條約第17條錯誤的翻譯,最終導致了意大利和埃塞俄比亞兩國爆發(fā)戰(zhàn)爭。
同樣,機器翻譯的誤譯也會造成困惑及誤解。例如,將傳統(tǒng)小吃“四喜烤夫”翻譯成“roasted husband”,將“小心滑倒”譯為“slip and fall down carefully”等。更為嚴重地,出現(xiàn)不公平性現(xiàn)象,對特定的用戶群體造成傷害。圖1顯示了幾個語言對(英語→中文)的谷歌翻譯結(jié)果,當主語是“men”或“male students”,將“good”翻譯成“很好的 (very good)”,然而當主語是“women”或“female students”時,則將“good”翻譯成“很多 (a lot)”,這種不一致性不僅會讓用戶感到困惑,而且顯然對計算機科學領域的女性研究人員也不公平。與進行“very good”研究相比,進行“a lot”研究明顯是一種更具貶義的解釋。為了避免這種翻譯錯誤,需要能夠自動識別和糾正不一致性的技術。
圖1 翻譯不一致產(chǎn)生的公平問題的示例
方法:如何解決不一致性問題
針對機器翻譯中的不一致性問題,傳統(tǒng)機器學習系統(tǒng)的修復方法一般是使用數(shù)據(jù)增強或算法優(yōu)化,提高機器學習的整體性能,不針對單個錯誤進行特定修復;同時還需要數(shù)據(jù)收集、標注和模型的再訓練,通常來說成本很高。
另外,傳統(tǒng)修復軟件錯誤的方法是白盒,當識別出需要修改的源代碼后才能進行修復,但這種方法不能用于修復源代碼不可用的軟件,比如第三方代碼。
圖2 不一致性問題的傳統(tǒng)修復方法
為改進傳統(tǒng)修復方法存在的缺陷,孫澤宇等提出了一種用于檢測及修復神經(jīng)網(wǎng)絡翻譯器中所存在的不一致性問題的組合方法——TransRepair,結(jié)合變異測試及蛻變測試的方法對不一致性問題進行測試,并通過黑盒和灰盒兩種方式自動修復在測試階段發(fā)現(xiàn)的翻譯錯誤。
圖3 TransRepair方法
TransRepair 測試及修復概述
圖4 TransRepair測試及修復不一致性問題概述
圖4為 TransRepair 測試及修復的過程概述,主要有以下三個步驟:
1) 自動測試輸入生成生成用于一致性測試的句子,對每個句子使用上下文相似的單詞進行替換,生成的候選變異句使用語法檢查進行篩選,通過篩選的變異句將作為被測機器翻譯的輸入。
2) 自動測試oracle生成根據(jù)翻譯輸入和輸出之間的蛻變關系,生成oracle以識別不一致的翻譯,思想是,翻譯原句與其上下文相似變異句的輸出應具有一定程度的一致性。使用相似度指標衡量翻譯輸出和oracle的一致性程度。
3)自動不一致性修復自動修復具有不一致性的翻譯,有黑盒和灰盒兩種方法,根據(jù)變異中最優(yōu)的翻譯對原譯文進行轉(zhuǎn)換。考慮兩種最優(yōu)翻譯的選擇方法,一種是預測概率法,另一種是交叉引用法。
一、測試
測試第一步是構建上下文相似語料庫。進行上下文相似的單詞替換的關鍵步驟是,找到一個可以被其他相似單詞替換、且不影響句子結(jié)構的單詞,替換生成的新句應與原句的翻譯一致,單詞之間的相似度通過詞向量進行衡量。
為了構建一個可靠的上下文相似語料庫,采用 GloVe、SpaCy 兩種詞向量模型,并使用其訓練結(jié)果的交集。當兩個單詞在兩個模型中的相似度都超過 0.9 時,則認為它們是上下文相似的,將這對單詞放入上下文相似語料庫中,得到變異算子。以圖 5 的句子為例,通過計算詞向量相似度,衡量句中“Male”和“Female”能否進行替換?在設定的標準下,答案是可替換的。
圖5 上下文相似語料庫構建
構建好上下文相似語料庫后,下一步進行翻譯輸入變異。首先是單詞替換,對于原句中的每個單詞,在語料庫中搜索是否存在匹配單詞,如果找到了一個匹配的詞,替換并生成變異句。同一單詞在不同語境下意思或許有所不同,但上述替換只考慮了整體語境,忽視了具體情況下的差異,因此替換的單詞可能不適合新句子的上下文,導致生成的變異句無法解析。
為解決此類解析失敗問題,提出通過附加約束來檢測變異句的合理性,基于 Stanford Parser 進行結(jié)構過濾。分析得到原句和變異句的語法樹,假設二者結(jié)構相同,則認為對原句的變異在結(jié)構上是合理的,反之不合理,從候選中刪除。
圖6 翻譯輸入變異
通過對原句和變異句的翻譯結(jié)果進行比較,測試翻譯是否具有一致性。具體做法是對原句和變異句的譯文進行切片,刪除部分得到不同子序列并分別計算它們的相似度。相似度計算主要采用 Tf-idf, BLEU, LCS, ED 等幾種常用方法,使用最高相似度作為最終一致性評分的結(jié)果。當最終相似度小于設定的閾值時,認定為翻譯不一致。
圖7 翻譯不一致性測試
二、黑盒和灰盒修復
發(fā)現(xiàn)問題就要解決問題,下一步工作是對識別出的不一致性問題進行修復。同樣以之前的句子為例,在將“Male”改為“Female”之后,對“good”的翻譯從“很好”變?yōu)榱恕昂芏唷?,那么究竟哪個翻譯是正確的還是都不正確?首先任取一句話作為原句,然后通過上述測試同樣的方法對句子進行變異,生成變異句并進行翻譯。使用預測概率(Predictive probability)或交叉引用(cross reference)對原句及變異句的譯文進行排序,排序高者為候選目標翻譯,再利用詞對齊(Word Alignment)尋找單詞之間的映射關系,生成最終修復后的翻譯結(jié)果。
其中,利用預測概率意在選擇出現(xiàn)概率最高的譯文成為修復依據(jù),是一種灰盒修復方法,既不需要訓練數(shù)據(jù),也不需要訓練算法的源代碼,只需要機器翻譯提供的預測概率。而交叉引用是計算譯文之間的相似度,兩兩比較后找到與其他句子相似度最高的譯文,是一種黑盒修復方法,只需要翻譯器的輸出。
圖8 不一致性問題修復
圖9 詞對齊后的翻譯結(jié)果
TransRepair的模型評估
TransRepair能夠自動檢測和修復機器翻譯中的不一致性問題,那么模型性能究竟如何,還需要進行評估。對TransRepair的評估主要圍繞以下三個問題:
問題一
TransRepair測試輸入的準確度?
問題二
TransRepair發(fā)現(xiàn)bug的能力?
問題三
TransRepair修復bug的能力?
評估實驗主要通過谷歌翻譯和 Transformer 模型兩個機器翻譯器進行,測試數(shù)據(jù)集為News Commentary。對于每個測試句,生成變異句并檢查它們是否通過了結(jié)構過濾。2001 個測試句一共生成 21960 個變異句,過濾掉 17268 句保留 4692 句作為測試輸入,隨機抽取 400 句手動評估它們是否能夠檢測翻譯不一致性,查看變異句的替換詞是否會導致語法錯誤、變異體的翻譯是否與原句一致。這一驗證步驟發(fā)現(xiàn)了三個無效的變異句,其余的 397 句符合有效性標準,準確率為 99%,說明 Transformer 有很高的概率能夠產(chǎn)生有效的測試句。
圖10 測試輸入準確度
使用谷歌翻譯和 Transformer 對 4692 個變異句進行翻譯,將它們與原始句的翻譯進行比較,計算每個變異句的四種一致性得分,圖 11 右邊為一致性得分直方圖,四種度量都發(fā)現(xiàn)了大量得分低于 1.0 的翻譯,表明翻譯存在不一致性。圖 11 左邊為四種度量不同閾值下的不一致翻譯個數(shù),可以看到即使在一致性閾值較寬松時,bug 依然存在。
圖11 一致性指標值
手動檢查變異句和原句的翻譯,不一致錯誤的條件為:1)有不同的含義;2) 有不同的情感色彩;3)專有名詞使用了不同的字符表示。最后結(jié)果如圖12,可以看出Transformer 在發(fā)現(xiàn) bug 問題上能夠有很好地表現(xiàn)。
圖12 Transformer發(fā)現(xiàn)bug能力的實驗結(jié)果
對所有不一致的翻譯進行修復,檢驗 Transformer 對 bug 的修復能力,修復結(jié)果對比見圖 13。黑盒平均減少了谷歌翻譯 28% 的 bug,灰盒修復了 Transformer 30% 的 bug、黑盒修復了 19% 到 20% 的 bug,表明灰盒和黑盒方法是修復不一致缺陷的有效方法。
圖13 Transformer不一致性修復結(jié)果
手動比較修復前后的翻譯一致性&修復前后翻譯的可接受性(原句和變異句),考慮充分性和流利性,手動出“Improved”、“Unchanged”或“Decreased”標簽,結(jié)果見圖 14。表明 TransRepair 在提高翻譯一致性方面有很好的效果,平均 87% 的谷歌翻譯和 Transformer 翻譯的一致性提高了。
圖14 Transformer修復bug能力的實驗結(jié)果
擴展分析和討論
之前的工作采用了數(shù)據(jù)增強的方法提高機器學習模型的魯棒性,對于源代碼已知的翻譯器,訓練數(shù)據(jù)增強是增加翻譯一致性的方案之一,因此設計實驗研究添加更多的訓練數(shù)據(jù)是否會產(chǎn)生更好的翻譯一致性。使用 10%, 20%, ..., 90% 的原始訓練數(shù)據(jù)分別訓練 Transformer,結(jié)果見圖 15,當比例在 0.7 到 1.0 之間時,沒有觀察到 bug 下降的趨勢,這說明增加訓練數(shù)據(jù)對改善翻譯不一致性的效果有限。
圖15 數(shù)據(jù)增強實驗結(jié)果
在不一致檢測和修復過程中都會產(chǎn)生變異句,為了研究變異句的數(shù)量如何影響檢測和修復性能,比較不同設置下不一致的 bug 數(shù)和修復的 bug 數(shù),灰盒修復結(jié)果如圖 16 所示。可以看到在檢測時,使用更多的變異句有助于發(fā)現(xiàn)和修復更多不一致的問題。
圖16 不同變異句數(shù)量比較結(jié)果
TransRepair 可以應用到端到端模型上,給定輸入和翻譯器,將自動測試和修復翻譯輸出,并向用戶提供新的翻譯輸出。圖 17 是 TransRepair 的幾個具體使用示例。
圖17 TransRepair使用示例
總結(jié)來說,TransRepair 通過黑盒和灰盒方法,在自動測試和修復機器翻譯不一致性問題上具有很好的表現(xiàn)。不需要源代碼,不需要訓練數(shù)據(jù),能夠修復特定錯誤,不僅成本較低,還具有高效、實時、靈活等優(yōu)點。
點擊閱讀原文,下載本次報告!喜歡本篇內(nèi)容,請分享、點贊、在看
(免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權或存在不實內(nèi)容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內(nèi)容或斷開相關鏈接。 )