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