編者按
在“機器翻譯是如何煉成的(上)”的文章中,我們回顧了機器翻譯的發展史。在本篇文章中,我們將分享機器翻譯系統的理論演算法和技術實踐,講解神經機器翻譯具體是如何煉成的。讀完本文,您將瞭解:
- 神經機器翻譯模型如何進化並發展成令NLP研究者萬眾矚目的Transformer模型;
- 基於Transformer模型,我們如何打造工業級的神經機器翻譯系統。
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),並快速成為線上翻譯系統的主流標配。2016年穀歌部署神經機器翻譯系統(GNMT)之後,當時網上有一句廣為流傳的話:“作為一個翻譯,看到這個新聞的時候,我理解了18世紀紡織工人看到蒸汽機時的憂慮與恐懼。”
2015年注意力機制和基於記憶的神經網路緩解了Encoder-Decoder模型的資訊表示瓶頸,是神經網路機器翻譯優於經典的基於短語的機器翻譯的關鍵。2017年穀歌Ashish Vaswani等人參考注意力機制提出了基於自注意力機制的Transformer模型,Transformer家族至今依然在NLP的各項任務保持最佳效果。總結近十年NMT的發展主要歷經三個階段:一般的編碼器-解碼器模型(Encoder-Decoder)、注意力機制模型、Transformer模型。
下文將逐步深入解析這三個階段的NMT,文中少量的數學公式和概念定義可能充滿“機械感”,如果您在閱讀過程感到十分費勁,那煩請您直接閱讀第4部分,瞭解百分點如何打造自己的工業級NMT系統。
01 新的曙光:Encoder-Decoder模型
上文已經提到在2013年提出的這種端到端的機器翻譯模型。一個自然語言的句子可被視作一個時間序列資料,類似LSTM、GRU等迴圈神經網路比較適於處理有時間順序的序列資料。如果假設把源語言和目標語言都視作一個獨立的時間序列資料,那麼機器翻譯就是一個序列生成任務,如何實現一個序列生成任務呢?一般以迴圈神經網路為基礎的編碼器-解碼器模型框架(亦稱Sequence to Sequence,簡稱Seq2Seq)來做序列生成,Seq2Seq模型包括兩個子模型:一個編碼器和一個解碼器,編碼器、解碼器是各自獨立的迴圈神經網路,該模型可將給定的一個源語言句子,首先使用一個編碼器將其對映為一個連續、稠密的向量,然後再使用一個解碼器將該向量轉化為一個目標語言句子。
在第i時刻解碼器Decoder根據句子編碼器輸出的中間語義表示C和之前已經生成的歷史資訊y₁,y₂,……,yᵢ-₁來生成下一個目標語言的單詞:
每個yᵢ都依次這麼產生,即seq2seq模型就是根據輸入源語言句子生成了目標語言句子的翻譯模型。源語言與目標語言的句子雖然語言、語序不一樣,但具有相同的語義,Encoder在將源語言句子濃縮成一個嵌入空間的向量C後,Decoder能利用隱含在該向量中的語義資訊來重新生成具有相同語義的目標語言句子。總而言之,Seq2Seq神經翻譯模型可模擬人類做翻譯的兩個主要過程:
- 編碼器Encoder解譯來源文字的文意;
- 解碼器Decoder重新編譯該文意至目標語言。
02 突破飛躍:注意力機制模型
2.1. Seq2Seq模型的侷限性
Seq2Seq模型的一個重要假設是編碼器可把輸入句子的語義全都壓縮成一個固定維度的語義向量,解碼器利用該向量的資訊就能重新生成具有相同意義但不同語言的句子。由於隨著輸入句子長度的增加編解碼器的效能急劇下降,以一個固定維度中間語義向量作為編碼器輸出會丟失很多細節資訊,因此迴圈神經網路難以處理輸入的長句子,一般的Seq2Seq模型存在資訊表示的瓶頸。
一般的Seq2Seq模型把源語句跟目標語句分開進行處理,不能直接地建模源語句跟目標語句之間的關係。那麼如何解決這種侷限性呢?2015年Bahdanau等人發表論文首次把注意機制應用到聯合翻譯和對齊單詞中,解決了Seq2Seq的瓶頸問題。注意力機制可計算目標詞與每個源語詞之間的關係,從而直接建模源語句與目標語句之間的關係。注意力機制又是什麼神器,可讓NMT一戰成名決勝機器翻譯競賽呢?
2.2. 注意力機制的一般原理
通俗地解釋,在資料庫裡一般用主鍵Key唯一地標識某一條資料記錄Value,訪問某一條資料記錄的時候可查詢語句Query搜尋與查詢條件匹配的主鍵Key並取出其中的資料Value。注意力機制類似該思路,是一種軟定址的概念:假設資料按照<Key, Value>儲存,計算所有的主鍵Key與某一個查詢條件Query的匹配程度,作為權重值再分別與各條資料Value做加權和作為查詢的結果,該結果即注意力。因此,注意力機制的一般原理(參考上圖):首先,將源語句中的構成元素想象成是由一系列的<Key, Value>資料對構成,目標語句由一序列元素Query構成;然後給定目標語句中的某個元素Query,透過計算Query和各個Key的相似性或者相關性,得到每個Key對應Value的權重係數;最後,可對Value進行加權,即得到最終的Attention數值。因此,本質上注意力機制是對源語句中元素的Value值進行加權求和,而Query和Key用來計算對應Value的權重係數。一般性計算公式為:
在機器翻譯中Seq2Seq模型一般是由多個LSTM/GRU等RNN層疊起來。2016年9月谷歌釋出神經機器翻譯系統GNMT,採用Seq2Seq+注意力機制的模型框架,編碼器網路和解碼器網路都具有8層LSTM隱層,編碼器的輸出透過注意力機制加權平均後輸入到解碼器的各個LSTM隱層,最後連線softmax層輸出每個目標語言詞典的每個詞的機率。
GNMT如何計算讓效能大幅提升的注意力呢?假設(X,Y)為平行語料的任一組源語句-目標語句對,則:
源語句長度為M的字串:
目標語句長度為N的字串:
編碼器輸出d維向量作為h的編碼:
利用貝葉斯定理,句子對的條件機率:
讀到這裡,您也許開始倦意十足,甚至唾棄本文不知所云。請多給點耐心閱讀,因為至此激動人心的時刻才開始:文章的主角Transformer(變形金剛)同學出場了!
03 高光時刻:基於自注意力機制的Transformer模型
第2部分我們提到基於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模型架構。
3.1. 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層;
3.2. 自注意力機制
Transformer模型的核心思想就是自注意力機制(self-attention),能注意輸入序列的不同位置以計算該序列的表示的能力。自注意力機制顧名思義指的不是源語句和目標語句之間的注意力機制,而是同一個語句內部元素之間發生的注意力機制。而在計算一般Seq2Seq模型中的注意力以Decoder的輸出作為查詢向量q,Encoder的輸出序列作為鍵向量k、值向量v,Attention機制發生在目標語句的元素和源語句中的所有元素之間。
▶可縮放的點積注意力
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ᵢ。
在實際中,注意力計算是以矩陣形式完成的,以便算得更快。那我們接下來就看看如何用透過矩陣運算實現自注意力機制的。
▶多頭注意力
如果只計算一個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。
3.3. 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。計算公式如下:
▶線性變換和softmax層
解碼器最後會輸出一個實數向量。如何把浮點數變成一個單詞?這便是線性變換層要做的工作,它之後就是softmax層。線性變換層是一個簡單的全連線神經網路,它可以把解碼器產生的向量投射到一個比它大得多的、被稱作對數機率(logits)的向量裡。
不妨假設我們的模型從訓練集中學習一萬個不同的英語單詞(我們模型的“輸出詞表”)。因此對數機率向量為一萬個單元格長度的向量——每個單元格對應某一個單詞的分數。接下來的softmax層便會把那些分數變成機率(都為正數、上限1.0)。機率最高的單元格被選中,並且它對應的單詞被作為這個時間步的輸出。
▶位置編碼
將句子中每個詞的“位置編碼”新增到編碼器和解碼器堆疊底部的輸入嵌入中,位置編碼和詞嵌入的維度dmodel相同,所以它倆可以相加。論文使用不同頻率的正弦和餘弦函式獲取位置資訊:
其中pos是位置,i是維度,在偶數位置使用正弦編碼,在奇數位置使用餘弦編碼。位置編碼的每個維度對應於一個正弦曲線。
Transformer模型毋庸置疑是當前機器翻譯的主流模型,面對谷歌等科技巨頭公司強大的實力,百分點認知智慧實驗室如何採用Transformer模型研製具有市場競爭力、工業級的多語言神經翻譯系統呢?第4部分將為您娓娓道來。
04 工業級多語言神經翻譯模型實踐
谷歌GNMT採用對多種語言的巨大平行語料同時進行訓練得到一個可支援多種源語言輸入多種目標語言輸出的神經翻譯模型,但該方法需要昂貴的計算資源支援訓練和部署執行。
不同於谷歌GNMT採用多語言單一翻譯模型的架構,研發團隊提出的Deep Translator的多語言翻譯模型為多平行子模型整合方案。該方案有兩個主要特點:一是模型獨立性,針對不同語言方向訓練不同的翻譯模型;二是“橋接”翻譯,對於中文到其他語言平行語料較少的語言方向,以語料資源較為豐富的英文作為中間語言進行中轉翻譯,即先將源語言翻譯為英文,再將英文翻譯為目標語言。
採取上述方案研發團隊有何深度思考呢?第一點,不同於谷歌面向全球的網際網路使用者,國內企業終端使用者語種翻譯需求明確且要求系統本地化部署,對部分語言方向如英中、中俄等翻譯質量要求較高,同時希望這些語言方向的翻譯效果能持續提升,發現問題時能及時校正,而其他使用頻次較低的翻譯模型能保證其穩定性,這導致高頻使用的語言模型更新頻率會較高,低頻使用的語言模型更新頻率較低。若將多語言方向的模型統一在一個框架下,既增加模型複雜度也影響模型穩定性,因為升級一個語言方向,勢必會對整個模型引數進行更新,這樣其他語言方向的翻譯效果也會受到影響,每次升級都要對所有語言方向進行效果評測,若部分翻譯效果下降明顯還要重新訓練,費時費力。而獨立的模型結構對一種語言方向的引數最佳化不會影響到其他語言方向的翻譯效果,在保證系統整體翻譯效果穩定性的基礎上又大大減少了模型更新的工作量。
第二點,工業級可用的神經機器翻譯模型對平行語料質量要求較高,一個可用的翻譯模型需要千萬級以上的平行訓練語料,系統支援的語言方向相對較多,現階段很多語言方向很難獲取足夠的雙邊訓練資料。針對這個問題的解決方案一般有兩種,一是採用無監督翻譯模型,這種翻譯模型只需單邊訓練語料,而單邊訓練語料相對容易獲取,但缺點是目前無監督翻譯模型成熟度較低翻譯效果難以滿足使用需求;二是採用“橋接”的方式,因為不同語言同英文之間的雙邊語料相對容易獲取,缺點是經英文轉譯後精度有所損失,且計算資源加倍執行效率降低。透過對使用者需求進行分析發現使用者對翻譯效果的要求大於執行效率的要求,且透過對兩種模型翻譯效果的測評對比,“橋接”結構的翻譯效果優於目前無監督翻譯模型,所以最終選擇透過英文“橋接”的框架結構。
4.2. 十億級平行語料構建
認知智慧實驗室如何構建自有的多語種平行語料庫呢?除了獲取全世界網際網路上開放的語料庫資源,開發團隊設計一種從電子文件中的單邊語料構建領域平行語料的模型與工具,可較為高效地構建高質量的行業領域平行語料支撐模型訓練。從單邊語料構建平行語料需經過分句和句子對齊,那麼如何從上千萬句單邊語料計算語句語義的相似性?開發團隊提出透過給譯文分類的方式學習語義相似性:給定一對雙語文字輸入,設計一個可以返回表示各種自然語言關係(包括相似性和相關性)的編碼模型。利用這種方式,模型訓練時間大大減少,同時還能保證雙語語義相似度分類的效能。由此,實現快速的雙語文字自動對齊,構建十億級平行語料。
經過整理網上開源的平行語料與構建行業級平行語料,認知智慧實驗室形成部分語種高質量平行語料庫的數量如下。
語種 | 中 | 英 | 俄 | 法 | 阿 | 西 |
中 | —— | —— | —— | —— | —— | —— |
英 | 12000萬 | —— | —— | —— | —— | —— |
俄 | 4600萬 | 2600萬 | —— | —— | —— | —— |
法 | 7600萬 | 11800萬 | 3300萬 | —— | —— | —— |
阿 | 2400萬 | 3500萬 | 3200萬 | 3240萬 | —— | |
西 | 5600萬 | 8200萬 | 2800萬 | 6100萬 | 1400萬 | —— |
打造一款使用者體驗良好的面向行業領域使用者機器翻譯系統始終是認知智慧實驗室研發團隊的孜孜不倦的追求。為了實現這個夢想,不僅僅要採用端到端的神經翻譯模型達到當前效果最佳的多語言翻譯質量,還要提供多使用者協同使用的端到端的翻譯系統。端到端的翻譯系統主要需要解決兩個問題:第一,如何解決多種格式多語言文件格式轉換、圖片文字OCR的技術難題?第二,如何提供多使用者協同操作使用UI介面?
終端使用者一般希望將PDF、圖片、幻燈片等不同格式的透過系統統一轉換為可編輯的電子版檔案並轉譯成最終的目標語言,並較好地保持原有文件的排版格式進行閱讀。那麼如何對文件的格式進行轉換、對圖片的文字進行識別並達到在此技術領域的最佳的效果呢?採用領先的OCR技術讓Deep Translator翻譯系統更加貼近使用者的實際工作場景,支援對PDF、PPT、圖片等多種格式、多種語言文件的直接多語言翻譯而不用人工進行轉換,最終輸出PDF、Word、PPT等可編輯的格式並保持原有的排版風格與格式,方便使用者在源文與譯文之間比較閱讀。
面向科研院所或公司,需要在伺服器資源有限的條件下支援多使用者協同操作使用並提供友好的UI操作介面。Deep Translator翻譯系統經過迭代打磨,形成了四大特色:第一,提供文件翻譯、文字翻譯和文件轉換的功能操作,滿足使用者不同的使用需求;第二,設計任務優先順序排程與排序演算法對多使用者加急任務和正常任務的翻譯;第三,支援單使用者多文件批次上傳、批次下載、引數配置、翻譯進度檢視等豐富的操作;第四,支援多種許可權、多種角色管理及賬號密碼的統一認證。
表1 DeepTranslator翻譯評測BLEU得分
翻譯方向 | BLEU分數 (滿分100) | 測試資料集 | 翻譯方向 | BLEU分數 (滿分100) | 測試資料集 |
英譯中 | 60.74 | UNv1.0_testset | 中譯英 | 51.11 | UNv1.0_testset |
俄譯中 | 53.05 | UNv1.0_testset | 中譯俄 | 35.41 | UNv1.0_testset |
西譯中 | 52.73 | UNv1.0_testset | 中譯西 | 42.98 | UNv1.0_testset |
俄譯英 | 52.71 | UNv1.0_testset | 中譯法 | 40.14 | UNv1.0_testset |
西譯英 | 53.97 | UNv1.0_testset | 中譯阿 | 40.04 | UNv1.0_testset |
英譯法 | 48.50 | UNv1.0_testset | 英譯俄 | 46.29 | UNv1.0_testset |
英譯阿 | 49.13 | UNv1.0_testset | 英譯西 | 53.26 | UNv1.0_testset |
百分點認知智慧實驗室推出的多語種機器翻譯系統Deep Translator支援本地化部署、定製化訓練模型並達到行業最佳的工業級機器翻譯水平。表1給出了Deep Translator在聯合國平行語料庫的官方測試集進行翻譯質量評測結果,在英譯中、俄譯中等行業領域主流翻譯方向的BLEU得分達到最佳水平。
自2017年問世以來Deep Translator已服務於數百家客戶,包括在國內航空、電子等軍工研究所並得到良好口碑,另外與融融網(www.rongrong.cn)合作面向上千家軍工科研院所推廣售賣,在推廣行業機器翻譯服務的道路上我們越走越遠,踐行用認知智慧技術服務國防的使命。
參考文獻:
- Nal Kalchbrenner and Phil Blunsom. 2013. Recurrent Continuous TranslationModels. In Proceedings of EMNLP 2013
- Ilya Sutskever,etc. 2014. Sequence to Sequence Learning with NeuralNetworks.In Proceedings of NIPS 2014.
- Dzmitry Bahdanau etc. 2015. Neural Machine Translation by Jointly Learningto Align and Translate. In Proceedings of ICLR 2015.
- Ashish Vaswani,etc.Attention is All You Need. In Proceedings of NIPS2017.
- Jay Alammar TheIllustrated Transformer,http://jalammar.github.io/illustrated-transformer/
- 張俊林,深度學習中的注意力模型(2017版),https://zhuanlan.zhihu.com/p/37601161