編者按
創(chuàng)新互聯(lián)是一家專業(yè)提供鐵門關(guān)企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站制作、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為鐵門關(guān)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。在 “機(jī)器翻譯是如何煉成的(上)”的文章中,我們回顧了機(jī)器翻譯的發(fā)展史。在本篇文章中,我們將分享機(jī)器翻譯系統(tǒng)的理論算法和技術(shù)實(shí)踐,講解神經(jīng)機(jī)器翻譯具體是如何煉成的。讀完本文,您將了解:
· 神經(jīng)機(jī)器翻譯模型如何進(jìn)化并發(fā)展成令NLP研究者萬眾矚目的Transformer模型;
· 基于Transformer模型,我們?nèi)绾未蛟旃I(yè)級(jí)的神經(jīng)機(jī)器翻譯系統(tǒng)。
2013年~2014年不溫不火的自然語言處理(NLP)領(lǐng)域發(fā)生了翻天覆地的變化,因?yàn)楣雀璐竽X的Mikolov等人提出了大規(guī)模的詞嵌入技術(shù)word2vec,RNN、CNN等深度網(wǎng)絡(luò)也開始應(yīng)用于NLP的各項(xiàng)任務(wù),全世界NLP研究者歡欣鼓舞、躍躍欲試,準(zhǔn)備告別令人煎熬的平淡期,開啟一個(gè)屬于NLP的新時(shí)代。
在這兩年機(jī)器翻譯領(lǐng)域同樣發(fā)生了“The Big Bang”。2013年牛津大學(xué)Nal Kalchbrenner和Phil Blunsom提出端到端神經(jīng)機(jī)器翻譯(Encoder-Decoder模型),2014年谷歌公司的Ilya Sutskerver等人將LSTM引入到Encoder-Decoder模型中。這兩件事標(biāo)志著以神經(jīng)網(wǎng)絡(luò)作為基礎(chǔ)的機(jī)器翻譯,開始全面超越此前以統(tǒng)計(jì)模型為基礎(chǔ)的統(tǒng)計(jì)機(jī)器翻譯(SMT),并快速成為在線翻譯系統(tǒng)的主流標(biāo)配。2016年谷歌部署神經(jīng)機(jī)器翻譯系統(tǒng)(GNMT)之后,當(dāng)時(shí)網(wǎng)上有一句廣為流傳的話:“作為一個(gè)翻譯,看到這個(gè)新聞的時(shí)候,我理解了18世紀(jì)紡織工人看到蒸汽機(jī)時(shí)的憂慮與恐懼。”
2015年注意力機(jī)制和基于記憶的神經(jīng)網(wǎng)絡(luò)緩解了Encoder-Decoder模型的信息表示瓶頸,是神經(jīng)網(wǎng)絡(luò)機(jī)器翻譯優(yōu)于經(jīng)典的基于短語的機(jī)器翻譯的關(guān)鍵。2017年谷歌Ashish Vaswani等人參考注意力機(jī)制提出了基于自注意力機(jī)制的Transformer模型,Transformer家族至今依然在NLP的各項(xiàng)任務(wù)保持最佳效果??偨Y(jié)近十年NMT的發(fā)展主要?dú)v經(jīng)三個(gè)階段:一般的編碼器-解碼器模型(Encoder-Decoder)、注意力機(jī)制模型、Transformer模型。
下文將逐步深入解析這三個(gè)階段的NMT,文中少量的數(shù)學(xué)公式和概念定義可能充滿“機(jī)械感”,如果您在閱讀過程感到十分費(fèi)勁,那煩請(qǐng)您直接閱讀第4部分,了解百分點(diǎn)如何打造自己的工業(yè)級(jí)NMT系統(tǒng)。
01 新的曙光:Encoder-Decoder模型
上文已經(jīng)提到在2013年提出的這種端到端的機(jī)器翻譯模型。一個(gè)自然語言的句子可被視作一個(gè)時(shí)間序列數(shù)據(jù),類似LSTM、GRU等循環(huán)神經(jīng)網(wǎng)絡(luò)比較適于處理有時(shí)間順序的序列數(shù)據(jù)。如果假設(shè)把源語言和目標(biāo)語言都視作一個(gè)獨(dú)立的時(shí)間序列數(shù)據(jù),那么機(jī)器翻譯就是一個(gè)序列生成任務(wù),如何實(shí)現(xiàn)一個(gè)序列生成任務(wù)呢?一般以循環(huán)神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的編碼器-解碼器模型框架(亦稱Sequence to Sequence,簡(jiǎn)稱Seq2Seq)來做序列生成,Seq2Seq模型包括兩個(gè)子模型:一個(gè)編碼器和一個(gè)解碼器,編碼器、解碼器是各自獨(dú)立的循環(huán)神經(jīng)網(wǎng)絡(luò),該模型可將給定的一個(gè)源語言句子,首先使用一個(gè)編碼器將其映射為一個(gè)連續(xù)、稠密的向量,然后再使用一個(gè)解碼器將該向量轉(zhuǎn)化為一個(gè)目標(biāo)語言句子。
編碼器Encoder對(duì)輸入的源語言句子進(jìn)行編碼,通過非線性變換轉(zhuǎn)化為中間語義表示C: