AI Challenger 2018 机器翻译参赛总结
金山集團 AI Lab 組隊參加了 AI Challenger 2018 全球挑戰(zhàn)賽的英中機器翻譯項目,并且獲得冠軍。?
AI Challenger 2018 主題為"用 AI 挑戰(zhàn)真實世界的問題",是目前國內(nèi)規(guī)模最大的科研數(shù)據(jù)集平臺、最大非商業(yè)化競賽平臺,最關(guān)注前沿科研與產(chǎn)業(yè)實踐相結(jié)合的數(shù)據(jù)集和競賽平臺,也是 2018 年度中國超高水準的 AI 競賽。本次比賽使用的數(shù)據(jù)總量達到 1300 萬句對,其中具有上下文情景的中英雙語數(shù)據(jù)達到 300 萬句對,相比去年大幅擴容。?
在此,參賽團隊就技術(shù)和經(jīng)驗做一些分享,希望對大家有幫助。
工具介紹
機器翻譯的開源庫很多,比如 OpenNMT、FairSeq 和 tensor2tensor 等,我們主要是基于 tensor2tensor 等工具庫進行的程序?qū)崿F(xiàn)。它是 Google 基于 TensorFlow 開發(fā)的高級庫,內(nèi)置了許多經(jīng)典模型,開發(fā)調(diào)試比較方便。?
我們使用了 3 臺 V100 GPU 服務器及 1 臺 32 核的 CPU 服務器作為主要的實驗設(shè)備。?
我們選用 Transformer 模型作為我們的 baseline 模型。
數(shù)據(jù)清洗
優(yōu)質(zhì)的數(shù)據(jù)不管在哪個領(lǐng)域下都是有益的。對于一個任務來說,我們首先要進行的就是數(shù)據(jù)的分析及清洗。數(shù)據(jù)清洗的一個通常操作就是去除重復數(shù)據(jù),原始語料中存在著 6.56% 的重復,共約 90w 個樣本,對這些樣本我們進行了去重操作,一般直接刪去即可。
另外我們對源句子與目標句子長度比例進行了檢測,當長度比超過一定的閾值時我們就將對應的平行語句對進行刪除。
同時我們還注意到有一部分語料存在著對齊錯誤,對此我們使用了 giza++ 對訓練數(shù)據(jù)進行了對齊并獲得一份雙語詞典。使用獲得的雙語詞典我們就可以對平行語料進行漏翻檢測,通常我們會對語料的漏翻程度進行打分,分值超過一定閾值時,我們就會刪除對應的語料。
下表可以看到,分值越低,刪除的語料越多,結(jié)果有了些許提升。
數(shù)據(jù)增廣
在本次比賽中,我們使用了兩種數(shù)據(jù)增廣手段,分別是回譯和交換。?
NMT 中用回譯的方法擴充語料是常用的數(shù)據(jù)增廣技術(shù),見 Facebook 在 WMT18 英譯德的冠軍論文 Understanding Back-Translation at Scale?[1]。在該論文中,僅依靠回譯生成的語料做數(shù)據(jù)增廣就能將 BLEU 提高 1 至 2 個點。?
在回譯時,我們基于現(xiàn)有語料訓練了一個從目標語言到源語言(中翻英)的翻譯模型。將目標語言語料輸入該模型就能獲得對應的源語言語料,將二者結(jié)合后就得到了新的平行語料。當然,在 Facebook 的論文中,他們使用了 226M 的單語語料去生成數(shù)據(jù)。
本次比賽不允許使用外部數(shù)據(jù),所以我們直接使用原始預料中的中文部分進行生成。但是,這種方法會存在一個問題,就是新的平行語料與原始語料可能存在重復。針對這個問題,我們在解碼端加入了一定的隨機噪聲,從而避免了這種情況。?
我們還使用了交換的方法,將原始語料中的英文語料的相鄰的詞都交換了一遍。其實,把交換作為數(shù)據(jù)增廣的手段有些牽強。交換的實際目的是為了增強模型的抗噪能力,但是我們還是通過交換語料的語序擴充了實驗數(shù)據(jù),所以把它算作數(shù)據(jù)增廣的一種手段。?
從表格中可以看到兩種方法單獨使用時都有了一定的提升,說明數(shù)據(jù)增廣技術(shù)還是有一定效果的。
但是需要注意的就是兩種方法同時使用時效果會有一些下降。
模型改進
獲得語料后,我們就開始嘗試在模型層面進行一些改進。?
在分詞實驗時,我們共使用了三種分詞方法,分別是 tensor2tensor 中默認的分詞方式,還有基于 character 級別的分詞和使用 SentencePiece 的分詞,后兩種分詞方法較第一種均有 1 個 bleu 值的提升。?
我們還使用了 relative transformer,這個模型在 transformer_big 參數(shù)條件下提升了 0.3 個 bleu 值。模型細節(jié)詳見 Self-Attention with Relative Position Representations?[2]。?
基于 transformer,我們提出了一種新的模型結(jié)構(gòu),叫做 layer-attention。
▲?模型結(jié)構(gòu)圖
該模型,在 transformer_big 參數(shù)下,在 newstest2014_ende 上面提升了 0.9 個 bleu 值。上圖為原始的 transformer,從圖中我們可以看到 transformer 是將 encoder 端最后一層的信息直接輸出給 decoder 端。
而我們的改進,是將 encoder 端所有層的輸出進行了加權(quán)求和,然后將求和后得到的結(jié)果輸入到 decoder 端中。因為時間原因,我們并沒有在本次比賽的測試集數(shù)據(jù)上單獨測試該模型的效果,而是將其使用在了最后的 rerank 中。?
另外,在本次比賽給出的數(shù)據(jù)集中,約有 300w 的語料包含上下文信息,為了使用這些信息,我們使用了一種可以將上下文信息引入的模型叫做 contextual trasformer,模型結(jié)構(gòu)見下圖。
具體細節(jié)及實驗設(shè)置見論文 Improving the Transformer Translation Model with Document-Level Context [3]。該模型在 transformer_base 條件下有了 0.5 個 bleu 的提升。
Contextual Transformer 就是在原始 transformer 的基礎(chǔ)上引入了額外的 context encoder,并且在 transformer 的 encoder 和 decoder 端加入了 Context Attention 層。?
這種結(jié)構(gòu)增加了模型捕捉上下文信息的能力,并且因為依舊使用的 multihead 并行計算,所以訓練和解碼速度并沒有下降很多。
Finetune
finetune 就是使用少量的語料進行預訓練模型的微調(diào)。如果使用過預訓練的語言模型(如 ELMo,GPT 或 BERT),那么對于 finetune 就不會陌生。本次比賽中,我們使用與測試語句相似的句子作為 finetune 語料,在現(xiàn)有模型基礎(chǔ)上進行微調(diào)。?
我們對測試語料與訓練語料進行了相似度打分并排序,從中選取出了與每句測試語句相似度最高的訓練語料作為最終的 finetune 語料。
從表格的第一行我們可以看到,測試語句中 Send them to these foreign places” 與微調(diào)語料 a1 只有最后的符號不同。而第二行中的測試語句 the necessary excitation, even using crude natural crystals. 為兩個微調(diào)語料 b1 和 b2 的結(jié)合。
經(jīng)過這樣的 fineune 訓練后,我們的模型對于測試集的數(shù)據(jù)勢必有所傾向。finetune 后的翻譯表現(xiàn)也驗證了我們的猜想。
從表格中第一行可以發(fā)現(xiàn),Her secret is putting butter under the skin. 這句話的正確意思是她的秘訣是在雞皮下面抹黃油。但是在微調(diào)前,我們得到的釋義是她的秘訣是把黃油涂在皮膚上。而在 finetune 后我們得到了正確的釋義把黃油粘在雞皮上。這也說明 finetune 可以幫助我們獲得了一些詞在某些語境下的正確釋義。?
而第二行中,方括號內(nèi)的語句 [Woman On P. A.],在 finetune 前并沒有被翻譯,但是經(jīng)過 finetune 后可以看到我們獲得了該句的翻譯,[P.A.上的女人] ,可見 finetune 也可以幫助我們降低漏翻的概率。
Rerank
通過前面介紹的不同方法和嘗試,我們獲得了很多不同的模型。這些模型有的訓練數(shù)據(jù)集不同,有的分詞方式不同,有的模型結(jié)構(gòu)不同,有的還進行了 finetune。我們將這些模型都做保留,目的就是為了保持不同模型的差異性,用于進行后續(xù)的 rerank 實驗。?
在我們得到的所有結(jié)果中,他們的分值表現(xiàn)各不相同,但是勢必會存在這樣一種情況,BLEU 值較高的結(jié)果文件中也會出現(xiàn)翻譯不好的語句,而 BLEU 值較低的文件中同樣也會出現(xiàn)翻譯比較好的語句。?
我們的目標就是將盡可能多的的翻譯較好的語句篩選出來,組成最終的結(jié)果。為此我們進行了一些嘗試。?
我們將解碼時返回的 beam_score 作為排序分值依據(jù),但是不同的模型有不同的表現(xiàn),所以就很難在統(tǒng)一的度量下進行排序。所以針對不同的模型我們引入了不同的權(quán)重。使用 beam_score×weight 作為每個翻譯結(jié)果的最終分值,通過篩選獲得了最終的結(jié)果。?
因此,如何去獲得準確的權(quán)重成為了一個問題。我們首先通過人工調(diào)整嘗試性地給出了一份權(quán)重值,但是顯然,對于 16 個模型來說,僅依靠人工調(diào)參無法遍歷整個權(quán)重參數(shù)搜索空間。于是我們想到了貝葉斯調(diào)參。我們使用貝葉斯調(diào)參搜索出了一些權(quán)重參數(shù),但是相較我們手動調(diào)整的參數(shù)提升并不是很大。?
于是我們提出了一種新的隨機參數(shù)搜索方案,如下圖所示。我們首先給出權(quán)重參數(shù) U 和隨機搜索參數(shù) P,然后使用 U 獲得了結(jié)果文件 Y。基于 U 和 P 通過隨機搜索函數(shù)獲得了新的參數(shù) U’,基于 U’ 獲得了新的結(jié)果文件 Y’,比較 Y 和 Y’ 的分值情況,我們選擇保留最好結(jié)果所對應的權(quán)重參數(shù)。
我們最后選用在驗證集上表現(xiàn)最好的參數(shù),使用在了測試集上。
下圖為最終的結(jié)果從各個模型中抽取的數(shù)量分布,從圖中可以看到 valid,testA,testB 抽取的分布是大致一樣的,這也證明了我們 rerank 方法是穩(wěn)定且有效的。
從圖中我們還發(fā)現(xiàn)主要從 3 個模型中進行了抽取,分別是基于 Character 級別的,基于 context,基于 SentencePiece 和 finetune 的。?
從抽取分布圖可以看出,從 finetune 的模型中抽取的數(shù)據(jù)并沒有想象的那么多,對此我們進行了另外的嘗試。我們利用投票機制,首先使用 finetune 的模型進行投票,將 finetune 模型中大部分相同的語句直接抽取出來作為最終的結(jié)果,剩余的結(jié)果依舊使用隨機參數(shù)搜索方案進行抽取。?
此外除卻上面的 beam_score * weights 方案,我們還嘗試使用語言模型對翻譯的句子進行打分,然后選取分值最高的句子。但是該方法效果略差于前兩者,所以最終我們選擇使用第一種方案,即按照 beam_score * weights 作為最終的排序依據(jù)。
結(jié)語
金山集團 AI Lab 組建只有不到兩年,是一只年輕的隊伍,我們會持續(xù)在機器翻譯等領(lǐng)域深入研究,希望對 AI 業(yè)界有所貢獻。
參考文獻
[1] Sergey Edunov, Myle Ott, Michael Auli, David Grangier. Understanding Back-Translation at Scale. EMNLP 2018.
[2] Peter Shaw, Jakob Uszkoreit, Ashish Vaswani. Self-Attention with Relative Position Representations. NAACL 2018.
[3] Jiacheng Zhang, Huanbo Luan, Maosong Sun, FeiFei Zhai, Jingfang Xu, Min Zhang, Yang Liu. Improving the Transformer Translation Model with Document-Level Context. EMNLP 2018.
點擊以下標題查看更多往期內(nèi)容:?
自動機器學習(AutoML)最新綜述
圖神經(jīng)網(wǎng)絡綜述:模型與應用
近期值得讀的10篇GAN進展論文
自然語言處理中的語言模型預訓練方法
從傅里葉分析角度解讀深度學習的泛化能力
兩行代碼玩轉(zhuǎn)Google BERT句向量詞向量
近期知識圖譜頂會論文推薦,你都讀過哪幾篇?
TensorSpace:超酷炫3D神經(jīng)網(wǎng)絡可視化框架
深度長文:NLP的巨人肩膀(上)
NLP的巨人肩膀(下):從CoVe到BERT
#投 稿 通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢??答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學習心得或技術(shù)干貨。我們的目的只有一個,讓知識真正流動起來。
??來稿標準:
? 稿件確系個人原創(chuàng)作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發(fā),請在投稿時提醒并附上所有已發(fā)布鏈接?
? PaperWeekly 默認每篇文章都是首發(fā),均會添加“原創(chuàng)”標志
? 投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發(fā)送?
? 請留下即時聯(lián)系方式(微信或手機),以便我們在編輯發(fā)布時和作者溝通
?
現(xiàn)在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關(guān)注」訂閱我們的專欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點擊 |?閱讀原文?| 獲取最新論文推薦
總結(jié)
以上是生活随笔為你收集整理的AI Challenger 2018 机器翻译参赛总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 直播 | 平安人寿资深算法工程师姚晓远:
- 下一篇: 基于知识图谱的问答系统入门—NLPCC2