深度模型(十一):On Using Very Large Target Vocabulary for Neural Machine Translation

摘要

近來提出的完全基於神經網絡的神經機器翻譯,相比於傳統方法比如基於短語的統計機器翻譯,取得了令人滿意的成績。但是在神經機器翻譯對詞表的大小有限制,隨着詞表的增大,訓練的複雜度以及解碼的複雜度都會相應增大。本文提出了一種基於重要性採樣的方法,可以在不加大訓練複雜度的情況下,使用非常大的目標詞表。通過選擇目標詞表的一個較小的子集,較大目標詞表的解碼的效率也可以有效的提高。通過這種方法訓練的模型,追平甚至在某些情況下超過了小詞表的基準模型和基於LSTM的模型。並且,通過組合若干個使用了較大詞表的模型,在WMT’14的英文到德文以及英文到法文的任務上,我們的模型相對於目前最先進的模型取得了進展(BLEU方式)。

1.簡介

神經機器翻譯(NMT)是近來提出的一種機器翻譯的方法(Kalchbrenner and Blunsom,2013;Bahdanauet al., 2014;Sutskever et al., 2014)。按神經機器翻譯的方法,研究者構建一個神經網絡,輸入爲一條源語句,輸出爲輸入對應的翻譯語句。神經網絡的訓練目標是最大話給定源語句條件下目標語句的條件概率。

相比目前的統計翻譯模型,特別是基於短語的統計翻譯模型(Koehn et al., 2003),神經機器翻譯有很多優點。首先,NMT需要極少領域知識。比如(Sutskever et al.,2014), (Bahdanau et al., 2014) or (Kalchbrenner and Blunsom, 2013) 提出的所有模型,都不需要假定源語句和目標語句的任何語言學特徵,只要求他們是單詞序列。第二,整個系統的訓練目標是優化翻譯的效果,不像基於短語的統計翻譯模型,它們包含了很多特徵函數,需要單獨進行優化。最後,NMT的內存佔用通常遠小於目前的系統。

雖然有這些優點和令人滿意的效果,NMT相對於傳統方法,有一個主要的限制。就是目標詞彙的數量的限制。主要是因爲隨着目標詞彙量的增大,NMT模型的訓練和使用的複雜度會相應的增大。

通常的做法是構建一個最常用的詞彙組成的詞彙表(稱爲shortlist),詞表的大小通常在30,000((Bahdanau et al., 2014)到80,000(Sutskever et al., 2014).不在詞表內的單詞全部用[UNK]表示(未知詞)。在未知詞較少時,這種方式的效果還可以,但是隨着未知詞數量的增多,翻譯的效果先顯著的下降(Cho et al., 2014a; Bahdanau etal., 2014)。

本文提出了一種基於(有偏)重要性採樣的方法,使NMT在較大的目標詞表上訓練,並且保持訓練的計算複雜度不變。當模型訓練完成後,可以選在在全部的大詞彙表上使用,也可以選擇在詞表的子集上使用。

2.神經機器翻譯與有限詞表問題

本節我們基於(Bahdanau et al., 2014)提出的神經機器翻譯模型,來解釋一下有限詞表的問題

2.1 神經機器翻譯

神經機器翻譯是近來提出的一種基於神經網絡的機器翻譯方法,神經網絡的訓練目標是優化翻譯效果(Forcada and Neco, 1997; Kalchbrenner and Blunsom, 2013; Cho etal.,2014b;Sutskever et al., 2014; Bahdanau et al.,2014).

神經機器翻譯使用的神經網絡通常是一種稱爲編碼器-解碼器的網絡結構。編碼器讀入源語句x=(x1,x2,...,xT)x=(x_1, x_2, ..., x_T)並編碼生成中間狀態序列h=(h1,h2,...,hT)h=(h_1, h_2, ..., h_T):

ht=f(xt,ht1)(1)h_t=f(x_t, h_{t-1})\qquad(1)

然後,解碼器,另一個RNN,基於隱藏序列產生對應的翻譯y=(y1,y2,...,yT)y=(y_1, y_2, ..., y_{T'}):

p(yty<t,x)exp{q(yt1,zt,ct)}(2)p(y_t|y_{<t,x})\varpropto exp\{q(y_{t-1}, z_t, c_t)\}\qquad(2)

其中:

zt=g(yt1,zt1,ct)(3)z_t=g(y_{t-1},z_{t-1},c_t)\qquad(3)
ct=r(zt1,h1,...,hT)(4)c_t=r(z_{t-1},h_1,...,h_T)\qquad(4)

其中y<t=(y1,y2,...,yt1)y_{<t}=(y_1,y_2,...,y_{t-1}).

模型的訓練目標是最大化給定源語句的情況下目標語句的條件概率:

θ=argmaxθn=1Nt=1Tnlogp(ytny<tn,xn)\theta^*=argmax_{\theta}\sum_{n=1}^{N}\sum_{t=1}^{T_n}logp(y_t^n|y_{<t}^n,x^n)

其中(xn,yn)(x^n, y^n)是第n個訓練樣本。

2.1.1 模型細節

本文采用的模型引入了一種稱爲注意力機制的模型(Bahdanau etal., 2014)。

(Bahdanau et al., 2014)的解碼器中,中間隱狀態的生成採用了雙向RNN結構:

ht=[ht,ht]h_t=[\overleftarrow{h_t}, \overrightarrow{h_t}]

其中:

ht=f(xt,ht+1)\overleftarrow{h_t}=f(x_t, \overleftarrow{h_{t+1}})

ht=f(xt,ht1)\overrightarrow{h_t}=f(x_t, \overrightarrow{h_{t-1}})

其中函數f採用了GRU(gated recurrent unit)網絡。

解碼器中,環境向量ctc_t隱狀態序列(h1,h2,...,hT)(h_1, h_2, ..., h_T)的加權和,權重爲(α1,...,αT)(\alpha_1,...,\alpha_T):

αt=exp{a(ht,zt1)}kexp{a(hk,zt1)}\alpha_t=\frac{exp\{a(h_t, z_{t-1})\}}{\sum_kexp\{a(h_k,z_{t-1})\}}

其中a爲前向神經網絡。

解碼器中新的隱狀態ztz_t基於前隱狀態zt1z_{t-1},前輸出符號yt1y_{t-1}以及當前環境向量ctc_t,同樣使用了GRU結構。

下一目標單詞的概率計算方式爲:

p(yty<t,x)=1Zexp{wtϕ(yt1,zt,ct)+bt}(6)p(y_t|y_{<t}, x)=\frac{1}{Z}exp\{\textbf{w}_t^\top\phi(y_{t-1}, z_t, c_t)+b_t\} \qquad (6)

其中ϕ\phi爲仿射變換,wt,bt\textbf{w}_t,b_t分別爲目標詞向量和目標詞偏移。ZZ表示歸一化常量,計算方式爲:

Z=k:ykVexp{wkϕ(yt1,zt,ct)+bk}Z=\sum_{k:y_k\in V}exp\{\textbf{w}_k^\top \phi(y_{t-1}, z_t, c_t) + b_k\}

其中VV表示目標詞的組成的集合。

2.2 有限詞表問題和傳統解決辦法

NMT模型的主要困難來自方程式(6),在計算條件概率的時候,我們需要將特徵ϕ(yt1,zt,ct)\phi(y_{t-1},z_t,c_t)與目標詞表內的每個詞的詞向量wt\textbf{w}_t相乘。隨着詞表的增大,計算複雜度和需要的內存都相應的增大。

新近提出的模型,按照詞頻排序將最常出現的30,000到80,000常用詞作爲目標詞表,稱爲shortlist(Bahdanau et al., 2014;Sutskever et al., 2014)。降低的計算複雜度,但同時也引入了新的問題。首先,但目標詞表內不包含翻譯源語言所需的必要詞彙的時候,模型的效果會極大下降。其次,對於詞彙量很豐富的語言,比如德語,這種方法不適用。

目前有兩種模型專用的解決辦法。第一種方法是近似計算目標詞概率。由(Mnih and Kavukcuoglu, 2013; Mikolov et al.,2013)提出,基於噪音對比估計(Gutmann and Hyvarinen, 2010)。第二種方法將目標詞進行聚類層若干種類,或進行層次聚類,目標詞的概率p(yty<t,x)p(y_t|y_{<t},x)分解爲類概率p(ctyt1,x)p(c_t|y_{t-1},x)和類中概率p(ytct,yt1,x)p(y_t|c_t, y_{t-1},x)乘積.這些方法主要目標是降低訓練的計算複雜度,並不會加速使用階段的效率。

除了這些模型專用的方法,還有一些翻譯專用的方法。有一種翻譯專用的方法利用了稀有目標詞的特點。((Luong et al., 2014)提出了一種這類方法。他們將源碼語言和目標語言的稀有詞(不在詞表內的)替換爲對應的<OOVn><OOV_n>token.

3 較大目標詞表的近似學習方法

本文提出了一種模型專用的方法,將訓練複雜度降低爲常量級別,不再隨目標詞表的增大而增大。並且,因爲有效降低了模型的內存佔用,我們可以使用GPU進行模型訓練。

正如前文的闡述,模型的主要計算複雜度來自公式(6)。爲了避免這種計算複雜度,我們每次只在目標詞表VV的一個子集VV'上計算。我們的工作基於(Bengio and Sen´ ecal, 2008)的早期工作。

我們來考慮公式(6)的梯度,它有一個正數和一個負數部門組成:

logp(ytyt1,x)\nabla logp(y_t|y_{t-1},x)
=ε(yt)k:ykVp(yky<t,x)ε(yk)=\nabla\varepsilon(y_t)-\sum_{k:y_k\in V}p(y_k|y_{<t},x)\nabla\varepsilon(y_k)

其中我們定義能力函數ε\varepsilon爲:

ε(yi)=wjϕ(yj1,zj,cj)+bj\varepsilon(y_i)=\textbf{w}_j^\top\phi(y_{j-1},z_j,c_j)+b_j.

可以看出第二項本質上是能量梯度的期望:

EP[ε(yk)]E_P[\nabla\varepsilon(y_k)]

其中P表示分佈p(yy<t,x)p(y|y_{<t},x).
本文提出的方法的核心思想,就是通過重要性採樣來近似計算此期望值。給定分佈Q和樣本子集VV',近似計算的方式爲:

EP[ε(y)]=k:ykVωkk:ykVωkε(yk)(10)E_P[\nabla\varepsilon(y)]=\sum_{k:y_k\in V'}\frac{\omega_k}{\sum_{k':y_{k'}\in V'}\omega_k'}\nabla\varepsilon(y_k)\qquad(10)

其中:

ωk=exp{ε(yk)logQ(yk)}(11)\omega_{k}=exp\{\varepsilon(y_k)-logQ(y_k)\}\qquad(11)

這個方法是我們可以在一個很小的集合上近似計算歸一化因子,極大的降低計算的複雜度。每次訓練的時候,只更新目標詞的詞向量wt\textbf{w}_t以及採樣集合VV'中的詞向量。當訓練結束之後,我們可以使用目標詞表的整體VV計算目標詞的概率。

此方法雖然很自然的解決了計算複雜度的問題。但簡單的應用此方法,並不能很好的控制每次更新的參數的數量(譯者注:每條樣本包含一個源語句和一個目標語句,一個目標語句包含多個目標詞,雖然針對每個目標詞的採樣子集V’大小變小了,但是這些多個子集的並集規模沒有很好的控制)。對於使用內存容量有限的GPU設備來說,這也是一個問題。

因此,實踐中,我們通常將訓練語料劃分爲若干份,並在訓練前爲每一份語料預先定義好目標詞表子集VV'.訓練開始前,我們順序的檢查並收集訓練語料內目標語句中出現的目標詞,直到目標詞表大小達到預設的閾值τ\tau爲止,我們將這時的詞表作爲檢查過的訓練語料的目標詞表。重複以上的過程,直到遍歷完所有的訓練語料。我們將都ii份語料的詞表記爲ViV_i'.

可以理解爲每一份語料都有一個單獨的分佈QiQ_i

Qi(yk)={1ViifykVi0 Q_i(y_k)=\left\{ \begin{aligned} \frac{1}{|V_i'|}\qquad if y_k\in V_i'\\ 0\qquad 其他情況 \end{aligned} \right.

在這種分佈假設下,公式(10),(11)中的重要性權重項中的logQ(yk)-logQ(y_k)可以去掉。這種假設下,本文提出的近似計算概率的方法爲:

p(yty<t,x)=exp{wtϕ(yt1,zt,ct)+bt}k:ykVexp{wkϕ(yt1,zt,ct)+bk}p(y_t|y_{<t},x)=\frac{exp\{\textbf{w}_t^\top\phi(y_{t-1},z_t,c_t)+b_t\}}{\sum_{k:y_k\in V'}exp\{\textbf{w}_k^\top\phi(y_{t-1},z_t,c_t)+b_k\}}

需要注意的是這種分佈Q的選擇導致估計有偏估計。

3.1.1 結果的非正式討論

公式(6)可以理解爲最大化最優可能的、正確的、目標詞的詞向量與當前隱狀態向量的積。歸一化的過程只是將向量的積轉化爲正確的概率形式。

隨着訓練的進行,相似目標詞的向量會互相對齊。這是通過將正確目標詞的詞向量向ϕ(yt1,zt,ct)\phi(y_{t-1},z_t,c_t)的方向移動,並將其他詞的詞向量推開實現的。在我們的近似計算方法中,則是將正確的詞向量向正確的方向移動,而將採樣子集V’中的詞的詞向量推開。

3.2 解碼

當訓練完成之後,我們可以使用整個目標詞表進行翻譯。但是這樣做,對於實時應用來說,計算代價可能太大。

因爲訓練過程中,我們只將可能正確的詞的詞向量對齊解碼器的隱狀態向量,所以在解碼階段,我們可以使用目標詞表的子集進行解碼。

最簡單的方式就是選擇Top-K個詞頻最高的目標詞,作爲目標詞表。但是這種方方式違背了我們使用大詞表訓練模型的初衷。另外,我們可以通過現有的詞對齊模型構建一個詞對齊詞表。通過這個詞表,爲每個待翻譯的語句構建一個目標詞集合,由詞頻最高的K個詞組成。並且每個源詞最多對應K’個目標詞。K和K’的大小,可以選擇取決於計算複雜度和翻譯效果的權衡。我們把這種方式構造的子集稱爲候選集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章