機器翻譯的思想由來已久略水,約500年前罚勾,著名數(shù)學(xué)家笛卡爾提出了一種在統(tǒng)一的數(shù)字代碼基礎(chǔ)上編寫字典的理念掷空,不同語言中的相同思想共享一個符號,并與萊布尼茲等人試圖來實現(xiàn)洽沟。在該思想的影響下以故,維爾金斯在1668中提出的中介語。中介語的設(shè)計試圖將世界上所有的概念加以分類和編碼裆操,有規(guī)律地列出并描述所有的概念和實體怒详,并根據(jù)它們各自的特點和性質(zhì),給予不同的記號和名稱踪区。
隨后的時間昆烁,又有不少先驅(qū)為這一目標探索奮斗,包括法國缎岗、前蘇聯(lián)科學(xué)家們静尼,但都無疾而終。
基于規(guī)則的機器翻譯
機器翻譯第一個被認可的實際研究項目出現(xiàn)于冷戰(zhàn)背景下传泊。1949年鼠渺,資訊理論研究者WarrenWeave正式提出了機器翻譯的概念。1954年眷细,IBM與美國喬治敦大學(xué)合作公布了世界上第一臺翻譯機IBM-701拦盹。它能夠?qū)⒍碚Z翻譯為英文,雖然身軀巨大薪鹦,事實上它里面只內(nèi)建了6條文法轉(zhuǎn)換規(guī)則掌敬,以及250個單字。但即使如此池磁,這仍是技術(shù)的重大突破奔害,那時人類開始覺得應(yīng)該很快就能將語言的高墻打破。實驗以每秒打印兩行半的驚人速度地熄,成功將約60句俄文自動翻譯成英文华临,被視為機器翻譯可行的開端。
隨后端考,美蘇兩個超級大國出于對軍事雅潭、政治和經(jīng)濟目的揭厚,均投入巨資來進行機器翻譯研究——為此來獲取更多敵方的情報。同時扶供,歐洲國家由于地緣政治和經(jīng)濟的需要也對機器翻譯研究給予了相當大的重視筛圆。中國早在1956年就把機器翻譯研究列入了全國科學(xué)工作發(fā)展規(guī)劃。1957年椿浓,中國科學(xué)院語言研究所與計算技術(shù)研究所合作開展了俄漢機器翻譯試驗太援,翻譯了9種不同類型的句子。
當時扳碍,人們對機器翻譯的高度期待和樂觀主義情緒高漲提岔,但是低估了問題的難度!尤其是自然語言翻譯本身的復(fù)雜性及當時計算機軟硬件系統(tǒng)的局限性笋敞。不久碱蒙,人們失望的看到,各家機器翻譯的效果都與期望相差甚遠夯巷。泡沫很快要被刺破了赛惩。
1964年,美國科學(xué)院成立了語言自動處理咨詢委員會鞭莽。兩年后坊秸,在委員會提出的報告中認為機器翻譯代價昂貴,準確率低澎怒,速度慢于人工翻譯褒搔,未來也不會達到人工翻譯質(zhì)量。結(jié)論就是給機器翻譯的研究直接判了死刑喷面,認為完全不值得繼續(xù)投入星瘾。在接下來的十來年中,機器翻譯研究從迅速跌入谷底惧辈,研究幾乎完全停滯琳状。
進入20世紀70年代,隨著科學(xué)技術(shù)的發(fā)展和各國科技情報交流的日趨頻繁盒齿,國與國之間的語言障礙顯得更為嚴重念逞,傳統(tǒng)的人工作業(yè)方式已經(jīng)遠遠不能滿足需求,人們迫切地需要計算機來從事翻譯工作边翁。
這時候翎承,現(xiàn)代語言之父喬姆斯基(Chomsky)的“轉(zhuǎn)換生成語法”產(chǎn)生了深遠影響力,學(xué)者們意識到符匾,要想實現(xiàn)好的翻譯效果叨咖,必須在理解語言的基礎(chǔ)上進行翻譯,從理解句法結(jié)構(gòu)上下功夫。有了新思想信念的加持甸各,再加上計算機軟硬件系統(tǒng)飛速地發(fā)展垛贤,基于語法規(guī)則的機器翻譯研究開始如火如荼地展開,相關(guān)技術(shù)趣倾、產(chǎn)品不斷涌現(xiàn)聘惦。
但很快,基于規(guī)則的機器翻譯就遇到了瓶頸誊酌。純靠人工編纂部凑、維護的規(guī)則很難全面、準確覆蓋人類繁雜碧浊、凌亂、不斷演化的語言現(xiàn)實瘟仿,而且可拓展性很差箱锐。譯文的準確率雖有進步,但依然達不到可用的預(yù)期劳较。
自20世紀80年代開始驹止,研究人員逐漸開始數(shù)據(jù)驅(qū)動的機器翻譯方法。1980年观蜗,Martin Kay提出了翻譯記憶方法臊恋,其基本思想在翻譯新句子時從已經(jīng)翻譯好的老句子中找出相似部分來輔助新句翻譯。1984年墓捻,長尾真(MakotoNagao)提出基于實例的機器翻譯方法抖仅,它從實例庫中提取翻譯知識,通過增砖第、刪撤卢、改、替換等操作完成翻譯梧兼。這些方法放吩,在實踐中都得以廣泛應(yīng)用。
統(tǒng)計機器翻譯
20世紀80年代末起羽杰,基于數(shù)據(jù)和算法的統(tǒng)計學(xué)習(xí)方法在理論和應(yīng)用層面都取得了飛速進展渡紫。極端的一個例子是,首個將統(tǒng)計模型引入語音識別和語言處理的現(xiàn)代語音識別和自然語言處理研究的先驅(qū)Frederick Jelinek曾有過如此令人驚訝的言論:
每當我開除一個語言學(xué)家考赛,語音識別系統(tǒng)就更準確了惕澎。
于是,在基于規(guī)則的機器翻譯受挫后欲虚,學(xué)者們開始全面轉(zhuǎn)型統(tǒng)計機器翻譯集灌。標志性事件是,1990年在芬蘭赫爾辛基召開的第13屆國際計算語言學(xué)大會,會上提出了處理大規(guī)模真實文本的戰(zhàn)略任務(wù)欣喧,開啟了語言計算的一個新的歷史階段——基于大規(guī)模語料庫的統(tǒng)計自然語言處理腌零。
基于詞的統(tǒng)計機器翻譯模型處理的單元較小,后來逐漸發(fā)展起來的基于短語的方法成為統(tǒng)計機器翻譯的主流工作唆阿。研究人員開始基于大規(guī)模的語料對照數(shù)據(jù)益涧,構(gòu)建模型,訓(xùn)練優(yōu)化目標驯鳖,自動化測評效果闲询。這首次使得機器翻譯趨于流程化,從而上了可以快速迭代的快車道浅辙。
具體地扭弧,Och在2003提出的基于最大熵的對數(shù)—線性模型和參數(shù)最小錯誤訓(xùn)練方法促使統(tǒng)計機器翻譯方法能夠?qū)⒍喾N不同的特征函數(shù)融合進機器翻譯模型中,并且自動學(xué)習(xí)它們各自的特征權(quán)重记舆,使得翻譯性能顯著超越了其他傳統(tǒng)機器翻譯方法鸽捻。此外,自動評測指標 BLEU的提出不僅避免了人工評價成本昂貴的弊端泽腮,而且可以直接成為模型優(yōu)化的目標御蒲,極大地提高了統(tǒng)計機器翻譯系統(tǒng)模型訓(xùn)練、迭代诊赊、更新的效率厚满。
統(tǒng)計機器翻譯方法的特點是幾乎完全依賴對大規(guī)模雙語語料庫的自動學(xué)習(xí)、自動構(gòu)造機器翻譯系統(tǒng)碧磅。這種方法具有廣泛的一般性碘箍,與具體語種無關(guān),與語法細節(jié)無關(guān)续崖,與語言的內(nèi)容無關(guān)敲街,自此也不再需要人工規(guī)則集。一些研究機構(gòu)不斷先后開源機器翻譯系統(tǒng)严望,以促進學(xué)術(shù)研究多艇,其中比較著名的是約翰霍普金斯大學(xué)教授,Philipp Koehn團隊開發(fā)的Moses系統(tǒng)(http://www.statmt.org/moses/)像吻,常被作為學(xué)術(shù)論文中的對比基線峻黍。
21世紀初期開始,借助于互聯(lián)網(wǎng)的發(fā)展拨匆,統(tǒng)計機器翻譯系統(tǒng)逐漸從2B姆涩、2G走向全世界個體的2C。以谷歌惭每、微軟為代表的科研機構(gòu)和企業(yè)均相繼成立機器翻譯團隊并相繼發(fā)布了能夠支持世界上幾十種骨饿、幾百種常用語言的互聯(lián)網(wǎng)機器翻譯系統(tǒng)亏栈,迅速普及了機器翻譯的應(yīng)用場景,極大地提高了人們使用機器翻譯的便利性宏赘。
神經(jīng)網(wǎng)絡(luò)機器翻譯
隨著深度學(xué)習(xí)的迅猛發(fā)展绒北,以及在語音、圖像識別領(lǐng)域取得巨大突破察署,越來越多的自然語言處理問題也開始采用深度學(xué)習(xí)技術(shù)闷游。研究人員逐漸放棄了統(tǒng)計機器翻譯框架中各子模型獨立計算的模式,提出了端到端(end-to-end贴汪,句子到句子)的神經(jīng)機器翻譯模型架構(gòu)脐往。該架構(gòu)由編碼器和解碼器兩部分組成,其中編碼器負責(zé)將源語言句子編碼成一個實數(shù)值向量扳埂,然后解碼器基于該向量解碼出目標譯文业簿。
機器翻譯本質(zhì)上是序列到序列(sequenceto sequence)問題的一個特例,即源語言句子(源語言的詞序列)到目標語言句子(目標語言的詞序列)聂喇。Sutskever等在2014提出了基于循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neuralnetwork, RNN)的編碼器-解碼器(encoder-decoder)架構(gòu)辖源,并用于序列到序列學(xué)習(xí)。他們使用一個循環(huán)神經(jīng)網(wǎng)絡(luò)將源語句中的詞序列編碼為一個高維向量希太,然后通過一個解碼器循環(huán)神經(jīng)網(wǎng)絡(luò)將此向量解碼為目標語句的詞序列。他們將此模型應(yīng)用于翻譯任務(wù)酝蜒,并在英法翻譯任務(wù)上達到了媲美傳統(tǒng)的統(tǒng)計機器翻譯的效果誊辉,由此掀起了神經(jīng)網(wǎng)絡(luò)機器翻譯的熱潮。
2016年9月30日亡脑,Google發(fā)布了新版神經(jīng)機器翻譯(GNMT)系統(tǒng)堕澄,通過對維基百科和新聞網(wǎng)站選取的語句的測試,相比基于短語的統(tǒng)計翻譯能減少55%到85%的翻譯錯誤霉咨,在中英文翻譯人工測評的準確率高達80%左右蛙紫。面對機器的強悍矮冬,翻譯從業(yè)人員們首次感受到了寒意趋观,有翻譯員甚至這樣形容:
作為一名翻譯員崎坊,看到這個新聞的時候向臀,我理解了18世紀紡織工人看到蒸汽機時的憂慮與恐懼撬槽。
但機器翻譯進化的腳步并沒有停下來培漏,隨著注意力機制被引入蘑辑,機器翻譯的效果又有了飛速的提升骡显。2017年以來星爪,機器翻譯人員拋棄了傳統(tǒng)的RNN浆西、CNN結(jié)構(gòu),采用完全基于注意力機制的Transformer模型顽腾,在效果近零、訓(xùn)練速度、性能等多個維度上都碾壓之前所有模型。
上圖是采用了Transformer模型的百分點機器翻譯系統(tǒng)的翻譯演示案例久信,從上面的中文和翻譯得到的英文來看窖杀,效果優(yōu)秀,基本不用修改入篮。
但是陈瘦,神經(jīng)網(wǎng)絡(luò)機器翻譯依舊存在不少待解決的重要問題,包括:
海量數(shù)據(jù)依賴:效果優(yōu)異的翻譯模型的訓(xùn)練普遍需要于上千萬條平行語料潮售,而現(xiàn)實中除了少量世界級大語種之間痊项,很難有如此海量的語料。如何讓模型學(xué)習(xí)少量的數(shù)據(jù)或者單邊語料就能達到較好的效果是當前最亟待解決的問題酥诽。
易受噪音影響:當前模型非常容易受噪音的影響鞍泉,我們在實際訓(xùn)練中發(fā)現(xiàn),引入20%左右的低質(zhì)量語料(比如意譯味較濃的字幕翻譯)肮帐,就能使翻譯效果迅速下降咖驮。如果訓(xùn)練模型能更穩(wěn)健,那么可用的語料數(shù)量將大大提高训枢。
專業(yè)領(lǐng)域翻譯:在細分的專業(yè)領(lǐng)域內(nèi)(比如醫(yī)療)托修,專業(yè)語料本身的量會非常稀少,同時存在大量的專業(yè)詞匯沒有出現(xiàn)在訓(xùn)練語料中恒界。如果能利用大量的普通語料和少量的專業(yè)語料來建立準確的專業(yè)領(lǐng)域機器翻譯系統(tǒng)睦刃,那么機器翻譯的應(yīng)用場景將不僅僅局限于日常新聞領(lǐng)域,真正突破不同語言國家之間的文化十酣、科技藩籬涩拙。
翻譯風(fēng)格問題:由于訓(xùn)練語料來源廣而雜,同一類型的翻譯在訓(xùn)練語料中的翻譯方法可能由于翻譯員的個人偏好而五花八門耸采。因此兴泥,在用這些語料訓(xùn)練出來的模型,博采各家之所長虾宇,但也部分地博采各家之所短搓彻。因此,在用來翻譯新的句子的時候文留,其結(jié)果會有很多不可預(yù)見性好唯。如何對翻譯模型中的知識進行提純,得到風(fēng)格統(tǒng)一的翻譯模型是非常有挑戰(zhàn)性的重要目標燥翅。
2013年~2014年不溫不火的自然語言處理(NLP)領(lǐng)域發(fā)生了翻天覆地的變化骑篙,因為谷歌大腦的Mikolov等人提出了大規(guī)模的詞嵌入技術(shù)word2vec,RNN森书、CNN等深度網(wǎng)絡(luò)也開始應(yīng)用于NLP的各項任務(wù)靶端,全世界NLP研究者歡欣鼓舞谎势、躍躍欲試,準備告別令人煎熬的平淡期杨名,開啟一個屬于NLP的新時代脏榆。
在這兩年機器翻譯領(lǐng)域同樣發(fā)生了“The Big Bang”。2013年牛津大學(xué)Nal Kalchbrenner和Phil Blunsom提出端到端神經(jīng)機器翻譯(Encoder-Decoder模型)台谍,2014年谷歌公司的Ilya Sutskerver等人將LSTM引入到Encoder-Decoder模型中须喂。這兩件事標志著以神經(jīng)網(wǎng)絡(luò)作為基礎(chǔ)的機器翻譯,開始全面超越此前以統(tǒng)計模型為基礎(chǔ)的統(tǒng)計機器翻譯(SMT)趁蕊,并快速成為在線翻譯系統(tǒng)的主流標配坞生。
2015年注意力機制和基于記憶的神經(jīng)網(wǎng)絡(luò)緩解了Encoder-Decoder模型的信息表示瓶頸,是神經(jīng)網(wǎng)絡(luò)機器翻譯優(yōu)于經(jīng)典的基于短語的機器翻譯的關(guān)鍵掷伙。2017年谷歌Ashish Vaswani等人參考注意力機制提出了基于自注意力機制的Transformer模型是己,Transformer家族至今依然在NLP的各項任務(wù)保持最佳效果。總結(jié)近十年NMT的發(fā)展主要歷經(jīng)三個階段:一般的編碼器-解碼器模型(Encoder-Decoder)任柜、注意力機制模型卒废、Transformer模型。
新的曙光:Encoder-Decoder模型
上文已經(jīng)提到在2013年提出的這種端到端的機器翻譯模型宙地。一個自然語言的句子可被視作一個時間序列數(shù)據(jù)摔认,類似LSTM、GRU等循環(huán)神經(jīng)網(wǎng)絡(luò)比較適于處理有時間順序的序列數(shù)據(jù)宅粥。如果假設(shè)把源語言和目標語言都視作一個獨立的時間序列數(shù)據(jù)级野,那么機器翻譯就是一個序列生成任務(wù),如何實現(xiàn)一個序列生成任務(wù)呢粹胯?一般以循環(huán)神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的編碼器-解碼器模型框架(亦稱Sequence to Sequence,簡稱Seq2Seq)來做序列生成辰企,Seq2Seq模型包括兩個子模型:一個編碼器和一個解碼器风纠,編碼器、解碼器是各自獨立的循環(huán)神經(jīng)網(wǎng)絡(luò)牢贸,該模型可將給定的一個源語言句子竹观,首先使用一個編碼器將其映射為一個連續(xù)、稠密的向量潜索,然后再使用一個解碼器將該向量轉(zhuǎn)化為一個目標語言句子臭增。
編碼器Encoder對輸入的源語言句子進行編碼,通過非線性變換轉(zhuǎn)化為中間語義表示C:
在第i時刻解碼器Decoder根據(jù)句子編碼器輸出的中間語義表示C和之前已經(jīng)生成的歷史信息y?,y?,……,y?-?來生成下一個目標語言的單詞:
每個y?都依次這么產(chǎn)生竹习,即seq2seq模型就是根據(jù)輸入源語言句子生成了目標語言句子的翻譯模型誊抛。源語言與目標語言的句子雖然語言、語序不一樣整陌,但具有相同的語義拗窃,Encoder在將源語言句子濃縮成一個嵌入空間的向量C后瞎领,Decoder能利用隱含在該向量中的語義信息來重新生成具有相同語義的目標語言句子∷婵洌總而言之九默,Seq2Seq神經(jīng)翻譯模型可模擬人類做翻譯的兩個主要過程:
- 編碼器Encoder解譯來源文字的文意;
- 解碼器Decoder重新編譯該文意至目標語言宾毒。
突破飛躍:注意力機制模型
Seq2Seq模型的局限性
Seq2Seq模型的一個重要假設(shè)是編碼器可把輸入句子的語義全都壓縮成一個固定維度的語義向量驼修,解碼器利用該向量的信息就能重新生成具有相同意義但不同語言的句子。由于隨著輸入句子長度的增加編解碼器的性能急劇下降诈铛,以一個固定維度中間語義向量作為編碼器輸出會丟失很多細節(jié)信息乙各,因此循環(huán)神經(jīng)網(wǎng)絡(luò)難以處理輸入的長句子,一般的Seq2Seq模型存在信息表示的瓶頸癌瘾。
一般的Seq2Seq模型把源語句跟目標語句分開進行處理觅丰,不能直接地建模源語句跟目標語句之間的關(guān)系。那么如何解決這種局限性呢妨退?2015年Bahdanau等人發(fā)表論文首次把注意機制應(yīng)用到聯(lián)合翻譯和對齊單詞中妇萄,解決了Seq2Seq的瓶頸問題。注意力機制可計算目標詞與每個源語詞之間的關(guān)系咬荷,從而直接建模源語句與目標語句之間的關(guān)系冠句。注意力機制又是什么神器,可讓NMT一戰(zhàn)成名決勝機器翻譯競賽呢幸乒?
注意力機制的一般原理
通俗地解釋懦底,在數(shù)據(jù)庫里一般用主鍵Key唯一地標識某一條數(shù)據(jù)記錄Value,訪問某一條數(shù)據(jù)記錄的時候可查詢語句Query搜索與查詢條件匹配的主鍵Key并取出其中的數(shù)據(jù)Value罕扎。注意力機制類似該思路聚唐,是一種軟尋址的概念:假設(shè)數(shù)據(jù)按照<Key, Value>存儲,計算所有的主鍵Key與某一個查詢條件Query的匹配程度腔召,作為權(quán)重值再分別與各條數(shù)據(jù)Value做加權(quán)和作為查詢的結(jié)果杆查,該結(jié)果即注意力。因此臀蛛,注意力機制的一般原理(參考上圖):首先亲桦,將源語句中的構(gòu)成元素想象成是由一系列的<Key, Value>數(shù)據(jù)對構(gòu)成,目標語句由一序列元素Query構(gòu)成浊仆;然后給定目標語句中的某個元素Query客峭,通過計算Query和各個Key的相似性或者相關(guān)性,得到每個Key對應(yīng)Value的權(quán)重系數(shù)抡柿;最后舔琅,可對Value進行加權(quán),即得到最終的Attention數(shù)值沙绝。因此搏明,本質(zhì)上注意力機制是對源語句中元素的Value值進行加權(quán)求和鼠锈,而Query和Key用來計算對應(yīng)Value的權(quán)重系數(shù)。一般性計算公式為:
在機器翻譯中Seq2Seq模型一般是由多個LSTM/GRU等RNN層疊起來星著。2016年9月谷歌發(fā)布神經(jīng)機器翻譯系統(tǒng)GNMT购笆,采用Seq2Seq+注意力機制的模型框架,編碼器網(wǎng)絡(luò)和解碼器網(wǎng)絡(luò)都具有8層LSTM隱層虚循,編碼器的輸出通過注意力機制加權(quán)平均后輸入到解碼器的各個LSTM隱層同欠,最后連接softmax層輸出每個目標語言詞典的每個詞的概率。
GNMT如何計算讓性能大幅提升的注意力呢横缔?假設(shè)(X,Y)為平行語料的任一組源語句-目標語句對铺遂,則:
- 源語句長度為M的字符串:
- 目標語句長度為N的字符串:
- 編碼器輸出d維向量作為h的編碼:
利用貝葉斯定理,句子對的條件概率:
解碼時解碼器在時間點i根據(jù)編碼器輸出的編碼和前i-1個解碼器輸出茎刚,最大化P(Y|X)可求得目標詞襟锐。
GNMT注意力機制實際的計算步驟如下:
高光時刻:基于自注意力機制的Transformer模型
我們提到基于seq2seq+注意力機制比一般的seq2seq的模型架構(gòu)取得了更好的效果,那么這種組合有什么缺點呢膛锭?事實上循環(huán)神經(jīng)網(wǎng)絡(luò)存在著一個困擾研究者已久的問題:無法有效地平行運算粮坞,但不久研究者就等來了福音。2017年6月Transformer模型橫空問世初狰,當時谷歌在發(fā)表的一篇論文《Attention Is All You Need》里參考了注意力機制莫杈,提出了自注意力機制(self-attention)及新的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)——Transformer。
該模型具有以下優(yōu)點:
- 傳統(tǒng)的Seq2Seq模型以RNN為主奢入,制約了GPU的訓(xùn)練速度筝闹,Transformer模型是一個完全不用RNN和CNN的可并行機制計算注意力的模型;
- Transformer改進了RNN最被人詬病的訓(xùn)練慢的缺點腥光,利用self-attention機制實現(xiàn)快速并行計算关顷,并且Transformer可以增加到非常深的深度,充分發(fā)掘DNN模型的特性武福,提升模型準確率解寝。
Transformer模型架構(gòu)
Transformer模型本質(zhì)上也是一個Seq2Seq模型,由編碼器艘儒、解碼器和它們之間的連接層組成,如下圖所示夫偶。在原文中介紹的“The Transformer”編碼器:編碼器Encoder由N=6個完全相同的編碼層Encoder layer堆疊而成界睁,每一層都有兩個子層。第一個子層是一個Multi-Head Attention機制兵拢,第二個子層是一個簡單的翻斟、位置完全連接的前饋網(wǎng)絡(luò)Feed-Forward Network。我們對每個子層再采用一個殘差連接Residualconnection说铃,接著進行層標準化Layer Normalization访惜。每個子層的輸出是LayerNorm(x+Sublayer(x))嘹履,其中Sublayer(x)是由子層本身實現(xiàn)的函數(shù)。
“The Transformer”解碼器:解碼器Decoder同樣由N=6個完全相同的解碼層Decoder Layer堆疊而成债热。除了與每個編碼器層中的相同兩個子層之外砾嫉,解碼器還插入第三個子層(Encoder-Decoder Attention層),該層對編碼器堆棧的輸出執(zhí)行Multi-HeadAttention窒篱。與編碼器類似焕刮,我們在每個子層再采用殘差連接,然后進行層標準化墙杯。
Transformer模型計算attention的方式有三種:
- 編碼器自注意力配并,每一個Encoder都有Multi-Head Attention層;
- 解碼器自注意力高镐,每一個Decoder都有Masked Multi-Head Attention層溉旋;
-
編碼器-解碼器注意力,每一個Decoder都有一個Encoder-Decoder Attention嫉髓,過程和過去的seq2seq+attention的模型相似观腊。
自注意力機制
Transformer模型的核心思想就是自注意力機制(self-attention),能注意輸入序列的不同位置以計算該序列的表示的能力岩喷。自注意力機制顧名思義指的不是源語句和目標語句之間的注意力機制恕沫,而是同一個語句內(nèi)部元素之間發(fā)生的注意力機制。而在計算一般Seq2Seq模型中的注意力以Decoder的輸出作為查詢向量q纱意,Encoder的輸出序列作為鍵向量k婶溯、值向量v,Attention機制發(fā)生在目標語句的元素和源語句中的所有元素之間偷霉。
自注意力機制的計算過程是將Encoder或Decoder的輸入序列的每個位置的向量通過3個線性轉(zhuǎn)換分別變成3個向量:查詢向量q迄委、鍵向量k、值向量v类少,并將每個位置的q拿去跟序列中其他位置的k做匹配叙身,算出匹配程度后利用softmax層取得介于0到1之間的權(quán)重值,并以此權(quán)重跟每個位置的v作加權(quán)平均硫狞,最后取得該位置的輸出向量z信轿。下面介紹self-attention的計算方法。
可縮放的點積注意力
可縮放的點積注意力即如何使用向量來計算自注意力残吩,通過四個步驟來計算自注意力:
- 從每個編碼器的輸入向量(每個單詞的詞向量)中生成三個向量:查詢向量q财忽、鍵向量k、值向量v泣侮。矩陣運算中這三個向量是通過編解碼器輸入X與三個權(quán)重矩陣W??即彪、W?、W?相乘創(chuàng)建的活尊。
2)計算得分隶校。圖示例子輸入一個句子“Thinking Machine”漏益,第一個詞“Thinking”計算自注意力向量,需將輸入句子中的每個單詞對“Thinking”打分深胳。分數(shù)決定了在編碼單詞“Thinking”的過程中有多重視句子的其它部分绰疤。分數(shù)是通過打分單詞(所有輸入句子的單詞)的鍵向量k與“Thinking”的查詢向量q相點積來計算的。比如稠屠,第一個分數(shù)是q?和k?的點積峦睡,第二個分數(shù)是q?和k?的點積。
3)縮放求和:將分數(shù)乘以縮放因子1/√d? (d?是鍵向量的維數(shù)d?=64)讓梯度更穩(wěn)定权埠,然后通過softmax傳遞結(jié)果榨了。softmax的作用是使所有單詞的分數(shù)歸一化,得到的分數(shù)都是正值且和為1攘蔽。softmax分數(shù)決定了每個單詞對編碼當下位置(“Thinking”)的貢獻龙屉。
4)將每個值向量v乘以softmax分數(shù),希望關(guān)注語義上相關(guān)的單詞满俗,并弱化不相關(guān)的單詞转捕。對加權(quán)值向量求和,然后即得到自注意力層在該位置的輸出z?唆垃。
因此五芝,可縮放的點積注意力可通過下面公式計算:
在實際中,注意力計算是以矩陣形式完成的辕万,以便算得更快枢步。那我們接下來就看看如何用通過矩陣運算實現(xiàn)自注意力機制的。
首先求取查詢向量矩陣Q渐尿、鍵向量矩陣K和值向量矩陣V醉途,通過權(quán)重矩陣W??、W?砖茸、W?與輸入矩陣X相乘得到隘擎;同樣求取任意一個單詞的得分是通過它的鍵向量k與所有單詞的查詢向量q相點積來計算的,那么我們可以把所有單詞的鍵向量k的轉(zhuǎn)置組成一個鍵向量矩陣K?凉夯,把所有單詞的查詢向量q組合在一起成為查詢向量矩陣Q货葬,這兩個矩陣相乘得到注意力得分矩陣A=QK?;然后劲够,對注意力得分矩陣A求softmax得到歸一化的得分矩陣A^宝惰,這個矩陣在左乘以值向量矩陣V得到輸出矩陣Z。
多頭注意力
如果只計算一個attention再沧,很難捕捉輸入句中所有空間的信息,為了優(yōu)化模型尊残,原論文中提出了一個新穎的做法——Multi-Head Attention炒瘸。Multi-Head Attention是不能只用嵌入向量維度dmodel的K,Q,V做單一attention淤堵,而是把K,Q,V線性投射到不同空間h次,分別變成維度dq,d?,d?再各自做attention顷扩。
其中拐邪,dq=d?=d?=dmodel/h=64就是投射到h個Head上。Multi-Head Attention允許模型的不同表示子空間聯(lián)合關(guān)注不同位置的信息隘截,如果只有一個attention Head則它的平均值會削弱這個信息扎阶。
Multi-Head Attention為每個Head保持獨立的查詢/鍵/值權(quán)重矩陣W???、W??婶芭、W??东臀,從而產(chǎn)生不同的查詢/鍵/值矩陣(Q?、K?犀农、V?)惰赋。用X乘以W???、W??呵哨、W??矩陣來產(chǎn)生查詢/鍵/值矩陣Q?赁濒、K?、V?孟害。與上述相同的自注意力計算拒炎,只需八次不同的權(quán)重矩陣運算可得到八個不同的Z?矩陣,每一組都代表將輸入文字的隱向量投射到不同空間挨务。最后把這8個矩陣拼在一起击你,通過乘上一個權(quán)重矩陣W?,還原成一個輸出矩陣Z耘子。
Multi-Head Attention的每個Head到底關(guān)注句子中什么信息呢果漾?不同的注意力的Head集中在哪里?以下面這兩句話為例“The animal didn’t crossthe street because it was too tired”和“The animal didn’t cross the street because it was too wide”谷誓,兩個句子中"it"指的是什么呢绒障?“it"指的是"street”,還是“animal”捍歪?當我們編碼“it”一詞時户辱,it的注意力集中在“animal”上和“street”上,從某種意義上說糙臼,模型對“it”一詞的表達在某種程度上是“animal”和“street”的代表庐镐,但是在不用語義下,第一句的it更強烈地指向animal变逃,第二句的it更強烈的指向street必逆。
Transformer模型其他結(jié)構(gòu)
殘差連接與歸一化
編解碼器有一種特別的結(jié)構(gòu):Multi-HeadAttention的輸出接到Feed-forward layer之間有一個子層:residual connection和layer normalization(LN),即殘差連接與層歸一化。殘差連接是構(gòu)建一種新的殘差結(jié)構(gòu)名眉,將輸出改寫為和輸入的殘差粟矿,使得模型在訓(xùn)練時,微小的變化可以被注意到损拢,該方法在計算機視覺常用陌粹。
在把數(shù)據(jù)送入激活函數(shù)之前需進行歸一化,因為我們不希望輸入數(shù)據(jù)落在激活函數(shù)的飽和區(qū)福压。LN是在深度學(xué)習(xí)中一種正規(guī)化方法掏秩,一般和batch normalization(BN)進行比較。BN的主要思想就是在每一層的每一批數(shù)據(jù)上進行歸一化荆姆,LN是在每一個樣本上計算均值和方差蒙幻,LN的優(yōu)點在于獨立計算并針對單一樣本進行正規(guī)化,而不是BN那種在批方向計算均值和方差胞枕。
前饋神經(jīng)網(wǎng)絡(luò)
編解碼層中的注意力子層輸出都會接到一個全連接網(wǎng)絡(luò):Feed-forward networks(FFN)杆煞,包含兩個線性轉(zhuǎn)換和一個ReLu,論文是根據(jù)各個位置(輸入句中的每個文字)分別做FFN腐泻,因此稱為point-wise的FFN决乎。計算公式如下:
線性變換和softmax層
解碼器最后會輸出一個實數(shù)向量。如何把浮點數(shù)變成一個單詞派桩?這便是線性變換層要做的工作构诚,它之后就是softmax層。線性變換層是一個簡單的全連接神經(jīng)網(wǎng)絡(luò)铆惑,它可以把解碼器產(chǎn)生的向量投射到一個比它大得多的范嘱、被稱作對數(shù)幾率(logits)的向量里。
不妨假設(shè)我們的模型從訓(xùn)練集中學(xué)習(xí)一萬個不同的英語單詞(我們模型的“輸出詞表”)员魏。因此對數(shù)幾率向量為一萬個單元格長度的向量——每個單元格對應(yīng)某一個單詞的分數(shù)丑蛤。接下來的softmax層便會把那些分數(shù)變成概率(都為正數(shù)、上限1.0)撕阎。概率最高的單元格被選中受裹,并且它對應(yīng)的單詞被作為這個時間步的輸出。
位置編碼
Seq2Seq模型的輸入僅僅是詞向量虏束,但是Transformer模型摒棄了循環(huán)和卷積棉饶,無法提取序列順序的信息,如果缺失了序列順序信息镇匀,可能會導(dǎo)致所有詞語都對了照藻,但是無法組成有意義的語句。作者是怎么解決這個問題呢汗侵?為了讓模型利用序列的順序幸缕,必須注入序列中關(guān)于詞語相對或者絕對位置的信息群发。在論文中作者引入Positional Encoding:對序列中的詞語出現(xiàn)的位置進行編碼。下圖是20個詞512個詞嵌入維度上的位置編碼可視化发乔。
將句子中每個詞的“位置編碼”添加到編碼器和解碼器堆棧底部的輸入嵌入中也物,位置編碼和詞嵌入的維度dmodel相同,所以它倆可以相加列疗。論文使用不同頻率的正弦和余弦函數(shù)獲取位置信息:
其中pos是位置,i是維度浪蹂,在偶數(shù)位置使用正弦編碼抵栈,在奇數(shù)位置使用余弦編碼。位置編碼的每個維度對應(yīng)于一個正弦曲線坤次。
Transformer模型毋庸置疑是當前機器翻譯的主流模型古劲,面對谷歌等科技巨頭公司強大的實力,百分點認知智能實驗室如何采用Transformer模型研制具有市場競爭力缰猴、工業(yè)級的多語言神經(jīng)翻譯系統(tǒng)呢产艾?第4部分將為您娓娓道來。
工業(yè)級多語言神經(jīng)翻譯模型實踐
多語言模型翻譯框架
谷歌GNMT采用對多種語言的巨大平行語料同時進行訓(xùn)練得到一個可支持多種源語言輸入多種目標語言輸出的神經(jīng)翻譯模型滑绒,但該方法需要昂貴的計算資源支持訓(xùn)練和部署運行闷堡。
百分點的神經(jīng)翻譯系統(tǒng)Deep Translator目前支持中文、英文疑故、日文杠览、俄文、法文纵势、德文踱阿、阿拉伯文、西班牙文钦铁、葡萄牙文软舌、意大利文、希伯來文牛曹、波斯文等20多個語言數(shù)百個方向兩兩互譯佛点,如何在有限的服務(wù)器資源的條件下進行模型訓(xùn)練與在線計算呢?
不同于谷歌GNMT采用多語言單一翻譯模型的架構(gòu)躏仇,研發(fā)團隊提出的Deep Translator的多語言翻譯模型為多平行子模型集成方案恋脚。該方案有兩個主要特點:一是模型獨立性,針對不同語言方向訓(xùn)練不同的翻譯模型焰手;二是“橋接”翻譯糟描,對于中文到其他語言平行語料較少的語言方向,以語料資源較為豐富的英文作為中間語言進行中轉(zhuǎn)翻譯书妻,即先將源語言翻譯為英文船响,再將英文翻譯為目標語言躬拢。
采取上述方案研發(fā)團隊有何深度思考呢?第一點,不同于谷歌面向全球的互聯(lián)網(wǎng)用戶见间,國內(nèi)企業(yè)最終用戶語種翻譯需求明確且要求系統(tǒng)本地化部署聊闯,對部分語言方向如英中、中俄等翻譯質(zhì)量要求較高米诉,同時希望這些語言方向的翻譯效果能持續(xù)提升菱蔬,發(fā)現(xiàn)問題時能及時校正,而其他使用頻次較低的翻譯模型能保證其穩(wěn)定性史侣,這導(dǎo)致高頻使用的語言模型更新頻率會較高拴泌,低頻使用的語言模型更新頻率較低。若將多語言方向的模型統(tǒng)一在一個框架下惊橱,既增加模型復(fù)雜度也影響模型穩(wěn)定性蚪腐,因為升級一個語言方向,勢必會對整個模型參數(shù)進行更新税朴,這樣其他語言方向的翻譯效果也會受到影響回季,每次升級都要對所有語言方向進行效果評測,若部分翻譯效果下降明顯還要重新訓(xùn)練正林,費時費力泡一。而獨立的模型結(jié)構(gòu)對一種語言方向的參數(shù)優(yōu)化不會影響到其他語言方向的翻譯效果,在保證系統(tǒng)整體翻譯效果穩(wěn)定性的基礎(chǔ)上又大大減少了模型更新的工作量卓囚。
第二點瘾杭,工業(yè)級可用的神經(jīng)機器翻譯模型對平行語料質(zhì)量要求較高,一個可用的翻譯模型需要千萬級以上的平行訓(xùn)練語料哪亿,系統(tǒng)支持的語言方向相對較多粥烁,現(xiàn)階段很多語言方向很難獲取足夠的雙邊訓(xùn)練數(shù)據(jù)。針對這個問題的解決方案一般有兩種蝇棉,一是采用無監(jiān)督翻譯模型讨阻,這種翻譯模型只需單邊訓(xùn)練語料,而單邊訓(xùn)練語料相對容易獲取篡殷,但缺點是目前無監(jiān)督翻譯模型成熟度較低翻譯效果難以滿足使用需求钝吮;二是采用“橋接”的方式,因為不同語言同英文之間的雙邊語料相對容易獲取板辽,缺點是經(jīng)英文轉(zhuǎn)譯后精度有所損失奇瘦,且計算資源加倍執(zhí)行效率降低。通過對用戶需求進行分析發(fā)現(xiàn)用戶對翻譯效果的要求大于執(zhí)行效率的要求劲弦,且通過對兩種模型翻譯效果的測評對比耳标,“橋接”結(jié)構(gòu)的翻譯效果優(yōu)于目前無監(jiān)督翻譯模型,所以最終選擇通過英文“橋接”的框架結(jié)構(gòu)邑跪。
十億級平行語料構(gòu)建
平行語料是神經(jīng)機器翻譯研究者夢寐以求的資源次坡,可以毫不夸張地說在突破Transformer模型結(jié)構(gòu)之前平行語料資源就是機器翻譯的競爭力呼猪!不論谷歌、臉書如何從海量的互聯(lián)網(wǎng)爬取多少平行語料砸琅,在行業(yè)領(lǐng)域的平行語料永遠是稀缺資源宋距,因為行業(yè)領(lǐng)域大量的單邊語料(電子文檔、圖書)症脂、專業(yè)的翻譯工作者的翻譯成果并不在互聯(lián)網(wǎng)上谚赎。這些資源的獲取、整理成平行語料并不免費诱篷,需要大量的人工沸版,因此是神經(jīng)機器翻譯深入行業(yè)應(yīng)用的攔路虎。
認知智能實驗室如何構(gòu)建自有的多語種平行語料庫呢兴蒸?除了獲取全世界互聯(lián)網(wǎng)上開放的語料庫資源,開發(fā)團隊設(shè)計一種從電子文檔中的單邊語料構(gòu)建領(lǐng)域平行語料的模型與工具细办,可較為高效地構(gòu)建高質(zhì)量的行業(yè)領(lǐng)域平行語料支撐模型訓(xùn)練橙凳。從單邊語料構(gòu)建平行語料需經(jīng)過分句和句子對齊,那么如何從上千萬句單邊語料計算語句語義的相似性笑撞?開發(fā)團隊提出通過給譯文分類的方式學(xué)習(xí)語義相似性:給定一對雙語文本輸入岛啸,設(shè)計一個可以返回表示各種自然語言關(guān)系(包括相似性和相關(guān)性)的編碼模型。利用這種方式茴肥,模型訓(xùn)練時間大大減少坚踩,同時還能保證雙語語義相似度分類的性能。由此瓤狐,實現(xiàn)快速的雙語文本自動對齊瞬铸,構(gòu)建十億級平行語料。
經(jīng)過整理網(wǎng)上開源的平行語料與構(gòu)建行業(yè)級平行語料础锐,認知智能實驗室形成部分語種高質(zhì)量平行語料庫的數(shù)量如下嗓节。