機器翻譯基礎

機器翻譯的思想由來已久,約500年前,著名數學家笛卡爾提出了一種在統一的數字代碼基礎上編寫字典的理念,不同語言中的相同思想共享一個符號,并與萊布尼茲等人試圖來實現。在該思想的影響下,維爾金斯在1668中提出的中介語。中介語的設計試圖將世界上所有的概念加以分類和編碼,有規律地列出并描述所有的概念和實體,并根據它們各自的特點和性質,給予不同的記號和名稱。

隨后的時間,又有不少先驅為這一目標探索奮斗,包括法國、前蘇聯科學家們,但都無疾而終。

基于規則的機器翻譯

機器翻譯第一個被認可的實際研究項目出現于冷戰背景下。1949年,資訊理論研究者WarrenWeave正式提出了機器翻譯的概念。1954年,IBM與美國喬治敦大學合作公布了世界上第一臺翻譯機IBM-701。它能夠將俄語翻譯為英文,雖然身軀巨大,事實上它里面只內建了6條文法轉換規則,以及250個單字。但即使如此,這仍是技術的重大突破,那時人類開始覺得應該很快就能將語言的高墻打破。實驗以每秒打印兩行半的驚人速度,成功將約60句俄文自動翻譯成英文,被視為機器翻譯可行的開端。

image.png

隨后,美蘇兩個超級大國出于對軍事、政治和經濟目的,均投入巨資來進行機器翻譯研究——為此來獲取更多敵方的情報。同時,歐洲國家由于地緣政治和經濟的需要也對機器翻譯研究給予了相當大的重視。中國早在1956年就把機器翻譯研究列入了全國科學工作發展規劃。1957年,中國科學院語言研究所與計算技術研究所合作開展了俄漢機器翻譯試驗,翻譯了9種不同類型的句子。

當時,人們對機器翻譯的高度期待和樂觀主義情緒高漲,但是低估了問題的難度!尤其是自然語言翻譯本身的復雜性及當時計算機軟硬件系統的局限性。不久,人們失望的看到,各家機器翻譯的效果都與期望相差甚遠。泡沫很快要被刺破了。

1964年,美國科學院成立了語言自動處理咨詢委員會。兩年后,在委員會提出的報告中認為機器翻譯代價昂貴,準確率低,速度慢于人工翻譯,未來也不會達到人工翻譯質量。結論就是給機器翻譯的研究直接判了死刑,認為完全不值得繼續投入。在接下來的十來年中,機器翻譯研究從迅速跌入谷底,研究幾乎完全停滯。

進入20世紀70年代,隨著科學技術的發展和各國科技情報交流的日趨頻繁,國與國之間的語言障礙顯得更為嚴重,傳統的人工作業方式已經遠遠不能滿足需求,人們迫切地需要計算機來從事翻譯工作。

這時候,現代語言之父喬姆斯基(Chomsky)的“轉換生成語法”產生了深遠影響力,學者們意識到,要想實現好的翻譯效果,必須在理解語言的基礎上進行翻譯,從理解句法結構上下功夫。有了新思想信念的加持,再加上計算機軟硬件系統飛速地發展,基于語法規則的機器翻譯研究開始如火如荼地展開,相關技術、產品不斷涌現。

但很快,基于規則的機器翻譯就遇到了瓶頸。純靠人工編纂、維護的規則很難全面、準確覆蓋人類繁雜、凌亂、不斷演化的語言現實,而且可拓展性很差。譯文的準確率雖有進步,但依然達不到可用的預期。

自20世紀80年代開始,研究人員逐漸開始數據驅動的機器翻譯方法。1980年,Martin Kay提出了翻譯記憶方法,其基本思想在翻譯新句子時從已經翻譯好的老句子中找出相似部分來輔助新句翻譯。1984年,長尾真(MakotoNagao)提出基于實例的機器翻譯方法,它從實例庫中提取翻譯知識,通過增、刪、改、替換等操作完成翻譯。這些方法,在實踐中都得以廣泛應用。

統計機器翻譯

20世紀80年代末起,基于數據和算法的統計學習方法在理論和應用層面都取得了飛速進展。極端的一個例子是,首個將統計模型引入語音識別和語言處理的現代語音識別和自然語言處理研究的先驅Frederick Jelinek曾有過如此令人驚訝的言論:

每當我開除一個語言學家,語音識別系統就更準確了。

于是,在基于規則的機器翻譯受挫后,學者們開始全面轉型統計機器翻譯。標志性事件是,1990年在芬蘭赫爾辛基召開的第13屆國際計算語言學大會,會上提出了處理大規模真實文本的戰略任務,開啟了語言計算的一個新的歷史階段——基于大規模語料庫的統計自然語言處理。

基于詞的統計機器翻譯模型處理的單元較小,后來逐漸發展起來的基于短語的方法成為統計機器翻譯的主流工作。研究人員開始基于大規模的語料對照數據,構建模型,訓練優化目標,自動化測評效果。這首次使得機器翻譯趨于流程化,從而上了可以快速迭代的快車道。

具體地,Och在2003提出的基于最大熵的對數—線性模型和參數最小錯誤訓練方法促使統計機器翻譯方法能夠將多種不同的特征函數融合進機器翻譯模型中,并且自動學習它們各自的特征權重,使得翻譯性能顯著超越了其他傳統機器翻譯方法。此外,自動評測指標 BLEU的提出不僅避免了人工評價成本昂貴的弊端,而且可以直接成為模型優化的目標,極大地提高了統計機器翻譯系統模型訓練、迭代、更新的效率。

統計機器翻譯方法的特點是幾乎完全依賴對大規模雙語語料庫的自動學習、自動構造機器翻譯系統。這種方法具有廣泛的一般性,與具體語種無關,與語法細節無關,與語言的內容無關,自此也不再需要人工規則集。一些研究機構不斷先后開源機器翻譯系統,以促進學術研究,其中比較著名的是約翰霍普金斯大學教授,Philipp Koehn團隊開發的Moses系統(http://www.statmt.org/moses/),常被作為學術論文中的對比基線

21世紀初期開始,借助于互聯網的發展,統計機器翻譯系統逐漸從2B、2G走向全世界個體的2C。以谷歌、微軟為代表的科研機構和企業均相繼成立機器翻譯團隊并相繼發布了能夠支持世界上幾十種、幾百種常用語言的互聯網機器翻譯系統,迅速普及了機器翻譯的應用場景,極大地提高了人們使用機器翻譯的便利性。

神經網絡機器翻譯

隨著深度學習的迅猛發展,以及在語音、圖像識別領域取得巨大突破,越來越多的自然語言處理問題也開始采用深度學習技術。研究人員逐漸放棄了統計機器翻譯框架中各子模型獨立計算的模式,提出了端到端(end-to-end,句子到句子)的神經機器翻譯模型架構。該架構由編碼器和解碼器兩部分組成,其中編碼器負責將源語言句子編碼成一個實數值向量,然后解碼器基于該向量解碼出目標譯文。

機器翻譯本質上是序列到序列(sequenceto sequence)問題的一個特例,即源語言句子(源語言的詞序列)到目標語言句子(目標語言的詞序列)。Sutskever等在2014提出了基于循環神經網絡(recurrent neuralnetwork, RNN)的編碼器-解碼器(encoder-decoder)架構,并用于序列到序列學習。他們使用一個循環神經網絡將源語句中的詞序列編碼為一個高維向量,然后通過一個解碼器循環神經網絡將此向量解碼為目標語句的詞序列。他們將此模型應用于翻譯任務,并在英法翻譯任務上達到了媲美傳統的統計機器翻譯的效果,由此掀起了神經網絡機器翻譯的熱潮。

2016年9月30日,Google發布了新版神經機器翻譯(GNMT)系統,通過對維基百科和新聞網站選取的語句的測試,相比基于短語的統計翻譯能減少55%到85%的翻譯錯誤,在中英文翻譯人工測評的準確率高達80%左右。面對機器的強悍,翻譯從業人員們首次感受到了寒意,有翻譯員甚至這樣形容:

作為一名翻譯員,看到這個新聞的時候,我理解了18世紀紡織工人看到蒸汽機時的憂慮與恐懼。

但機器翻譯進化的腳步并沒有停下來,隨著注意力機制被引入,機器翻譯的效果又有了飛速的提升。2017年以來,機器翻譯人員拋棄了傳統的RNN、CNN結構,采用完全基于注意力機制的Transformer模型,在效果、訓練速度、性能等多個維度上都碾壓之前所有模型。

image.png

上圖是采用了Transformer模型的百分點機器翻譯系統的翻譯演示案例,從上面的中文和翻譯得到的英文來看,效果優秀,基本不用修改。
但是,神經網絡機器翻譯依舊存在不少待解決的重要問題,包括:

海量數據依賴:效果優異的翻譯模型的訓練普遍需要于上千萬條平行語料,而現實中除了少量世界級大語種之間,很難有如此海量的語料。如何讓模型學習少量的數據或者單邊語料就能達到較好的效果是當前最亟待解決的問題。

易受噪音影響:當前模型非常容易受噪音的影響,我們在實際訓練中發現,引入20%左右的低質量語料(比如意譯味較濃的字幕翻譯),就能使翻譯效果迅速下降。如果訓練模型能更穩健,那么可用的語料數量將大大提高。

專業領域翻譯:在細分的專業領域內(比如醫療),專業語料本身的量會非常稀少,同時存在大量的專業詞匯沒有出現在訓練語料中。如果能利用大量的普通語料和少量的專業語料來建立準確的專業領域機器翻譯系統,那么機器翻譯的應用場景將不僅僅局限于日常新聞領域,真正突破不同語言國家之間的文化、科技藩籬。

翻譯風格問題:由于訓練語料來源廣而雜,同一類型的翻譯在訓練語料中的翻譯方法可能由于翻譯員的個人偏好而五花八門。因此,在用這些語料訓練出來的模型,博采各家之所長,但也部分地博采各家之所短。因此,在用來翻譯新的句子的時候,其結果會有很多不可預見性。如何對翻譯模型中的知識進行提純,得到風格統一的翻譯模型是非常有挑戰性的重要目標。

2013年~2014年不溫不火的自然語言處理(NLP)領域發生了翻天覆地的變化,因為谷歌大腦的Mikolov等人提出了大規模的詞嵌入技術word2vec,RNN、CNN等深度網絡也開始應用于NLP的各項任務,全世界NLP研究者歡欣鼓舞、躍躍欲試,準備告別令人煎熬的平淡期,開啟一個屬于NLP的新時代。

在這兩年機器翻譯領域同樣發生了“The Big Bang”。2013年牛津大學Nal Kalchbrenner和Phil Blunsom提出端到端神經機器翻譯(Encoder-Decoder模型),2014年谷歌公司的Ilya Sutskerver等人將LSTM引入到Encoder-Decoder模型中。這兩件事標志著以神經網絡作為基礎的機器翻譯,開始全面超越此前以統計模型為基礎的統計機器翻譯(SMT),并快速成為在線翻譯系統的主流標配。

2015年注意力機制和基于記憶的神經網絡緩解了Encoder-Decoder模型的信息表示瓶頸,是神經網絡機器翻譯優于經典的基于短語的機器翻譯的關鍵。2017年谷歌Ashish Vaswani等人參考注意力機制提出了基于自注意力機制的Transformer模型,Transformer家族至今依然在NLP的各項任務保持最佳效果。總結近十年NMT的發展主要歷經三個階段:一般的編碼器-解碼器模型(Encoder-Decoder)、注意力機制模型、Transformer模型。

新的曙光:Encoder-Decoder模型

上文已經提到在2013年提出的這種端到端的機器翻譯模型。一個自然語言的句子可被視作一個時間序列數據,類似LSTM、GRU等循環神經網絡比較適于處理有時間順序的序列數據。如果假設把源語言和目標語言都視作一個獨立的時間序列數據,那么機器翻譯就是一個序列生成任務,如何實現一個序列生成任務呢?一般以循環神經網絡為基礎的編碼器-解碼器模型框架(亦稱Sequence to Sequence,簡稱Seq2Seq)來做序列生成,Seq2Seq模型包括兩個子模型:一個編碼器和一個解碼器,編碼器、解碼器是各自獨立的循環神經網絡,該模型可將給定的一個源語言句子,首先使用一個編碼器將其映射為一個連續、稠密的向量,然后再使用一個解碼器將該向量轉化為一個目標語言句子。

編碼器Encoder對輸入的源語言句子進行編碼,通過非線性變換轉化為中間語義表示C:


image.png

在第i時刻解碼器Decoder根據句子編碼器輸出的中間語義表示C和之前已經生成的歷史信息y?,y?,……,y?-?來生成下一個目標語言的單詞:


image.png
image.png

每個y?都依次這么產生,即seq2seq模型就是根據輸入源語言句子生成了目標語言句子的翻譯模型。源語言與目標語言的句子雖然語言、語序不一樣,但具有相同的語義,Encoder在將源語言句子濃縮成一個嵌入空間的向量C后,Decoder能利用隱含在該向量中的語義信息來重新生成具有相同語義的目標語言句子??偠灾琒eq2Seq神經翻譯模型可模擬人類做翻譯的兩個主要過程:

  • 編碼器Encoder解譯來源文字的文意;
  • 解碼器Decoder重新編譯該文意至目標語言。

突破飛躍:注意力機制模型

Seq2Seq模型的局限性

Seq2Seq模型的一個重要假設是編碼器可把輸入句子的語義全都壓縮成一個固定維度的語義向量,解碼器利用該向量的信息就能重新生成具有相同意義但不同語言的句子。由于隨著輸入句子長度的增加編解碼器的性能急劇下降,以一個固定維度中間語義向量作為編碼器輸出會丟失很多細節信息,因此循環神經網絡難以處理輸入的長句子,一般的Seq2Seq模型存在信息表示的瓶頸。

一般的Seq2Seq模型把源語句跟目標語句分開進行處理,不能直接地建模源語句跟目標語句之間的關系。那么如何解決這種局限性呢?2015年Bahdanau等人發表論文首次把注意機制應用到聯合翻譯和對齊單詞中,解決了Seq2Seq的瓶頸問題。注意力機制可計算目標詞與每個源語詞之間的關系,從而直接建模源語句與目標語句之間的關系。注意力機制又是什么神器,可讓NMT一戰成名決勝機器翻譯競賽呢?

注意力機制的一般原理

通俗地解釋,在數據庫里一般用主鍵Key唯一地標識某一條數據記錄Value,訪問某一條數據記錄的時候可查詢語句Query搜索與查詢條件匹配的主鍵Key并取出其中的數據Value。注意力機制類似該思路,是一種軟尋址的概念:假設數據按照<Key, Value>存儲,計算所有的主鍵Key與某一個查詢條件Query的匹配程度,作為權重值再分別與各條數據Value做加權和作為查詢的結果,該結果即注意力。因此,注意力機制的一般原理(參考上圖):首先,將源語句中的構成元素想象成是由一系列的<Key, Value>數據對構成,目標語句由一序列元素Query構成;然后給定目標語句中的某個元素Query,通過計算Query和各個Key的相似性或者相關性,得到每個Key對應Value的權重系數;最后,可對Value進行加權,即得到最終的Attention數值。因此,本質上注意力機制是對源語句中元素的Value值進行加權求和,而Query和Key用來計算對應Value的權重系數。一般性計算公式為:


image.png

在機器翻譯中Seq2Seq模型一般是由多個LSTM/GRU等RNN層疊起來。2016年9月谷歌發布神經機器翻譯系統GNMT,采用Seq2Seq+注意力機制的模型框架,編碼器網絡和解碼器網絡都具有8層LSTM隱層,編碼器的輸出通過注意力機制加權平均后輸入到解碼器的各個LSTM隱層,最后連接softmax層輸出每個目標語言詞典的每個詞的概率。

GNMT如何計算讓性能大幅提升的注意力呢?假設(X,Y)為平行語料的任一組源語句-目標語句對,則:

  • 源語句長度為M的字符串:
image
  • 目標語句長度為N的字符串:
image
  • 編碼器輸出d維向量作為h的編碼:
image

利用貝葉斯定理,句子對的條件概率:

image

解碼時解碼器在時間點i根據編碼器輸出的編碼和前i-1個解碼器輸出,最大化P(Y|X)可求得目標詞。

GNMT注意力機制實際的計算步驟如下:

image.png
image.png

高光時刻:基于自注意力機制的Transformer模型

我們提到基于seq2seq+注意力機制比一般的seq2seq的模型架構取得了更好的效果,那么這種組合有什么缺點呢?事實上循環神經網絡存在著一個困擾研究者已久的問題:無法有效地平行運算,但不久研究者就等來了福音。2017年6月Transformer模型橫空問世,當時谷歌在發表的一篇論文《Attention Is All You Need》里參考了注意力機制,提出了自注意力機制(self-attention)及新的神經網絡結構——Transformer。

該模型具有以下優點:

  • 傳統的Seq2Seq模型以RNN為主,制約了GPU的訓練速度,Transformer模型是一個完全不用RNN和CNN的可并行機制計算注意力的模型;
  • Transformer改進了RNN最被人詬病的訓練慢的缺點,利用self-attention機制實現快速并行計算,并且Transformer可以增加到非常深的深度,充分發掘DNN模型的特性,提升模型準確率。

Transformer模型架構

Transformer模型本質上也是一個Seq2Seq模型,由編碼器、解碼器和它們之間的連接層組成,如下圖所示。在原文中介紹的“The Transformer”編碼器:編碼器Encoder由N=6個完全相同的編碼層Encoder layer堆疊而成,每一層都有兩個子層。第一個子層是一個Multi-Head Attention機制,第二個子層是一個簡單的、位置完全連接的前饋網絡Feed-Forward Network。我們對每個子層再采用一個殘差連接Residualconnection,接著進行層標準化Layer Normalization。每個子層的輸出是LayerNorm(x+Sublayer(x)),其中Sublayer(x)是由子層本身實現的函數。

“The Transformer”解碼器:解碼器Decoder同樣由N=6個完全相同的解碼層Decoder Layer堆疊而成。除了與每個編碼器層中的相同兩個子層之外,解碼器還插入第三個子層(Encoder-Decoder Attention層),該層對編碼器堆棧的輸出執行Multi-HeadAttention。與編碼器類似,我們在每個子層再采用殘差連接,然后進行層標準化。

Transformer模型計算attention的方式有三種:

  • 編碼器自注意力,每一個Encoder都有Multi-Head Attention層;
  • 解碼器自注意力,每一個Decoder都有Masked Multi-Head Attention層;
  • 編碼器-解碼器注意力,每一個Decoder都有一個Encoder-Decoder Attention,過程和過去的seq2seq+attention的模型相似。


    image.png

自注意力機制

Transformer模型的核心思想就是自注意力機制(self-attention),能注意輸入序列的不同位置以計算該序列的表示的能力。自注意力機制顧名思義指的不是源語句和目標語句之間的注意力機制,而是同一個語句內部元素之間發生的注意力機制。而在計算一般Seq2Seq模型中的注意力以Decoder的輸出作為查詢向量q,Encoder的輸出序列作為鍵向量k、值向量v,Attention機制發生在目標語句的元素和源語句中的所有元素之間。

自注意力機制的計算過程是將Encoder或Decoder的輸入序列的每個位置的向量通過3個線性轉換分別變成3個向量:查詢向量q、鍵向量k、值向量v,并將每個位置的q拿去跟序列中其他位置的k做匹配,算出匹配程度后利用softmax層取得介于0到1之間的權重值,并以此權重跟每個位置的v作加權平均,最后取得該位置的輸出向量z。下面介紹self-attention的計算方法。

可縮放的點積注意力

image.png

可縮放的點積注意力即如何使用向量來計算自注意力,通過四個步驟來計算自注意力:

  1. 從每個編碼器的輸入向量(每個單詞的詞向量)中生成三個向量:查詢向量q、鍵向量k、值向量v。矩陣運算中這三個向量是通過編解碼器輸入X與三個權重矩陣W??、W?、W?相乘創建的。

2)計算得分。圖示例子輸入一個句子“Thinking Machine”,第一個詞“Thinking”計算自注意力向量,需將輸入句子中的每個單詞對“Thinking”打分。分數決定了在編碼單詞“Thinking”的過程中有多重視句子的其它部分。分數是通過打分單詞(所有輸入句子的單詞)的鍵向量k與“Thinking”的查詢向量q相點積來計算的。比如,第一個分數是q?和k?的點積,第二個分數是q?和k?的點積。

3)縮放求和:將分數乘以縮放因子1/√d? (d?是鍵向量的維數d?=64)讓梯度更穩定,然后通過softmax傳遞結果。softmax的作用是使所有單詞的分數歸一化,得到的分數都是正值且和為1。softmax分數決定了每個單詞對編碼當下位置(“Thinking”)的貢獻。

4)將每個值向量v乘以softmax分數,希望關注語義上相關的單詞,并弱化不相關的單詞。對加權值向量求和,然后即得到自注意力層在該位置的輸出z?。

因此,可縮放的點積注意力可通過下面公式計算:


image.png

在實際中,注意力計算是以矩陣形式完成的,以便算得更快。那我們接下來就看看如何用通過矩陣運算實現自注意力機制的。

首先求取查詢向量矩陣Q、鍵向量矩陣K和值向量矩陣V,通過權重矩陣W??、W?、W?與輸入矩陣X相乘得到;同樣求取任意一個單詞的得分是通過它的鍵向量k與所有單詞的查詢向量q相點積來計算的,那么我們可以把所有單詞的鍵向量k的轉置組成一個鍵向量矩陣K?,把所有單詞的查詢向量q組合在一起成為查詢向量矩陣Q,這兩個矩陣相乘得到注意力得分矩陣A=QK?;然后,對注意力得分矩陣A求softmax得到歸一化的得分矩陣A^,這個矩陣在左乘以值向量矩陣V得到輸出矩陣Z。

image.png

多頭注意力

image.png

如果只計算一個attention,很難捕捉輸入句中所有空間的信息,為了優化模型,原論文中提出了一個新穎的做法——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允許模型的不同表示子空間聯合關注不同位置的信息,如果只有一個attention Head則它的平均值會削弱這個信息。

Multi-Head Attention為每個Head保持獨立的查詢/鍵/值權重矩陣W???、W??、W??,從而產生不同的查詢/鍵/值矩陣(Q?、K?、V?)。用X乘以W???、W??、W??矩陣來產生查詢/鍵/值矩陣Q?、K?、V?。與上述相同的自注意力計算,只需八次不同的權重矩陣運算可得到八個不同的Z?矩陣,每一組都代表將輸入文字的隱向量投射到不同空間。最后把這8個矩陣拼在一起,通過乘上一個權重矩陣W?,還原成一個輸出矩陣Z。

Multi-Head Attention的每個Head到底關注句子中什么信息呢?不同的注意力的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模型其他結構

殘差連接與歸一化

編解碼器有一種特別的結構:Multi-HeadAttention的輸出接到Feed-forward layer之間有一個子層:residual connection和layer normalization(LN),即殘差連接與層歸一化。殘差連接是構建一種新的殘差結構,將輸出改寫為和輸入的殘差,使得模型在訓練時,微小的變化可以被注意到,該方法在計算機視覺常用。

在把數據送入激活函數之前需進行歸一化,因為我們不希望輸入數據落在激活函數的飽和區。LN是在深度學習中一種正規化方法,一般和batch normalization(BN)進行比較。BN的主要思想就是在每一層的每一批數據上進行歸一化,LN是在每一個樣本上計算均值和方差,LN的優點在于獨立計算并針對單一樣本進行正規化,而不是BN那種在批方向計算均值和方差。

前饋神經網絡

編解碼層中的注意力子層輸出都會接到一個全連接網絡:Feed-forward networks(FFN),包含兩個線性轉換和一個ReLu,論文是根據各個位置(輸入句中的每個文字)分別做FFN,因此稱為point-wise的FFN。計算公式如下:

image.png

線性變換和softmax層

解碼器最后會輸出一個實數向量。如何把浮點數變成一個單詞?這便是線性變換層要做的工作,它之后就是softmax層。線性變換層是一個簡單的全連接神經網絡,它可以把解碼器產生的向量投射到一個比它大得多的、被稱作對數幾率(logits)的向量里。

不妨假設我們的模型從訓練集中學習一萬個不同的英語單詞(我們模型的“輸出詞表”)。因此對數幾率向量為一萬個單元格長度的向量——每個單元格對應某一個單詞的分數。接下來的softmax層便會把那些分數變成概率(都為正數、上限1.0)。概率最高的單元格被選中,并且它對應的單詞被作為這個時間步的輸出。

位置編碼

Seq2Seq模型的輸入僅僅是詞向量,但是Transformer模型摒棄了循環和卷積,無法提取序列順序的信息,如果缺失了序列順序信息,可能會導致所有詞語都對了,但是無法組成有意義的語句。作者是怎么解決這個問題呢?為了讓模型利用序列的順序,必須注入序列中關于詞語相對或者絕對位置的信息。在論文中作者引入Positional Encoding:對序列中的詞語出現的位置進行編碼。下圖是20個詞512個詞嵌入維度上的位置編碼可視化。

將句子中每個詞的“位置編碼”添加到編碼器和解碼器堆棧底部的輸入嵌入中,位置編碼和詞嵌入的維度dmodel相同,所以它倆可以相加。論文使用不同頻率的正弦和余弦函數獲取位置信息:

image.png

其中pos是位置,i是維度,在偶數位置使用正弦編碼,在奇數位置使用余弦編碼。位置編碼的每個維度對應于一個正弦曲線。

Transformer模型毋庸置疑是當前機器翻譯的主流模型,面對谷歌等科技巨頭公司強大的實力,百分點認知智能實驗室如何采用Transformer模型研制具有市場競爭力、工業級的多語言神經翻譯系統呢?第4部分將為您娓娓道來。

工業級多語言神經翻譯模型實踐

多語言模型翻譯框架

谷歌GNMT采用對多種語言的巨大平行語料同時進行訓練得到一個可支持多種源語言輸入多種目標語言輸出的神經翻譯模型,但該方法需要昂貴的計算資源支持訓練和部署運行。

百分點的神經翻譯系統Deep Translator目前支持中文、英文、日文、俄文、法文、德文、阿拉伯文、西班牙文、葡萄牙文、意大利文、希伯來文、波斯文等20多個語言數百個方向兩兩互譯,如何在有限的服務器資源的條件下進行模型訓練與在線計算呢?
不同于谷歌GNMT采用多語言單一翻譯模型的架構,研發團隊提出的Deep Translator的多語言翻譯模型為多平行子模型集成方案。該方案有兩個主要特點:一是模型獨立性,針對不同語言方向訓練不同的翻譯模型;二是“橋接”翻譯,對于中文到其他語言平行語料較少的語言方向,以語料資源較為豐富的英文作為中間語言進行中轉翻譯,即先將源語言翻譯為英文,再將英文翻譯為目標語言。

image.png

采取上述方案研發團隊有何深度思考呢?第一點,不同于谷歌面向全球的互聯網用戶,國內企業最終用戶語種翻譯需求明確且要求系統本地化部署,對部分語言方向如英中、中俄等翻譯質量要求較高,同時希望這些語言方向的翻譯效果能持續提升,發現問題時能及時校正,而其他使用頻次較低的翻譯模型能保證其穩定性,這導致高頻使用的語言模型更新頻率會較高,低頻使用的語言模型更新頻率較低。若將多語言方向的模型統一在一個框架下,既增加模型復雜度也影響模型穩定性,因為升級一個語言方向,勢必會對整個模型參數進行更新,這樣其他語言方向的翻譯效果也會受到影響,每次升級都要對所有語言方向進行效果評測,若部分翻譯效果下降明顯還要重新訓練,費時費力。而獨立的模型結構對一種語言方向的參數優化不會影響到其他語言方向的翻譯效果,在保證系統整體翻譯效果穩定性的基礎上又大大減少了模型更新的工作量。

第二點,工業級可用的神經機器翻譯模型對平行語料質量要求較高,一個可用的翻譯模型需要千萬級以上的平行訓練語料,系統支持的語言方向相對較多,現階段很多語言方向很難獲取足夠的雙邊訓練數據。針對這個問題的解決方案一般有兩種,一是采用無監督翻譯模型,這種翻譯模型只需單邊訓練語料,而單邊訓練語料相對容易獲取,但缺點是目前無監督翻譯模型成熟度較低翻譯效果難以滿足使用需求;二是采用“橋接”的方式,因為不同語言同英文之間的雙邊語料相對容易獲取,缺點是經英文轉譯后精度有所損失,且計算資源加倍執行效率降低。通過對用戶需求進行分析發現用戶對翻譯效果的要求大于執行效率的要求,且通過對兩種模型翻譯效果的測評對比,“橋接”結構的翻譯效果優于目前無監督翻譯模型,所以最終選擇通過英文“橋接”的框架結構。

十億級平行語料構建

平行語料是神經機器翻譯研究者夢寐以求的資源,可以毫不夸張地說在突破Transformer模型結構之前平行語料資源就是機器翻譯的競爭力!不論谷歌、臉書如何從海量的互聯網爬取多少平行語料,在行業領域的平行語料永遠是稀缺資源,因為行業領域大量的單邊語料(電子文檔、圖書)、專業的翻譯工作者的翻譯成果并不在互聯網上。這些資源的獲取、整理成平行語料并不免費,需要大量的人工,因此是神經機器翻譯深入行業應用的攔路虎。

image.png

認知智能實驗室如何構建自有的多語種平行語料庫呢?除了獲取全世界互聯網上開放的語料庫資源,開發團隊設計一種從電子文檔中的單邊語料構建領域平行語料的模型與工具,可較為高效地構建高質量的行業領域平行語料支撐模型訓練。從單邊語料構建平行語料需經過分句和句子對齊,那么如何從上千萬句單邊語料計算語句語義的相似性?開發團隊提出通過給譯文分類的方式學習語義相似性:給定一對雙語文本輸入,設計一個可以返回表示各種自然語言關系(包括相似性和相關性)的編碼模型。利用這種方式,模型訓練時間大大減少,同時還能保證雙語語義相似度分類的性能。由此,實現快速的雙語文本自動對齊,構建十億級平行語料。

經過整理網上開源的平行語料與構建行業級平行語料,認知智能實驗室形成部分語種高質量平行語料庫的數量如下。

屏幕快照 2020-03-09 下午7.56.54.png

參考:
https://www.jiqizhixin.com/articles/2020-01-20-4

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。