分享嘉賓:張志銳博士 阿里達(dá)摩院 算法專家 編輯整理:曾輝 出品平臺:DataFunTalk 導(dǎo)讀:本文的主題為阿里多語言翻譯模型的前沿探索及技術(shù)實(shí)踐,將分三個部分介紹阿里巴巴在機(jī)器翻譯方面的工作:首先是多語言神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯的動機(jī)、定義和挑戰(zhàn);其次是阿里在機(jī)器翻譯方面的前沿探索;最后介紹多語言神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯在阿里巴巴的應(yīng)用。 多語言機(jī)器翻譯的好處與挑戰(zhàn) 機(jī)器翻譯的目標(biāo)是讓全世界沒有語言障礙。現(xiàn)在整個世界有6000種語言,但其實(shí)只有很少種語言(幾百種)能在網(wǎng)絡(luò)上搜索到,其中有200多種語言涵蓋了大多數(shù)國家。阿里巴巴想要通過技術(shù)快速支持這200多種語言的翻譯,然后擴(kuò)展整個阿里巴巴的商業(yè)邊界。 200多種語言互譯的話就會有四萬多種語言對,對阿里巴巴團(tuán)隊(duì)來說,同時handle四萬多種翻譯方向無論是在模型還是數(shù)據(jù)處理方面都是極其困難的。 因此阿里的策略是采用多語言機(jī)器翻譯,本質(zhì)很簡單,就是用一個模型來處理所有的翻譯方向。 這樣的話一個模型可以處理四萬多個語言對。 多語言機(jī)器翻譯有哪些好處? ① 首先多語言機(jī)器翻譯采用獨(dú)一的模型框架,它可以減少一些部署或訓(xùn)練開銷。 ② 統(tǒng)一訓(xùn)練一個模型會帶來一些知識的共享。a.一些rich language能夠把一些知識transfer到一些low source language的上面,能提升低資源語言對的翻譯效果。b.同時因?yàn)橛卸嗾Z言混合,一些低資源語言對可以見到一些原來看不到的輸入,可以提升低資源語言對模型的泛化能力。 但是,多語言機(jī)器翻譯也帶來一個挑戰(zhàn) ① 如果同時做200多種語言的機(jī)器翻譯,需要收集和篩選出200多個語種的高質(zhì)量數(shù)據(jù)。 ② 阿里內(nèi)部擁有超過10 billion的句對數(shù)據(jù),要同時訓(xùn)練這些數(shù)據(jù)的話,需要很強(qiáng)的工程能力。 ③ a.四萬多種語言方向用一個模型來做,這個模型的容量是不是夠?這是個很大的問題。b.在采用一個大模型的情況下,我們怎樣才能提升各個翻譯方向上的性能或提升它的解碼效率? 本次報(bào)告主要是針對算法方面,因?yàn)閿?shù)據(jù)和工程方面其實(shí)已經(jīng)有一些現(xiàn)成的方案了。 1. 機(jī)器翻譯主流框架 過去一年阿里在機(jī)器翻譯算法方面做了一些探索,首先是多語言NMT的框架選擇。目前有兩套主流框架: ① 分離式模型。 假設(shè)要做200多個語種的機(jī)器翻譯,我可以給每個語言對定義一個encoder和一個decoder,這樣的話我會有200多個encoder,200多個decoder,在翻譯其中某個語言對時,選擇對應(yīng)的encoder和對應(yīng)的decoder去進(jìn)行翻譯。 這種框架的好處是每個語言有單獨(dú)的encoder和decoder,但是有個很大的問題,還是需要有400個模塊來支持200多個語種的機(jī)器翻譯。 以后增加語言會比較困難。模型規(guī)?;潭缺容^低,部署難度也比較大。 ② Universal Model 所有語種共享編碼器和解碼器,在輸入源語言的時候加一個語言標(biāo)志,告訴這個模型要翻譯到哪個語言去。 這種模型有一個很好的優(yōu)勢,就是說整個模型只有一個encoder和一個decoder,模型很優(yōu)雅。 但是它有個缺點(diǎn),對模型容量有要求,200多種語言同時用encoder和一個decoder,模型表達(dá)能力肯定會受到挑戰(zhàn),在統(tǒng)一的模型框架里面會出現(xiàn)很多語言沖突問題。 阿里還是傾向于選擇統(tǒng)一的框架,采用shared encoder和shared decoder。單一模型具有很好的可擴(kuò)展性,但是會面臨一個很大的一個問題,語言的通用性和語言的特殊性這二者怎么能在模型里很好地表現(xiàn)出來? 針對這個問題,我們在ACL2020的時候發(fā)表了一篇論文,提出了一個新的模型解決方案。假定原來只用單個shared encoder就不能足夠的去充分地去model語言的相似性和特殊性。我們提出了編碼器-中間語-解碼器這樣一個新的模型框架。 原來的編碼器和解碼器不變,在中間插了一個中間語模塊,采用固定長度和固定內(nèi)存。假設(shè)我要做中譯英,中文進(jìn)來的時候,先用編碼器給中文做編碼,再經(jīng)過中間語模塊,可能把中文一些特殊的信號去除掉,獲得更通用的一個表示,最后采用這個表示來譯出英文。 中間語模塊有個好處,不管輸入什么語言,都用一個共用的表示去表達(dá)。具有相同意思的一個中文或英文句子進(jìn)入編碼器,然后通過中間語模塊可以抽取出很類似的表示,這樣的話我能得到一個更好的通用語言表示。 同時引入一些跟語言相關(guān)的特性給解碼器去區(qū)分不同語言。通過這樣一個框架來協(xié)調(diào)語言的通用性和語言的特殊性。 在訓(xùn)練中間語模塊的時候,我們引入了兩個損失函數(shù)來約束它,圖右邊的損失函數(shù)有五項(xiàng)。 第一部分是翻譯的條件概率。 第二部分我們希望中間語這個模塊capture的信息不會丟失掉,所以需要做一個編碼解碼的過程。假設(shè)源語言為中文進(jìn)入模型,通過中間語模塊之后得到一個表示,解碼的時候通過中間語能把原來中文的信息完整地表示出來,這樣的話能保證中間語模塊學(xué)到有用信息,這是一個reconstruction loss。 model還需要跨語言之間semantic的一致性。無論是中文得到的中間語還是英文得到的中間語,在具有相同含義的情況下,中間語模塊給出的隱變量應(yīng)該是很接近的。通過這兩個約束來訓(xùn)練這個模型。 這是我們的實(shí)驗(yàn)結(jié)果,我們在2013年WMT公開測試集和我們內(nèi)部的一些測試集上做評測。我們的benchmark是一個九層的encoder,我們采用的模型結(jié)構(gòu)是六層的encoder、六層的decoder、三層的中間語模塊。 表一和表二是我們的實(shí)驗(yàn)結(jié)果。 我們的添加約束的多語言翻譯模型與直接單獨(dú)訓(xùn)練單個模型的效果相當(dāng),達(dá)到comparable的效果。同時也比universal的模型有更好的效果。 我們在訓(xùn)練模型的時候是沒有法西或西法的數(shù)據(jù)的,但是因?yàn)槲覀儤?gòu)建了一個中間語模塊盡量去model更通用的語義的信息,而且用固定的一個隱變量去存儲,這樣能有更好的跨語言cross-lingual model能力,能更好的做zero-shot translation。 我們在zero-shot translation上其實(shí)比universal model高出十個bleu,但是跟單獨(dú)的橋接的模型還是有差距的,還有四個bleu的差距。 后續(xù)我們打算采用數(shù)據(jù)增強(qiáng)的方法去解決這種zero-shot的問題。 2. zero-shot translation 在訓(xùn)練過程中我們可能采用中英或英法句對訓(xùn)練,但我們沒有給模型喂中法句對數(shù)據(jù),所以模型沒有見過中法翻譯句對。但是因?yàn)槲覀冇玫膍ulti-lingual模型具備這樣的翻譯能力,那么這種中法的翻譯對于這個模型來說是就是zero-shot translation。 我們想要做200個語種的互譯,其實(shí)我們統(tǒng)計(jì)過,大部分語言之間基本是沒有平行語料的,99%的翻譯方向上沒有平行語料。大部分平行語料都是其他語言譯為英文以及英文譯為其他語言,很多非英語語種相互之間基本沒有雙語平行數(shù)據(jù)。 雖然我們之前的框架已經(jīng)能緩解一部分問題,但是我們還想繼續(xù)提升,接下來怎么做? 最直接的方式就是加數(shù)據(jù)。沒有雙語數(shù)據(jù),但是有很多單語數(shù)據(jù)?,F(xiàn)在最有效的一個策略就是反向翻譯。訓(xùn)練好多語言模型之后,假設(shè)沒有中法雙語數(shù)據(jù),可以將法語的單語反向翻譯成中文,就得到了一批中法的雙語數(shù)據(jù),可以加進(jìn)去訓(xùn)練。 但是反向翻譯有個問題,因?yàn)槲覀兌嗾Z言模型的zero-shot翻譯效果很差。通過反向翻譯造出的數(shù)據(jù)其實(shí)質(zhì)量很低,直接用于訓(xùn)練可能不能充分發(fā)揮單語數(shù)據(jù)的效果。 然后我們在今年EMNLP 2020的時候提出了一個新的策略,是基于反向翻譯的一個改進(jìn),引入了一種修復(fù)模型,去對原本比較低質(zhì)量的譯文做修復(fù),從而提升整個偽語料的質(zhì)量,來充分利用單語數(shù)據(jù)。 ① Repair Translation 首先給一個問題定義,假設(shè)只考慮兩個語言,這兩種語言有很多單語數(shù)據(jù),假設(shè)有一個預(yù)先訓(xùn)練好的翻譯模型,用x到y(tǒng)和y到x表示不同的方向。 引入了兩個階段,一個階段是做翻譯的repair,對譯文做修復(fù),構(gòu)建一個多語言修復(fù)模型去修復(fù)反向翻譯得到的語料。這個模型用DR來表示,DR也是一個多語言模型,可以用一個語言tag來標(biāo)明要修復(fù)的語種。 怎么訓(xùn)練修復(fù)模型?需要給出真實(shí)的原文、模型翻譯的譯文以及修復(fù)好的譯文,我們需要一個3元組??梢酝ㄟ^來回翻譯的策略來構(gòu)建這樣一個3元組。假設(shè)給定中文原文,可以先翻譯成英文,再翻譯回中文,就可以得到一個在給定英文的情況下修復(fù)中文譯文的一個語料?;谶@種語料就可以去訓(xùn)練DR,即多語言修復(fù)模型。 上圖右部可以看到整個流程。假設(shè)做中法zero-shot translation翻譯,預(yù)先基于中英和英法雙語語料訓(xùn)練好一個多語言模型,給定一些中文和法文的單語數(shù)據(jù),用訓(xùn)練好的模型對這些單語數(shù)據(jù)做反向翻譯,將中文翻譯成法語或?qū)⒎ㄕZ翻譯成中文,得到一些偽語料,然后使用修復(fù)模型對偽語料做修復(fù)。 如果把中文翻譯成法語,那么法語譯文就是偽造的部分,我們用修復(fù)模型對法語譯文做進(jìn)一步的修復(fù),得到新的法語譯文,得到更好的偽語料。 有了更好的偽語料,就可以去更新多語言模型,這是第一個階段,即repair translation。 ② Iterative Repaired Back-Translation 第二個階段,在NMT的訓(xùn)練過程中也可以優(yōu)化修復(fù)模型。 給定單語,可以做兩次翻譯,得到修復(fù)語料,然后構(gòu)建新的修復(fù)模型,這整個過程是一個持續(xù)迭代的過程。 假設(shè)給定一個修復(fù)模型,先用兩種語言的單語數(shù)據(jù)得到一些偽語料,再用修復(fù)模型得到一些修復(fù)好的偽語料,然后去訓(xùn)練NMT模型,然后用新的NMT模型重新做來回翻譯,得到一些新的修復(fù)數(shù)據(jù),然后繼續(xù)訓(xùn)練修復(fù)模型,這個過程會逐漸修復(fù)偽語料的質(zhì)量。 多語言修復(fù)模型其實(shí)很簡單,有兩個輸入和一個輸出,采用雙源dual source transformer architecture來做。給出源語言X,然后得到翻譯,然后直接去預(yù)測目標(biāo)語言句子Y。loss也很簡單,給定一個句對,去預(yù)測要修復(fù)的目標(biāo)句子,然后得到一個loss。 這套方法不止可以做多語言的翻譯,其實(shí)它也可以做一些model domain setting。在EMNLP 2020的時候,我們其實(shí)是在多領(lǐng)域的setting下進(jìn)行實(shí)驗(yàn),最后一行是我們方法的結(jié)果,可以看出我們的方法優(yōu)于包括反向翻譯或迭代反向翻譯在內(nèi)的過去的所有方法。其實(shí)證明了我們可以借助這種修復(fù)model去提前修復(fù)back-translation產(chǎn)生的偽語料中的錯誤,提高偽語料質(zhì)量,從而提升整個訓(xùn)練的效率,充分利用單語數(shù)據(jù)。 雖然采用了修復(fù)模型去修復(fù)偽語料里面的一些錯誤,但是訓(xùn)練過程中的偽語料并不是越多越好,到達(dá)一定程度之后再加偽語料性能反而會下降。 不管是采用修復(fù)模型還是直接用back-translation構(gòu)建偽語料,得到的偽語料其實(shí)不可能完美,跟人工語料還是有差距。所以加很多偽語料其實(shí)有可能會污染到訓(xùn)練數(shù)據(jù)。加的偽語料越多,整個語料的質(zhì)量越可能會下降,從而影響到模型的訓(xùn)練效果。 另一方面,采用反向翻譯這種策略去構(gòu)造偽語料雖然能提升zero-shot translation的效果,但是它的cost很大,反向翻譯這個過程很耗時,需要很多GPU資源。雖然反向翻譯策略在實(shí)際過程中很好用,但是無法生成太多的偽語料,而且偽語料過多也會影響到模型的訓(xùn)練。 3. 怎么更好地去利用那些單語數(shù)據(jù)呢? 現(xiàn)在一個主流的策略就是利用預(yù)訓(xùn)練模型。 我們也在整合預(yù)訓(xùn)練模型上做了一些探索。預(yù)訓(xùn)練模型在NLP領(lǐng)域已經(jīng)成為了一個新的范式,對一些NLU和NLG任務(wù)都有很顯著的提升。 預(yù)訓(xùn)練是怎么做的?首先通過bert、RoBERTa或者M(jìn)ASS利用大量單語數(shù)據(jù)預(yù)訓(xùn)練一個模型,然后在帶label的下游任務(wù)上做finetuning,就可以充分利用預(yù)訓(xùn)練模型的效果。這個方法對于NLG任務(wù)很重要,但是在用到NLG或NMT上會有一些問題。 第一,現(xiàn)在的預(yù)訓(xùn)練模型finetuning的策略是直接用bert去初始化,這樣的話會有個災(zāi)難性遺忘問題。初始化之后在下游任務(wù)做微調(diào),如果下游任務(wù)數(shù)據(jù)量足夠大(類似于翻譯),可能下游任務(wù)有幾百萬上千萬的數(shù)據(jù),這種情況下進(jìn)行finetuning,預(yù)訓(xùn)練的效果就很可能不存在。因?yàn)檎麄€參數(shù)被調(diào)整了,所以模型會遺忘掉之前訓(xùn)練的一些知識。 第二,現(xiàn)在一些比較好的現(xiàn)成模型很難在decoder上整合,因?yàn)镹MT是帶條件生成式語言模型,而bert的訓(xùn)練往往是不帶條件的,很難用到decoder里面去。 第三,預(yù)訓(xùn)練模型容量很大,往往很難finetuning,而且對學(xué)習(xí)率很敏感,稍微調(diào)一下學(xué)習(xí)率,模型效果就有很大波動。 這就是為什么現(xiàn)在一些主流pre-trained model很難在NMT上有很好的推廣。 4. 進(jìn)一步的探索 我們其實(shí)還是沿著這個方向做了一些探索,我們在想怎么更好地把bert用到multi-lingual NMT上。我們?nèi)ツ旰徒衲攴謩e做了兩個工作去整合預(yù)訓(xùn)練模型。 第一個工作是表示融合,把預(yù)訓(xùn)練這種帶有上下文的表示融合到NMT里面去。 第二個工作就是在第一個工作的基礎(chǔ)上進(jìn)一步簡化,提出了一個很輕量的適配器,將其插入到bert的層數(shù)里面,在下游任務(wù)finetuning的時候,只要調(diào)一些調(diào)適配器的參數(shù)就能比較好地利用預(yù)訓(xùn)練模型的效果。 第一,動態(tài)融合的方法,如上圖,左下是一個預(yù)訓(xùn)練模型,可以從中得到一堆向量表示,右邊是一個NMT的encoder或者decoder。在融合預(yù)訓(xùn)練表示的時候,我會做兩個事情,首先我們要決定預(yù)訓(xùn)練模型的哪些層是重要的(不同的層輸出不同表示)。對于當(dāng)前encoder來說,需要做一個attention去找到預(yù)訓(xùn)練模型不同層的重要程度。 第二,我們得到attention之后,用gating的機(jī)制去選擇哪些信息對當(dāng)前的encoder是有用的。 其實(shí)這兩個事情的本質(zhì)是把預(yù)訓(xùn)練模型里面的有用信息更好地萃取到NMT模型中。我們可以用這套方法在encoder里面整合bert,在decoder里面我們可以整合GPT。 我們在WMT一些主流的benchmark上做了實(shí)驗(yàn),通過動態(tài)融合的策略,我們可以很好地利用預(yù)訓(xùn)練模型的一些知識來提升當(dāng)前的NMT的效果。這種策略分別在WMT17中英、WMT14英德和德英上都有比較明顯的提升,比之前直接finetuning能高出一個多點(diǎn)(bleu值)。 我們今年在NIPS上重新反思了原來的萃取方法,做了進(jìn)一步簡化。之前的這套方法還是很重的,因?yàn)槲覀儠胁煌哪K,存在預(yù)訓(xùn)練模型和NMT模型兩個模型,沒有很好地融合在一起。 我們提出了一個更簡化的新方法,就是用適配器來用整合bert。采用用一個很輕量的適配器,這樣的話我們就可以插到bert層里面,然后在下游任務(wù)finetuning的時候,只finetuning一些跟適配器相關(guān)的參數(shù)。這樣做有什么好處? 第一,其實(shí)跟之前的方法是一個思路,我們保證bert不變,這樣的話bert就不會存在遺忘問題,就可以盡量緩解之前提到的災(zāi)難性遺忘問題。 第二,如果要用bert,可以在decoder里使用mask-predict來解決帶條件和不帶條件的問題。 第三,因?yàn)橛昧诉m配器這種很輕量的結(jié)構(gòu),所以不需要對整個bert做finetuning,所以整個模型的訓(xùn)練對學(xué)習(xí)率很魯棒。 拿非遞歸的NMT來舉例,假設(shè)encoder decoder都用bert做初始化,然后我們在bert上面插兩個layer,即兩個adapter。Source adapter插入到encoder部分,由兩個feed forward layer組成。Target adapter包括encoder-decoder attention和一個feed forward layer。訓(xùn)練的時候bert的相關(guān)參數(shù)固定不變,只調(diào)adapter就能取得比較好的效果。 訓(xùn)練的時候把Y里面的某些詞屏蔽掉,然后預(yù)測這些詞。整個訓(xùn)練的loss跟bert更相似,這樣的話也能更充分地保證預(yù)訓(xùn)練和finetuning更接近。 我們采用mask-predict的策略做解碼。 這套策略其實(shí)還能用到正常的NMT上。例如對源語言用bert做初始化,然后插入一個source adapter,對decoder端做完全隨機(jī)初始化,這樣去訓(xùn)練,后面實(shí)驗(yàn)也會說明這樣的策略效果也不錯。 或者我們直接去訓(xùn)練一個mbart,直接采用sequence to sequence的pre-trained model,在其上插入adapter也有效果。 下面講一下我們內(nèi)部的一些實(shí)驗(yàn),上圖是我們在非遞歸解碼NMT上取得的結(jié)果。我們在IWSLT14和WMT16和WMT14上都做了一些實(shí)驗(yàn)??梢钥吹轿覀兊倪@個策略比之前直接做bert fusion要好很多,而且這個策略不需要有兩個encoder,解碼速度也較快。 在一些正常的NMT上我們也做了實(shí)驗(yàn),例如直接在encoder上用bert做初始化,同時固定住bert,然后插入adapter,decoder隨機(jī)初始化,然后做訓(xùn)練。這種方式在WMT14的英德和英法上都取得了不錯的效果,能達(dá)到之前微軟bert fusion策略的效果,但是我們整個模型容量更小,因?yàn)槲覀兊膃ncoder部分不需要用額外的參數(shù),只需要用adapter。 后續(xù)我們還探索了multi-lingual bert的效果。我們可以用multi-lingual bert做初始化,然后采用adapter??晌覀冊贗WSLT上做了實(shí)驗(yàn),可以看出這種策略能比mask-predict方式高出五個點(diǎn)(bleu值)。這個策略也好于直接訓(xùn)練的transformer-base模型。 后續(xù)還有一個比較有意思的發(fā)現(xiàn),back-translation生成的偽語料不是加得越多越好,加到一定程度之后反而翻譯性能會下降。 但是借助pre-training策略就能很好地利用這種單語信息,能比直接用back-translation高出兩個點(diǎn)(bleu值)。 有了預(yù)訓(xùn)練模型之后,我們就可以很好的去提升多語言NMT場景下的低資源和零資源問題,因?yàn)榇蟛糠值恼Z言對(翻譯方向)的語料資源都很少,借助預(yù)訓(xùn)練模型和adapter策略,我們可以融合更多的單語數(shù)據(jù)來訓(xùn)練,提升multi-lingual NMT的效果。這套策略其實(shí)已經(jīng)用到了我們的線下系統(tǒng)上。 后面會講一下落地的實(shí)現(xiàn)。使用預(yù)訓(xùn)練模型會有個很大的問題,因?yàn)槟P秃艽?,解碼速度會很慢。為了上線我們會做一些優(yōu)化,其實(shí)大部分時間開銷是在decoder部分,它占了80%到90%的開銷。 我們采用了deep encoder shallow decoder策略、share attention策略,最后我們還做一些工程上的改進(jìn),采用short list預(yù)測來提升速度。 因?yàn)閐ecoder解碼是一步一步執(zhí)行的,所以整個瓶頸都在decoder端。之前有論文做了一些分析,如果把encoder加深,把decoder層數(shù)降低,基本不怎么損失翻譯效果,但是速度上能有兩倍提升。 論文里面很極端,把decoder層數(shù)從六層減到了一層。實(shí)際過程中我們發(fā)現(xiàn)一層的decoder的表達(dá)能力很受限,語言模型能力會比較弱。我們的decoder一般用三層。我們把encoder的層數(shù)加得很深,這樣能在整個模型容量、表達(dá)能力不怎么下降的情況下加速解碼。 根據(jù)肖桐博士在IJCAI的論文Sharing Attention Weights for Fast Transformer,我們也做了實(shí)驗(yàn)去驗(yàn)證,得到一些相似的結(jié)論,即decoder里面有幾部分的attention其實(shí)沒有那么重要。 ① encoder decoder attention這部分,假設(shè)用六層,每層都要做一次計(jì)算。后來發(fā)現(xiàn)后面五層encoder decoder attention其實(shí)可以被第一層復(fù)用,如果直接用第一層的encoder decoder attention,結(jié)果基本沒什么差距。 ② self-attention里面的權(quán)重,這里也可以被簡化,我們發(fā)現(xiàn)每一層的self-attention權(quán)重其實(shí)差異不大,采用這個策略也能加速。 ③ Shortlist Prediction。 多語言機(jī)器翻譯模型會share一個大字典,但我們在向某個語種做翻譯的時候不需要采用整個字典做預(yù)測,只需要采用與這個語種相關(guān)的一些詞,這樣的話我們可以動態(tài)地調(diào)整字典,用一個字典子集也能對整個模型做提速。 有了這三個策略再結(jié)合一些工程上的圖優(yōu)化改進(jìn),解碼效率能提升三到四倍。這樣能使我們基于大規(guī)模預(yù)訓(xùn)練模型的NMT能上線運(yùn)行。 阿里翻譯主要做的一個事情是讓商業(yè)沒有語言障礙,其實(shí)我們想要貫徹的是阿里巴巴的全球買、全球賣、全球旅游、全球支付理念。為什么需要阿里翻譯,如果沒有解決語言問題,這些理念就無法實(shí)現(xiàn)。商業(yè)邊界會很受限。 阿里翻譯構(gòu)建了一個大規(guī)模的知識挖掘系統(tǒng),然后在上面構(gòu)建了各種各樣的機(jī)器翻譯模型,包括多領(lǐng)域機(jī)器翻譯模型、多語言機(jī)器翻譯模型,以及人機(jī)協(xié)同平臺。阿里翻譯支持了阿里內(nèi)部大部分跨語言相關(guān)應(yīng)用。 下面簡單介紹一下多語言NMT在阿里巴巴的應(yīng)用。我們最近九月份剛上線了支持200多個語種的機(jī)器翻譯服務(wù),已經(jīng)用于阿里巴巴速賣通,在速賣通上可以看到阿里翻譯可以支持200多個語種。 我們的200多個語種的機(jī)器翻譯服務(wù)最近也在阿里云上線了,可以直接在阿里云上搜機(jī)器翻譯做一些產(chǎn)品體驗(yàn)。 簡單總結(jié)一下。 為了支持阿里巴巴全球買全球賣的策略,我們想要直接構(gòu)建一個NMT系統(tǒng),能夠支持涵蓋全球大部分國家的200多種語言。為了更好、更方便的部署,我們采用了multi-lingual NMT框架。我們設(shè)計(jì)了一個基于中間語的多語言模型結(jié)構(gòu),以及基于迭代修復(fù)的反向翻譯的數(shù)據(jù)增強(qiáng)方法,然后我們設(shè)計(jì)了兩種不同的策略去整合預(yù)訓(xùn)練模型,最后為了整個模型上線還做了一些加速。 今天的分享就到這里,謝謝大家。 |
|