自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

GNMT-谷歌的神經(jīng)網(wǎng)絡(luò)翻譯系統(tǒng)

移動(dòng)開(kāi)發(fā) 深度學(xué)習(xí)
一般來(lái)說(shuō),NMT【神經(jīng)網(wǎng)絡(luò)翻譯系統(tǒng)】通常會(huì)含用兩個(gè)RNN【遞歸神經(jīng)網(wǎng)絡(luò)】,一個(gè)用來(lái)接受輸入文本,另一個(gè)用來(lái)產(chǎn)生目標(biāo)語(yǔ)句,與此同時(shí),還會(huì)引入當(dāng)下流行的注意力機(jī)制【attention mechanism】使得系統(tǒng)處理長(zhǎng)句子時(shí)更準(zhǔn)確高效。

一、前言

2016年9月份,谷歌發(fā)布了基于神經(jīng)網(wǎng)絡(luò)的翻譯系統(tǒng)(GNMT),并宣稱(chēng)GNMT在多個(gè)主要語(yǔ)言對(duì)的翻譯中將翻譯誤差降低了55%-85%以上,并將此翻譯系統(tǒng)的技術(shù)細(xì)節(jié)在論文(

)在展示,在閱讀之后收益匪淺。

二、概要

一般來(lái)說(shuō),NMT【神經(jīng)網(wǎng)絡(luò)翻譯系統(tǒng)】通常會(huì)含用兩個(gè)RNN【遞歸神經(jīng)網(wǎng)絡(luò)】,一個(gè)用來(lái)接受輸入文本,另一個(gè)用來(lái)產(chǎn)生目標(biāo)語(yǔ)句,與此同時(shí),還會(huì)引入當(dāng)下流行的注意力機(jī)制【attention mechanism】使得系統(tǒng)處理長(zhǎng)句子時(shí)更準(zhǔn)確高效。但谷歌認(rèn)為,通常這樣的神經(jīng)網(wǎng)絡(luò)系統(tǒng)有三個(gè)弱點(diǎn):

  • 訓(xùn)練速度很慢并且需要巨大的計(jì)算資源,由于數(shù)量眾多的參數(shù),其翻譯速度也遠(yuǎn)低于傳統(tǒng)的基于短語(yǔ)的翻譯系統(tǒng)【PBMT】。
  • 對(duì)罕見(jiàn)詞的處理很無(wú)力,而直接復(fù)制原詞在很多情況下肯定不是一個(gè)好的解決方法。
  • 在處理長(zhǎng)句子的時(shí)候會(huì)有漏翻的現(xiàn)象。

而且GNMT致力于解決以上的三個(gè)問(wèn)題,在GNMT中,RNN使用的是8層(實(shí)際上Encoder是9層,輸入層是雙向LSTM。)含有殘差連接的神經(jīng)網(wǎng)絡(luò),殘差連接可以幫助某些信息,比如梯度、位置信息等的傳遞。同時(shí),attention層與decoder的底層以及encoder的頂層相連接,如圖:

GNMT結(jié)構(gòu)圖

  • 為了解決翻譯速度問(wèn)題,谷歌在翻譯過(guò)程中使用了低精度的算法(將模型中的部分參數(shù)限制為8bit)以及使用了TPU。
  • 為了更好的處理低詞頻的詞,谷歌在輸入和輸出中使用了sub-word units也叫wordpieces,(比如把’higher‘拆分成‘high’和‘er’,分別進(jìn)行處理) 
    *在beamsearch中,谷歌加入了長(zhǎng)度規(guī)范化和獎(jiǎng)勵(lì)懲罰(coverage penalty)使對(duì)翻譯過(guò)程中產(chǎn)生的長(zhǎng)度不同的句子處理更高效并且減少模型的漏翻。

在進(jìn)行了這么多改進(jìn)之后,谷歌宣稱(chēng),在英-法,英-中,英-西等多個(gè)語(yǔ)對(duì)中,錯(cuò)誤率跟之前的PBMT系統(tǒng)相比降低了60%,并且接近人類(lèi)的平均翻譯水平。

接下來(lái)就詳細(xì)的看一下神奇的GNMT模型的細(xì)節(jié)。

三、模型結(jié)構(gòu)

如上圖所示,GNMT和通常的模型一樣,擁有3個(gè)組成部分 -- 一個(gè)encoder,一個(gè)decoder,和一個(gè)attention network 。encoder將輸入語(yǔ)句變成一系列的向量,每個(gè)向量代表原語(yǔ)句的一個(gè)詞,decoder會(huì)使用這些向量以及其自身已經(jīng)生成的詞,生成下一個(gè)詞。encoder和decoder通過(guò)attention network連接,這使得decoder可以在產(chǎn)生目標(biāo)詞時(shí)關(guān)注原語(yǔ)句的不同部分。

此外,如我們所想,要使翻譯系統(tǒng)有一個(gè)好的準(zhǔn)確率,encoder和decoder的RNN網(wǎng)絡(luò)都要足夠深,以獲取原句子和目標(biāo)語(yǔ)句中不容易被注意的細(xì)節(jié),在谷歌的實(shí)驗(yàn)中,沒(méi)增加一層,會(huì)使PPL降低約10%。

關(guān)于模型中的attention機(jī)制,采用了如下的公式來(lái)計(jì)算:

attention的公式

其實(shí)在此我有一個(gè)疑問(wèn),這里***的a i 是一個(gè)向量呢?還是一個(gè)標(biāo)量(一個(gè)數(shù)值)。從式中看似乎是一個(gè)標(biāo)量,但我在之前理解的是attention是一個(gè)跟輸入語(yǔ)句單詞數(shù)量等長(zhǎng)的向量。

3.1殘差連接

如上面提到的,多層堆疊的LSTM網(wǎng)絡(luò)通常會(huì)比層數(shù)少的網(wǎng)絡(luò)有更好的性能,然而,簡(jiǎn)單的錯(cuò)層堆疊會(huì)造成訓(xùn)練的緩慢以及容易受到剃度爆炸或梯度消失的影響,在實(shí)驗(yàn)中,簡(jiǎn)單堆疊在4層工作良好,6層簡(jiǎn)單堆疊性能還好的網(wǎng)絡(luò)很少見(jiàn),8層的就更罕見(jiàn)了,為了解決這個(gè)問(wèn)題,在模型中引入了殘差連接,如圖,

殘差連接示意圖

將第i層的輸入與第i層LSTM的隱狀態(tài)一起,作為第i+1層LSTM的輸入,

沒(méi)有引入殘差連接的LSTM示意圖

引入殘差連接的LSTM示意圖

3.2Encoder的***層雙向LSTM

一句話的譯文所需要的關(guān)鍵詞可能在出現(xiàn)在原文的任何位置,而且原文中的信息可能是從右往左的,也可能分散并且分離在原文的不同位置,因?yàn)闉榱双@得原文更多更全面的信息,雙向RNN可能是個(gè)很好的選擇,在本文的模型結(jié)構(gòu)中,只在Encoder的***層使用了雙向RNN,其余的層仍然是單向RNN。

Bi-directions RNN示意圖

可以看到,粉色的LSTM從左往右的處理句子,綠色的LSTM從右往左,二者的輸出先是連接,然后再傳給下一層的LSTM。

3.3模型的平行訓(xùn)練

這一部分主要是介紹模型在訓(xùn)練過(guò)程中一些加速的方法。

谷歌同時(shí)采用了數(shù)據(jù)平行和模型平行兩種方式以加速訓(xùn)練,數(shù)據(jù)平行很直接,就是把模型復(fù)制并部署n份,每份的參數(shù)是共享的,每份訓(xùn)練時(shí)都以Batch的形式訓(xùn)練,即同時(shí)訓(xùn)練batch-size句話。在谷歌實(shí)驗(yàn)中,n通常是10,而batch-size通常是128,然后用Adam和SGD的方法來(lái)更新參數(shù)。

除了數(shù)據(jù)平行,實(shí)驗(yàn)中還采用了模型平行,即,將每一層網(wǎng)絡(luò)部署在一個(gè)GPU上,如最上方的圖所示,這樣在Encoder的***層雙向RNN計(jì)算完之后,下一時(shí)間步不需要等本時(shí)間步完全運(yùn)行完就可以開(kāi)始,并行計(jì)算加速了訓(xùn)練速度。

而之所以不在每一層都是用雙向RNN是因?yàn)?,如果這樣會(huì)大幅度降低訓(xùn)練速度,因?yàn)槠渲荒苁褂脙蓚€(gè)GPU,一個(gè)作前向信息處理,一個(gè)作后向的信息處理,降低平行計(jì)算的效率。

在attention的部分,將encoder的輸出層與decoder的底層對(duì)齊(我的理解應(yīng)該是輸出的tensor緯度一致)來(lái)***化平行計(jì)算的效率。(具體是什么原理我還沒(méi)理解太明白)。

四、數(shù)據(jù)預(yù)處理

神經(jīng)網(wǎng)絡(luò)翻譯系統(tǒng)在運(yùn)行過(guò)程中通常有一個(gè)字?jǐn)?shù)有限的字典,而可能遇到的詞是無(wú)數(shù)的,這就可能造成OOV(out-of-vocabulary)問(wèn)題,由于這些未知詞通常是日期,人名,地名等,所以一個(gè)簡(jiǎn)單的方法就是直接復(fù)制這些詞,顯然在處理非人名等詞時(shí)著不是***的解決方案,在谷歌的模型中,采用更好的wordpiece model,也叫sub-word units,比如在“Turing’s major is NLP .”一句經(jīng)過(guò)WPM模型處理之后應(yīng)該是"Turing ‘s major is NLP ." 另外為了直接復(fù)制人名等詞,使source language和target language共享wordpiece model,WPM在單詞的靈活性和準(zhǔn)確性上取得了一個(gè)很好的均衡,也在翻譯有更好的準(zhǔn)確率(BLEU)和更快的翻譯速度。

五、訓(xùn)練標(biāo)準(zhǔn)

通常來(lái)說(shuō),在N對(duì)語(yǔ)句對(duì)中,訓(xùn)練的目標(biāo)是使下式***化:

log probabilities of the groud-truth outputs given the corresponding inputs

但這里面有一個(gè)問(wèn)題,翻譯中的BLEU值中不能反映對(duì)單句翻譯質(zhì)量好壞的獎(jiǎng)懲,進(jìn)一步,因?yàn)槟P驮谟?xùn)練過(guò)程中從來(lái)沒(méi)有見(jiàn)過(guò)錯(cuò)誤的譯句,當(dāng)模型有一個(gè)較高的BLEU值時(shí),那些錯(cuò)誤的句子仍然會(huì)獲得較高的概率,所以上式不能明確的對(duì)翻譯中的錯(cuò)誤句子進(jìn)行懲罰。(對(duì)原論文中此處不是完全理解,存疑。)

因此需要對(duì)模型有進(jìn)一步的refinement,但BLEU值是針對(duì)兩個(gè)語(yǔ)料庫(kù)進(jìn)行的評(píng)測(cè)標(biāo)準(zhǔn),在對(duì)單句的評(píng)測(cè)上效果并不理想,所以谷歌提出了GLEU值,GLEU值的大體意思就是分別計(jì)算目標(biāo)語(yǔ)句和譯句的n-grams,(n = 1,2,3,4)數(shù)量,然后計(jì)算兩個(gè)集合的交集的大小與原集大小的比值,取較小值。

我用python實(shí)現(xiàn)了一下GLEU值的計(jì)算,代碼如下:

  1. def get_ngrams(s,maxn): 
  2.     ngrams = {} 
  3.     size = 0 
  4.     for n in range(1,maxn+1): 
  5.         for i in range(0,len(s)): 
  6.             for j in range(i+1,min(i+n+1,len(s)+1)): 
  7.                 ngram = '' 
  8.                 for word in s[i:j]: 
  9.                     ngram += word 
  10.                     ngram += ' ' 
  11.                 ngram = ngram.strip() 
  12.                 if ngram not in ngrams: 
  13.                     ngrams[ngram] = 1 
  14.                     size += 1 
  15.     return size,ngrams 
  16. def get_gleu(orig,pred,n=4): 
  17.     orig_ = orig.split(' '
  18.     pred_ = pred.split(' '
  19.     n_orig,ngrams_orig = get_ngrams(orig_,n) 
  20.     n_pred,ngrams_pred = get_ngrams(pred_,n) 
  21.     count_match = 0 
  22.     for v in ngrams_orig: 
  23.         if v in ngrams_pred: 
  24.             count_match += 1 
  25.     return min(count_match/n_orig,count_match/n_pred) 

所以,refinement之后模型的評(píng)測(cè)標(biāo)準(zhǔn)變成了下式:

refinement maximum-likelihood

r(Y, Y (i))就是GLEU值的計(jì)算部分。GLEU克服了BLEU在單句評(píng)測(cè)上的缺點(diǎn),在本實(shí)驗(yàn)中,可以和BLEU值可以很好的共同工作。

為了進(jìn)一步使訓(xùn)練穩(wěn)定,谷歌對(duì)訓(xùn)練標(biāo)準(zhǔn)作了一個(gè)線性的結(jié)合,也就是下式:

Mixed maximum-likelihood

α在訓(xùn)練中去0.017.

在實(shí)際的訓(xùn)練過(guò)程中,先使用O ml 的標(biāo)準(zhǔn)訓(xùn)練使模型收斂,然后使用O mixd 的標(biāo)準(zhǔn)進(jìn)一步提升模型的表現(xiàn)。

六、可量化的模型和翻譯過(guò)程中的量化

(坦白的說(shuō),我并不知道原文中 Quantizable Model and Quantized Inference 應(yīng)該怎么翻譯更好。)

這一部分主要講的是,由于模型較深且計(jì)算量較大,在翻譯過(guò)程會(huì)產(chǎn)生一些問(wèn)題,所以谷歌在不影響模型收斂和翻譯效果的前提下,采取了一系列的優(yōu)化措施。

帶有殘差連接的LSTM網(wǎng)絡(luò),有兩個(gè)值是會(huì)不斷傳遞計(jì)算的,在時(shí)間方向上傳遞的c i t 和在深度方向上傳遞的x i t ,在實(shí)驗(yàn)中過(guò)程我們發(fā)現(xiàn)這些值都是非常小的,為了減少錯(cuò)誤的累積,所以在翻譯的過(guò)程中,明確的這些值限制在[-δ,δ]之間,因此原LSTM的公式調(diào)整如下:

6.1 modified equation

6.2 完整的LSTM計(jì)算邏輯

在翻譯的過(guò)程中,谷歌將6.1和6.2式中所有浮點(diǎn)數(shù)運(yùn)算替代為8位或16位定點(diǎn)整數(shù)運(yùn)算,其中的權(quán)重W像下式一樣改用8位整數(shù)表示:

權(quán)重W的調(diào)整

所有的c i t 和x i t 限制在[-δ,δ]之間且改用16位整數(shù)表示。

在6.2中的矩陣乘法(比如W 1 x t )改用8位定點(diǎn)整數(shù)乘法,而其他的所有運(yùn)算,比如sigmoid,tanh,點(diǎn)乘,加法等,改用16位整數(shù)運(yùn)算。

假設(shè)decoder RNN的輸出是y t ,那在softmax層,概率向量p t 改為這樣計(jì)算:

修改后的概率向量計(jì)算公式

將 logit v t ' 限制在[-γ,γ]之間且權(quán)重W s 和6.2式中的權(quán)重W同樣使用8位整數(shù)表示并在運(yùn)算過(guò)程中使用8位矩陣乘法。

但在softmax層和attention層不采取量化措施。

值得一提的是,除了將c i t 和x i t 限制在[-δ,δ]和將logit v t ' 限制在[-γ,γ],在 訓(xùn)練過(guò)程 中一直使用的是全精度的浮點(diǎn)數(shù)。其中γ取25.0,δ在訓(xùn)練剛開(kāi)始取8.0然后逐漸變?yōu)?.0 。( 在翻譯時(shí),δ取1.0 。 )

Log perplexity vs. steps

紅線代表采用了量化措施的訓(xùn)練過(guò)程,藍(lán)線代表普通的訓(xùn)練,可以看到將一些值限制在一定范圍內(nèi)作為額外的規(guī)劃化措施可以改善模型的質(zhì)量。

七、Decoder

在翻譯的過(guò)程中,使用了常規(guī)的beam search算法,但引入了兩個(gè)重要的優(yōu)化方案,即GNMT中的α和β值。

  • α值的作用是對(duì)譯句進(jìn)行長(zhǎng)度規(guī)范化,因?yàn)檫x取一個(gè)句子的可能性是由劇中每個(gè)詞的概率取log后相加得到的,這些個(gè)對(duì)數(shù)概率都是負(fù)值,因此某種程度上,長(zhǎng)句會(huì)取得更小的對(duì)數(shù)概率,這顯然是不合理的,因此需要對(duì)譯句進(jìn)行長(zhǎng)度規(guī)劃化。
  • β值的作用是促使模型更好的翻譯全句,不漏翻。

關(guān)于α和β值適用的公式

其中s(Y,X)代表譯文最終獲得的分?jǐn)?shù),p i j 表示在翻譯第j個(gè)詞時(shí)其對(duì)應(yīng)第i個(gè)詞的attention值。

谷歌在文中還提到兩種優(yōu)化方法:

Firstly, at each step, we only consider tokens that have local scores that are

not more than beamsize below the best token for this step. Secondly, after a normalized best score has

been found according to equation 14, we prune all hypotheses that are more than beamsize below the best

額,其實(shí)我沒(méi)看懂這跟常規(guī)的beam search算法有什么不同,望大神指點(diǎn)。。。

在En-Fr語(yǔ)料庫(kù)上,不同α和β值對(duì)BLEU值的影響

當(dāng)α和β值取0時(shí)相當(dāng)于不做長(zhǎng)度規(guī)劃化和覆蓋范圍懲罰,算法退回到最原始的beam search算法,值得一提的是,得到上述BLEU的模型并沒(méi)有進(jìn)行只使用了ML進(jìn)行訓(xùn)練,沒(méi)有使用RL優(yōu)化。因?yàn)镽L refinement已經(jīng)促使模型不漏翻,不過(guò)翻。

在En-Fr語(yǔ)料庫(kù)上先用ML優(yōu)化在用RL優(yōu)化的到的BLEU值與上圖的比較

在谷歌實(shí)驗(yàn)中,α=0.2和β=0.2,但在我們的實(shí)驗(yàn)中,在中英翻譯中,還是α=0.6~1和β=0.2~0.4會(huì)取得更好的效果

實(shí)驗(yàn)過(guò)程以及實(shí)驗(yàn)結(jié)果

實(shí)驗(yàn)結(jié)果對(duì)比

模型部分基本介紹完了,剩下的第八部分關(guān)于實(shí)驗(yàn)以及實(shí)驗(yàn)結(jié)果先貼張圖,會(huì)繼續(xù)不定時(shí)補(bǔ)充,下一篇文章應(yīng)該會(huì)介紹一下Facebook發(fā)布并開(kāi)源的宣稱(chēng)比GNMT更好更快的FairSeq模型...

論文中提到但未使用的方法

另有一種方法處理OOV問(wèn)題是將罕見(jiàn)詞標(biāo)記出來(lái),比如,假設(shè) Miki 這個(gè)詞沒(méi)有出現(xiàn)在詞典中,經(jīng)過(guò)標(biāo)記后,變成<B> M <M> i <M> k <E> i ,這樣在翻譯過(guò)程中,將罕見(jiàn)詞替換為特殊符號(hào)。

責(zé)任編輯:林師授 來(lái)源: 簡(jiǎn)書(shū)
相關(guān)推薦

2017-08-31 12:07:52

微軟

2018-07-03 16:10:04

神經(jīng)網(wǎng)絡(luò)生物神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)

2025-02-25 14:13:31

2020-08-06 10:11:13

神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)算法

2017-04-17 10:25:29

神經(jīng)網(wǎng)絡(luò)可視化ActiVis

2017-09-10 07:07:32

神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)集可視化

2023-06-18 23:00:39

神經(jīng)網(wǎng)絡(luò)損失函數(shù)隨機(jī)變量

2017-03-21 08:52:20

神經(jīng)網(wǎng)絡(luò)聲譽(yù)

2023-11-14 16:29:14

深度學(xué)習(xí)

2017-11-30 18:05:18

2021-01-18 14:38:53

神經(jīng)網(wǎng)絡(luò)人工智能神經(jīng)元

2017-05-04 18:30:34

大數(shù)據(jù)卷積神經(jīng)網(wǎng)絡(luò)

2022-04-07 09:01:52

神經(jīng)網(wǎng)絡(luò)人工智能

2019-05-07 19:12:28

機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)Python

2018-03-22 13:34:59

TensorFlow神經(jīng)網(wǎng)絡(luò)

2022-09-26 00:00:00

神經(jīng)網(wǎng)絡(luò)激活函數(shù)sigmoid

2020-05-09 10:03:00

Google 翻譯技術(shù)

2025-03-05 08:00:00

2025-02-19 15:12:17

神經(jīng)網(wǎng)絡(luò)PyTorch大模型

2021-07-28 15:35:58

谷歌神經(jīng)網(wǎng)絡(luò)AI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)