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

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

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

2.1. Seq2Seq模型的局限性

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

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

2.2. 注意力機制的一般原理

通俗地解釋,在數(shù)據(jù)庫里一般用主鍵Key唯一地標識某一條數(shù)據(jù)記錄Value,訪問某一條數(shù)據(jù)記錄的時候可查詢語句Query搜索與查詢條件匹配的主鍵Key并取出其中的數(shù)據(jù)Value。注意力機制類似該思路,是一種軟尋址的概念:假設數(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的相似性或者相關性,得到每個Key對應Value的權(quán)重系數(shù);最后,可對Value進行加權(quán),即得到最終的Attention數(shù)值。因此,本質(zhì)上注意力機制是對源語句中元素的Value值進行加權(quán)求和,而Query和Key用來計算對應Value的權(quán)重系數(shù)。一般性計算公式為:

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

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

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

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

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

讀到這里,您也許開始倦意十足,甚至唾棄本文不知所云。請多給點耐心閱讀,因為至此激動人心的時刻才開始:文章的主角Transformer(變形金剛)同學出場了!

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

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

下面我們深入解析Transformer模型架構(gòu)。

3.1. Transformer模型架構(gòu)

Transformer模型本質(zhì)上也是一個Seq2Seq模型,由編碼器、解碼器和它們之間的連接層組成,如下圖所示。在原文中介紹的“The Transformer”編碼器:編碼器Encoder由N=6個完全相同的編碼層Encoder layer堆疊而成,每一層都有兩個子層。第一個子層是一個Multi-Head Attention機制,第二個子層是一個簡單的、位置完全連接的前饋網(wǎng)絡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的方式有三種:

3.2.自注意力機制

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)建的。

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

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

將每個值向量v乘以softmax分數(shù),希望關注語義上相關的單詞,并弱化不相關的單詞。對加權(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是不能只用嵌入向量維度d(model)的K,Q,V做單一attention,而是把K,Q,V線性投射到不同空間h次,分別變成維度dq,d?,d?再各自做attention。

其中,dq=d?=d?=d(model)/h=64就是投射到h個Head上。Multi-Head Attention允許模型的不同表示子空間聯(liá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到底關注句子中什么信息呢?不同的注意力的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模型其他結(jié)構(gòu)

?殘差連接與歸一化

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

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

?前饋神經(jīng)網(wǎng)絡

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

?線性變換和softmax層

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

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

?位置編碼

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

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

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

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

04 工業(yè)級多語言神經(jīng)翻譯模型實踐
4.1. 多語言模型翻譯框架

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

百分點的神經(jīng)翻譯系統(tǒng)Deep Translator

百分點的神經(jīng)翻譯系統(tǒng)Deep Translator目前支持中文、英文、日文、俄文、法文、德文、阿拉伯文、西班牙文、葡萄牙文、意大利文、希伯來文、波斯文等20多個語言數(shù)百個方向兩兩互譯,如何在有限的服務器資源的條件下進行模型訓練與在線計算呢?

不同于谷歌GNMT采用多語言單一翻譯模型的架構(gòu),研發(fā)團隊提出的Deep Translator的多語言翻譯模型為多平行子模型集成方案。該方案有兩個主要特點:一是模型獨立性,針對不同語言方向訓練不同的翻譯模型;二是“橋接”翻譯,對于中文到其他語言平行語料較少的語言方向,以語料資源較為豐富的英文作為中間語言進行中轉(zhuǎn)翻譯,即先將源語言翻譯為英文,再將英文翻譯為目標語言。

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

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

4.2. 十億級平行語料構(gòu)建

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

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

經(jīng)過整理網(wǎng)上開源的平行語料與構(gòu)建行業(yè)級平行語料,認知智能實驗室形成部分語種高質(zhì)量平行語料庫的數(shù)量如下。

語種西
————————————
12000萬——————————
4600萬2600萬————————
7600萬11800萬3300萬——————
2400萬3500萬3200萬3240萬——
西5600萬8200萬2800萬6100萬1400萬——

4.3. 文檔格式轉(zhuǎn)換、OCR與UI設計

打造一款用戶體驗良好的面向行業(yè)領域用戶機器翻譯系統(tǒng)始終是認知智能實驗室研發(fā)團隊的孜孜不倦的追求。為了實現(xiàn)這個夢想,不僅僅要采用端到端的神經(jīng)翻譯模型達到當前效果最佳的多語言翻譯質(zhì)量,還要提供多用戶協(xié)同使用的端到端的翻譯系統(tǒng)。端到端的翻譯系統(tǒng)主要需要解決兩個問題:第一,如何解決多種格式多語言文檔格式轉(zhuǎn)換、圖片文字OCR的技術(shù)難題?第二,如何提供多用戶協(xié)同操作使用UI界面?

最終用戶一般希望將PDF、圖片、幻燈片等不同格式的通過系統(tǒng)統(tǒng)一轉(zhuǎn)換為可編輯的電子版文件并轉(zhuǎn)譯成最終的目標語言,并較好地保持原有文檔的排版格式進行閱讀。那么如何對文檔的格式進行轉(zhuǎn)換、對圖片的文字進行識別并達到在此技術(shù)領域的最佳的效果呢?采用領先的OCR技術(shù)讓Deep Translator翻譯系統(tǒng)更加貼近用戶的實際工作場景,支持對PDF、PPT、圖片等多種格式、多種語言文檔的直接多語言翻譯而不用人工進行轉(zhuǎn)換,最終輸出PDF、Word、PPT等可編輯的格式并保持原有的排版風格與格式,方便用戶在源文與譯文之間比較閱讀。

面向科研院所或公司,需要在服務器資源有限的條件下支持多用戶協(xié)同操作使用并提供友好的UI操作界面。Deep Translator翻譯系統(tǒng)經(jīng)過迭代打磨,形成了四大特色:第一,提供文檔翻譯、文本翻譯和文檔轉(zhuǎn)換的功能操作,滿足用戶不同的使用需求;第二,設計任務優(yōu)先級調(diào)度與排序算法對多用戶加急任務和正常任務的翻譯;第三,支持單用戶多文檔批量上傳、批量下載、參數(shù)配置、翻譯進度查看等豐富的操作;第四,支持多種權(quán)限、多種角色管理及賬號密碼的統(tǒng)一認證。

4.4. 產(chǎn)品優(yōu)勢與實踐經(jīng)驗

表1 DeepTranslator翻譯評測BLEU得分

翻譯方向BLEU分數(shù)(滿分100)測試數(shù)據(jù)集翻譯方向BLEU分數(shù)(滿分100)測試數(shù)據(jù)集
英譯中60.74UNv1.0_testset中譯英51.11UNv1.0_testset
俄譯中53.05UNv1.0_testset中譯俄35.41UNv1.0_testset
西譯中52.73UNv1.0_testset中譯西42.98UNv1.0_testset
俄譯英52.71UNv1.0_testset中譯法40.14UNv1.0_testset
西譯英53.97UNv1.0_testset中譯阿40.04UNv1.0_testset
英譯法48.50UNv1.0_testset英譯俄46.29UNv1.0_testset
英譯阿49.13UNv1.0_testset英譯西53.26UNv1.0_testset

百分點認知智能實驗室推出的多語種機器翻譯系統(tǒng)Deep Translator支持本地化部署、定制化訓練模型并達到行業(yè)最佳的工業(yè)級機器翻譯水平。表1給出了Deep Translator在聯(lián)合國平行語料庫的官方測試集進行翻譯質(zhì)量評測結(jié)果,在英譯中、俄譯中等行業(yè)領域主流翻譯方向的BLEU得分達到最佳水平。

自2017年問世以來Deep Translator已服務于數(shù)百家客戶,包括在國內(nèi)航空、電子等軍工研究所并得到良好口碑,另外與融融網(wǎng)(www.rongrong.cn)合作面向上千家軍工科研院所推廣售賣,在推廣行業(yè)機器翻譯服務的道路上我們越走越遠,踐行用認知智能技術(shù)服務國防的使命。

參考文獻:

【來源:百分點】

分享到

xiesc

相關推薦