Language Modeling with Gated Convolutional Networks/paper/zh

    From Marovi AI
    This page is a translated version of the page Language Modeling with Gated Convolutional Networks/paper and the translation is 100% complete.
    Other languages:
    SummarySource
    Research Paper
    Authors Yann N. Dauphin; Angela Fan; Michael Auli; David Grangier
    Year 2016
    Topic area NLP
    Difficulty Research
    arXiv 1612.08083
    PDF Download PDF

    Language Modeling with Gated Convolutional Networks

    Yann N. Dauphin    Angela Fan    Michael Auli    David Grangier

    Language Modeling with Gated Convolutional Networks

    Yann N. Dauphin    Angela Fan    Michael Auli    David Grangier

    摘要

    迄今為止,語言建模的主流方法以循環神經網絡為基礎。其在該任務上的成功通常被歸因於捕捉無界上下文的能力。在本文中,我們通過堆疊卷積發展了一種有限上下文方法,由於允許在序列 token 上並行化,因此可能更高效。我們提出了一種新的簡化門控機制,其性能優於 Oord 等人 (2016b),並研究了關鍵架構決策的影響。所提方法在 WikiText-103 基準上取得了 state-of-the-art 的成績——儘管該基準具有長期依賴——並在 Google Billion Words 基準上獲得了具有競爭力的結果。相比循環基線,我們的模型將給一句話評分的延遲降低了一個數量級。據我們所知,這是非循環方法首次在這些大規模語言任務上與強大的循環模型競爭。

    卷積神經網絡,循環網絡,語言建模

    1 引言

    統計語言模型通過對給定前文條件下下一個詞的概率進行建模,來估計詞序列的概率分佈,即

    $ {\textstyle {{P\hspace{0pt}{(w_{0},\ldots,w_{N})}} = {P\hspace{0pt}{(w_{0})}\hspace{0pt}{\prod\limits_{i = 1}^{N}{P\hspace{0pt}{(\left. w_{i} \middle| {w_{0},\ldots,w_{i - 1}} \right.)}}}}},} $

    其中 $ {\textstyle w_{i}} $ 是詞表中離散的詞索引。語言模型是語音識別 (Yu & Deng, 2014) 與機器翻譯 (Koehn, 2010) 系統中的關鍵組成部分。

    近來,神經網絡 (Bengio et al., 2003; Mikolov et al., 2010; Jozefowicz et al., 2016) 已被證明優於經典的 n-gram 語言模型 (Kneser & Ney, 1995; Chen & Goodman, 1996)。這些經典模型受數據稀疏性影響,難以表示大上下文以及長程依賴。神經語言模型通過將詞嵌入到連續空間,並在其上應用神經網絡來解決這一問題。當前語言建模的 state-of-the-art 基於 long short term memory networks (LSTM; Hochreiter et al., 1997),理論上可以建模任意長的依賴。

    在本文中,我們提出了新的門控卷積網絡(gated convolutional networks)並將其用於語言建模。卷積網絡可以通過堆疊來表示較大的上下文規模,並在不斷擴大的上下文上提取更抽象的層次化特徵 (LeCun & Bengio, 1995)。這使其能夠通過在大小為 $ {\textstyle N} $ 的上下文上應用 $ {\textstyle \mathcal{O}\hspace{0pt}{(\frac{N}{k})}} $ 次操作(其中 $ {\textstyle k} $ 為核寬度)來建模長程依賴。相比之下,循環網絡將輸入視為鏈式結構,因此需要線性數量 $ {\textstyle \mathcal{O}\hspace{0pt}{(N)}} $ 的操作。

    對輸入進行層次化分析與經典的語法形式主義具有相似之處——後者會構建粒度逐步細化的句法樹結構,例如句子由名詞短語和動詞短語組成,各自又具有進一步的內部結構 (Manning & Schütze, 1999; Steedman, 2002)。層次化結構也使學習更容易,因為相對於鏈式結構,給定上下文大小所需的非線性數量更少,從而緩解了 vanishing gradient 問題 (Glorot & Bengio, 2010)。

    現代硬件非常適合高度可並行化的模型。在循環網絡中,下一個輸出依賴於上一個隱狀態,無法在序列元素之間並行化。然而,卷積網絡非常適合這種計算範式,因為對所有輸入詞的計算可以同時進行 (§2)。

    門控已被證明對循環神經網絡達到 state-of-the-art 性能至關重要 (Jozefowicz et al., 2016)。我們的 gated linear units 通過為梯度提供一條線性路徑,同時保留非線性能力,緩解了深層架構中的 vanishing gradient 問題 (§5.2)。

    我們表明,門控卷積網絡在 Google Billion Word 基準 (Chelba et al., 2013) 上的表現優於近期發表的其他語言模型,例如在類似設置下訓練的 LSTM。我們還在 WikiText-103 基準上評估了模型處理長程依賴的能力——該基準上模型以整段而非單句為條件——並在該數據集上取得了新的 state-of-the-art (Merity et al., 2016)。最後,我們表明 gated linear units 比 Oord 等人 (2016; §4, §5) 的 LSTM 風格門控具有更高的準確率與更快的收斂速度。

    2 方法

    在本文中,我們引入一種新的神經語言模型,使用門控的時間卷積替代循環網絡中常用的循環連接。神經語言模型 (Bengio et al., 2003) 為每個詞 $ {\textstyle w_{0},\ldots,w_{N}} $ 生成上下文表示 $ {\textstyle \mathbf{H} = {\lbrack\mathbf{h}_{0},\ldots,\mathbf{h}_{N}\rbrack}} $,以預測下一個詞 $ {\textstyle P\hspace{0pt}{(\left. w_{i} \middle| \mathbf{h}_{i} \right.)}} $。循環神經網絡 $ {\textstyle f} $ 通過遞推函數 $ {\textstyle \mathbf{h}_{i} = {f\hspace{0pt}{(\mathbf{h}_{i - 1},w_{i - 1})}}} $ 計算 $ {\textstyle \mathbf{H}} $,這本質上是一個順序過程,無法在 $ {\textstyle i} $ 維度上並行化。111並行化通常改在多個序列之間進行。

    我們提出的方法用一個函數 $ {\textstyle f} $ 對輸入做卷積,得到 $ {\textstyle \mathbf{H} = {f \ast w}} $,因此沒有時間維度上的依賴,便於在一句話的各個詞上並行化。該過程將每個上下文計算為若干前序詞的函數。與循環網絡相比,上下文大小是有限的,但我們將證明:無限上下文並非必需,且我們的模型能夠表示足夠大的上下文以在實踐中表現良好 (§5)。

    Refer to caption

    1 展示了模型架構。詞由存儲於查找表 $ {\textstyle \mathbf{D}^{{|\mathcal{V}|} \times e}} $ 中的向量嵌入表示,其中 $ {\textstyle |\mathcal{V}|} $ 為詞表大小,$ {\textstyle e} $ 為嵌入維度。模型的輸入是詞序列 $ {\textstyle w_{0},\ldots,w_{N}} $,由詞嵌入 $ {\textstyle \mathbf{E} = {\lbrack\mathbf{D}_{w_{0}},\ldots,\mathbf{D}_{w_{N}}\rbrack}} $ 表示。隱藏層 $ {\textstyle h_{0},\ldots,h_{L}} $ 計算如下:

    $ {\textstyle {h_{l}\hspace{0pt}{(\mathbf{X})}} = {{{({{\mathbf{X} \ast \mathbf{W}} + \mathbf{b}})} \otimes \sigma}\hspace{0pt}{({{\mathbf{X} \ast \mathbf{V}} + \mathbf{c}})}}} $ (1)

    其中 $ {\textstyle m,n} $ 分別為輸入和輸出特徵圖的數量,$ {\textstyle k} $ 是 patch 大小,$ {\textstyle \mathbf{X} \in {\mathbb{R}}^{N \times m}} $$ {\textstyle h_{l}} $ 層的輸入(詞嵌入或前層的輸出),$ {\textstyle \mathbf{W} \in {\mathbb{R}}^{k \times m \times n}} $$ {\textstyle \mathbf{b} \in {\mathbb{R}}^{n}} $$ {\textstyle \mathbf{V} \in {\mathbb{R}}^{k \times m \times n}} $$ {\textstyle \mathbf{c} \in {\mathbb{R}}^{n}} $ 是可學習參數,$ {\textstyle \sigma} $ 為 sigmoid 函數,$ {\textstyle \otimes} $ 為矩陣之間的逐元素乘積。

    在對輸入做卷積時,我們要確保 $ {\textstyle \mathbf{h}_{i}} $ 不包含未來詞的信息。我們通過移位卷積輸入,使核看不到未來上下文來實現這一點 (Oord et al., 2016a)。具體來說,我們在序列開頭零填充 $ {\textstyle k - 1} $ 個元素,假設第一個輸入元素是句首標記(不被預測),其中 $ {\textstyle k} $ 為核寬度。

    每一層的輸出是由門 $ {\textstyle \sigma\hspace{0pt}{({{\mathbf{X} \ast \mathbf{V}} + \mathbf{c}})}} $ 調製的線性投影 $ {\textstyle {\mathbf{X} \ast \mathbf{W}} + \mathbf{b}} $。類似 LSTM,這些門對矩陣 $ {\textstyle {\mathbf{X} \ast \mathbf{W}} + \mathbf{b}} $ 的每個元素做乘法,控制在層級結構中傳遞的信息。我們將該門控機制稱為 Gated Linear Units (GLU)。在輸入 $ {\textstyle \mathbf{E}} $ 上堆疊多層,可得到每個詞的上下文表示 $ {\textstyle \mathbf{H} = {{h_{L} \circ \ldots \circ h_{0}}\hspace{0pt}{(\mathbf{E})}}} $。我們將卷積與 gated linear unit 包裹在一個預激活殘差塊中,該塊將輸入加到輸出上 (He et al., 2015a)。出於計算效率考慮,這些塊採用 bottleneck 結構,每個塊最多 5 層。

    獲取模型預測最簡單的方法是使用 softmax 層,但對於大詞表來說這通常計算效率低下,因此更傾向於使用像 noise contrastive estimation (Gutmann & Hyvärinen, ) 或 hierarchical softmax (Morin & Bengio, 2005) 這樣的近似方法。我們選擇後者的改進版——adaptive softmax,它為高頻詞分配更大容量,為低頻詞分配較小容量 (Grave et al., 2016a)。這降低了內存需求,並在訓練與測試時都加快了計算。

    3 門控機制

    門控機制控制着網絡中信息流經的路徑,已被證明對循環神經網絡非常有用 (Hochreiter & Schmidhuber, 1997)。LSTM 通過一個單獨的細胞、由 inputforget 門控制,實現長程記憶。這使得信息可以在可能跨越許多時間步的過程中無阻地流動。如果沒有這些門,信息很容易在每一步的變換中消失。相比之下,卷積網絡不會遭受同樣的 vanishing gradient 問題;我們在實驗中也發現它們不需要 forget 門。

    因此,我們考慮只具有輸出門的模型,讓網絡控制哪些信息應該在層級結構中向上傳播。我們表明該機制對語言建模有用,因為它允許模型選擇對預測下一個詞最相關的詞或特徵。與我們的工作並行,Oord 等人 (2016b) 展示了 LSTM 風格機制 $ {\textstyle {{\text{tanh}\hspace{0pt}{({{\mathbf{X} \ast \mathbf{W}} + \mathbf{b}})}} \otimes \sigma}\hspace{0pt}{({{\mathbf{X} \ast \mathbf{V}} + \mathbf{c}})}} $ 在卷積式圖像建模中的有效性。隨後,Kalchbrenner 等人 (2016) 通過添加額外門控將該機制擴展到翻譯以及字符級語言建模中。

    Gated linear units 是一種簡化的門控機制,基於 Dauphin & Grangier (2015) 關於非確定性門的工作,它通過將線性單元與門耦合來緩解 vanishing gradient 問題。這在保留該層非線性能力的同時,讓梯度可以無縮放地通過線性單元傳播。我們將 LSTM 風格門控(稱為 gated tanh unit, GTU)的梯度記作

    $ {\textstyle {\nabla{\lbrack{{{\text{tanh}\hspace{0pt}{(\mathbf{X})}} \otimes \sigma}\hspace{0pt}{(\mathbf{X})}}\rbrack}} = {\text{tanh}^{\prime}\hspace{0pt}{(\mathbf{X})}\hspace{0pt}{\nabla{\mathbf{X} \otimes \sigma}}\hspace{0pt}{(\mathbf{X})}}} $
    $ {\textstyle {+ {\sigma^{\prime}\hspace{0pt}{(\mathbf{X})}\hspace{0pt}{\nabla{\mathbf{X} \otimes \text{tanh}}}\hspace{0pt}{(\mathbf{X})}}}.} $ (2)

    注意,由於縮放因子 $ {\textstyle \text{tanh}^{\prime}\hspace{0pt}{(\mathbf{X})}} $$ {\textstyle \sigma^{\prime}\hspace{0pt}{(\mathbf{X})}} $ 的存在,隨着層數堆疊,該梯度會逐漸消失。相比之下,gated linear unit 的梯度

    $ {\textstyle {\nabla{\lbrack{{\mathbf{X} \otimes \sigma}\hspace{0pt}{(\mathbf{X})}}\rbrack}} = {{{\nabla{\mathbf{X} \otimes \sigma}}\hspace{0pt}{(\mathbf{X})}} + {{\mathbf{X} \otimes \sigma^{\prime}}\hspace{0pt}{(\mathbf{X})}\hspace{0pt}{\nabla\mathbf{X}}}}} $ (3)

    $ {\textstyle \sigma\hspace{0pt}{(\mathbf{X})}} $ 中處於激活狀態的門控單元而言,存在一條無縮放的路徑 $ {\textstyle {\nabla{\mathbf{X} \otimes \sigma}}\hspace{0pt}{(\mathbf{X})}} $。這可以被理解為一種乘性 skip connection,有助於梯度在層間流動。我們在第 §5.2 節通過實驗比較了不同的門控方案,發現 gated linear units 能更快地收斂到更優的 perplexity。

    4 實驗設置

    4.1 數據集

    我們在兩個公開的大規模語言建模數據集上報告結果。首先,Google Billion Word 數據集 (Chelba et al., 2013) 被認為是最大的語言建模數據集之一,包含近十億個 token,詞表超過 80 萬詞。在該數據集中,出現少於 3 次的詞被替換為一個特殊的未知符號。數據基於英文語料 $ {\textstyle 30,301,028} $ 句,順序已被打亂。其次,WikiText-103 是一個較小的數據集,包含超過 1 億 token,詞表約 20 萬詞 (Merity et al., 2016)。與 GBW 不同,其句子是連續的,使模型可以以比單句更大的上下文為條件。對兩個數據集,我們都在每行開頭加上句首標記 <S >,在每行末尾加上句尾標記 </S>。在 Google Billion Word 語料中,每個序列是一個句子;而在 WikiText-103 中,序列是整段。模型將 <S> 與 </S > 作為輸入,但只預測句尾標記 </S>。我們通過在每個數據集標準的留出測試集上計算 perplexity $ {\textstyle \text{e}^{{\frac{1}{N}\hspace{0pt}\sum_{i}^{N}} - {{\log p}\hspace{0pt}{({w_{i}|{\ldots,w_{i - 1}}})}}}} $ 來評估模型。

    Name GCNN-13 GCNN-14B GCNN-9 GCNN-8B GCNN-8 GCNN-14
    Dataset Google Billion Word wikitext-103
    Lookup 128 280
    Conv1 $ {\textstyle \lbrack 4,1268\rbrack \times 1} $ $ {\textstyle \lbrack 5,512\rbrack \times 1} $ $ {\textstyle \lbrack 4,807\rbrack \times 1} $ $ {\textstyle \lbrack 1,512\rbrack \times 1} $ $ {\textstyle \lbrack 4,900\rbrack \times 1} $ $ {\textstyle \lbrack 6,850\rbrack \times 3} $
    Conv2.x $ {\textstyle \begin{bmatrix} {4,1268} \\ {4,1268} \end{bmatrix} \times 12} $ $ {\textstyle \begin{bmatrix} {1,128} \\ {5,128} \\ {1,512} \end{bmatrix} \times 3} $ $ {\textstyle \begin{bmatrix} {4,807} \\ {4,807} \end{bmatrix} \times 4} $ $ {\textstyle \begin{bmatrix} {1,128} \\ {5,128} \\ {1,512} \end{bmatrix} \times 3} $ $ {\textstyle \lbrack 4,900\rbrack \times 7} $ $ {\textstyle \lbrack 1,850\rbrack \times 1} $
    Conv3.x $ {\textstyle \begin{bmatrix} {1,512} \\ {5,512} \\ {1,1024} \end{bmatrix} \times 3} $ $ {\textstyle \begin{bmatrix} {1,256} \\ {5,256} \\ {1,512} \end{bmatrix} \times 3} $ $ {\textstyle \lbrack 5,850\rbrack \times 4} $
    Conv4.x $ {\textstyle \begin{bmatrix} {1,1024} \\ {5,1024} \\ {1,2048} \end{bmatrix} \times 6} $ $ {\textstyle \begin{bmatrix} {1,1024} \\ {1,1024} \\ {1,2048} \end{bmatrix} \times 1} $ $ {\textstyle \lbrack 1,850\rbrack \times 1} $
    Conv5.x $ {\textstyle \begin{bmatrix} {1,1024} \\ {5,1024} \\ {1,4096} \end{bmatrix} \times 1} $ $ {\textstyle \lbrack 4,850\rbrack \times 3} $
    Conv6.x $ {\textstyle \lbrack 4,1024\rbrack \times 1} $
    Conv7.x $ {\textstyle \lbrack 4,2048\rbrack \times 1} $
    AdaSoftmax 10k,40k,200k 4k,40k,200k 2k,10k,50k 10k,20k,200k
    Model Test PPL Hardware
    Sigmoid-RNN-2048 (Ji et al., 2015) 68.3 1 CPU
    Interpolated KN 5-Gram (Chelba et al., 2013) 67.6 100 CPUs
    Sparse Non-Negative Matrix LM (Shazeer et al., 2014) 52.9 -
    RNN-1024 + MaxEnt 9 Gram Features (Chelba et al., 2013) 51.3 24 GPUs
    LSTM-2048-512 (Jozefowicz et al., 2016) 43.7 32 GPUs
    2-layer LSTM-8192-1024 (Jozefowicz et al., 2016) 30.6 32 GPUs
    BIG GLSTM-G4 (Kuchaiev & Ginsburg, 2017) 23.311footnotemark: 1 8 GPUs
    LSTM-2048 (Grave et al., 2016a) 43.9 1 GPU
    2-layer LSTM-2048 (Grave et al., 2016a) 39.8 1 GPU
    GCNN-13 38.1 1 GPU
    GCNN-14 Bottleneck 31.9 8 GPUs

    4.2 訓練

    我們在 Torch (Collobert et al., 2011) 中實現模型,並在 Tesla M40 GPU 上訓練。我們的大多數模型在單 GPU 上訓練,因為我們專注於發現具有良好泛化能力和高效測試時計算的緊湊架構。對較大的模型,我們使用 8 GPU 的設置進行訓練:將模型複製到每張 GPU,並將 batch 劃分,使每個 worker 計算 1/8 的梯度。然後使用 Nvidia NCCL 對梯度求和。多 GPU 設置使我們能夠訓練具有更大隱藏單元的模型。

    我們使用 Nesterov 動量進行訓練 (Sutskever et al., 2013)。雖然其內存代價是再多存儲一份與參數同樣大小的向量,但相對標準的 SGD,它僅以極少的額外計算就顯著提升了收斂速度。我們還通過 gradient clipping (Pascanu et al., 2013) 與 weight normalization (Salimans & Kingma, 2016) 進一步加快了收斂。

    Pascanu 等人 (2013) 主張使用 gradient clipping,因為它可以防止 RNN 中典型的梯度爆炸問題。然而,gradient clipping 並不局限於 RNN,因為它可以從一般的信賴域方法概念中導出。Gradient clipping 通過球形信賴域得到

    $ {\textstyle \Delta\hspace{0pt}\theta^{\ast}} $ $ {\textstyle = {{{\operatorname{argmin}\limits_{\substack{{\text{s. t.}\hspace{0pt}{\|{\Delta\hspace{0pt}\theta}\|}} \leq \epsilon}}f}\hspace{0pt}{(\theta)}} + {\nabla{f^{T}\hspace{0pt}\Delta\hspace{0pt}\theta}}}} $
    $ {\textstyle {= {- {{\max{({\|{\nabla f}\|},\epsilon)}}\hspace{0pt}\frac{\nabla f}{\|{\nabla f}\|}}}}.} $ (4)

    經驗上,即使我們沒有使用循環架構,使用 gradient clipping 也能使實驗顯著更快地收斂。

    綜合起來,這些方法在相對較大的學習率(如 $ {\textstyle 1} $)下實現了穩定而快速的收斂。

    4.3 超參數

    我們通過在驗證集上的隨機搜索做交叉驗證,找到良好的超參數配置。對模型架構,我們在 $ {\textstyle \{ 1,\ldots,10\}} $ 中選擇殘差塊的數量,在 $ {\textstyle \{ 128,\ldots,256\}} $ 中選擇嵌入維度,在 $ {\textstyle \{ 128,\ldots,2048\}} $ 中選擇隱藏單元數,在 $ {\textstyle \{ 3,\ldots,5\}} $ 中選擇核寬度。總體而言,找到一個好的架構相當簡單,經驗法則是模型越大,性能越好。在優化方面,我們使用 Kaiming 初始化 (He et al., 2015b) 初始化模型各層,在區間 $ {\textstyle \lbrack 1.,2.\rbrack} $ 上均勻採樣學習率,動量設為 $ {\textstyle 0.99} $,clipping 設為 $ {\textstyle 0.1} $。優化器的良好超參數相當容易確定,且最佳值在不同數據集間變化不大。

    5 結果

    LSTM 與循環網絡能夠捕捉長程依賴,並正快速成為自然語言處理的基石。在本節中,我們在兩個數據集上將文獻中強有力的 LSTM 與 RNN 模型與我們提出的門控卷積方法進行比較。

    Refer to caption

    我們發現,GCNN 在 Google Billion Word 上優於可比的 LSTM 結果。為了精確比較這些方法,我們控制了相同的 GPU 數量與 adaptive softmax 輸出模型 (Grave et al., 2016a),因為這些變量對性能有顯著影響。在此設置下,GCNN 達到 $ {\textstyle 38.1} $ 的測試 perplexity,而可比的 LSTM 為 $ {\textstyle 39.8} $ perplexity (表 2)。

    此外,GCNN 在顯著更高的計算效率下也獲得了強勁的性能。圖 2 顯示,我們的方法彌合了過去使用完整 softmax 的模型與使用通常精度較低的 hierarchical softmax 的模型之間的顯著差距。得益於 adaptive softmax,GCNN 只需一小部分操作即可達到相同的 perplexity 值。GCNN 超越了其他單模型的 state-of-the-art 方法,僅次於 Jozefowicz 等人 (2016) 大得多的 LSTM——該模型需要更多 GPU 與計算開銷大得多的完整 softmax。相比之下,我們訓練過的最大模型達到 $ {\textstyle 31.9} $ 測試 perplexity,而上述方法為 $ {\textstyle 30.6} $,但我們僅需在 8 GPU 上訓練 2 周,而對方需要在 32 GPU 上訓練 3 周。值得注意的是,這些結果可以通過 mixtures of experts (Shazeer et al., 2017) 或對這些模型集成來進一步提升。

    Model Test PPL Hardware
    LSTM-1024 (Grave et al., 2016b) 48.7 1 GPU
    GCNN-8 44.9 1 GPU
    GCNN-14 37.2 4 GPUs

    **footnotetext: 提交後才出現 另一個相關問題是 GCNN 固定的上下文大小是否能夠充分建模長序列。在 Google Billion Word 上,平均句子長度相當短——只有 20 個詞。我們在 WikiText-103 上進行評估,以判斷模型在擁有更大可用上下文的數據集上是否表現良好。在 WikiText-103 上,輸入序列是整篇 Wikipedia 文章而非單個句子——平均長度增加到 4000 詞。然而,GCNN 在這一問題上也優於 LSTM (表 3)。GCNN-8 模型有 8 層,每層 $ {\textstyle 800} $ 個單元,而 LSTM 有 $ {\textstyle 1024} $ 個單元。這些結果表明,GCNN 能夠建模足夠的上下文以取得強勁的結果。

    我們按照 Chen 等人 (2016) 的做法在 Gigaword 數據集上進行評估,與全連接模型比較。我們發現全連接網絡與卷積網絡分別達到 55.6 與 29.4 perplexity。我們也在規模小得多的 Penn Treebank 數據集上做了初步實驗。當對句子獨立評分時,GCNN 與 LSTM 的測試 perplexity 相近,分別為 108.7 與 109.3。不過,通過以前文句子為條件可以獲得更好的結果。與 LSTM 不同,我們發現 GCNN 在這個相當小的數據集上過擬合,因此該模型更適合大規模問題。

    5.1 計算效率

    Throughput Responsiveness
    (CPU) (GPU) (GPU)
    LSTM-2048 169 45,622 2,282
    GCNN-9 121 29,116 29,116
    GCNN-8 Bottleneck 179 45,878 45,878

    Refer to caption Refer to caption

    計算成本是語言模型的重要考量。根據應用場景,需要考慮多個指標。我們將一個模型的 throughput 定義為每秒可處理的 token 數。Throughput 可以通過並行處理多句來攤銷順序操作,從而最大化。相比之下,responsiveness 是順序處理輸入(一次一個 token)的速度。Throughput 重要是因為它表示處理整段文本所需的時間,而 responsiveness 表示完成處理一個句子所需的時間。通過批處理同時評估多個句子,模型可以做到 responsiveness 低但 throughput 高。這種情況下,模型完成單個句子的處理較慢,但能以良好速率處理大量句子。

    我們對在 Google Billion Word 基準上達到約 $ {\textstyle 43.9} $ perplexity 的模型評估 throughput 與 responsiveness。我們考慮表 2 中具有 $ {\textstyle 2048} $ 單元的 LSTM、一個具有 7 個按 (He et al., 2015a) 描述的 bottleneck 結構的 ResNet 塊的 GCNN-8Bottleneck,以及沒有 bottleneck 的 GCNN-8。Bottleneck 塊在兩個 $ {\textstyle k = 1} $ 層之間夾一個 $ {\textstyle k > 1} $ 的卷積。這種設計通過 $ {\textstyle k = 1} $ 層降維與升維,使卷積在更低維空間中運算,從而降低計算成本。我們的結果表明,使用 bottleneck 塊對維持計算效率非常重要。

    LSTM 的 throughput 通過使用一個由 $ {\textstyle 750} $ 條長度為 $ {\textstyle 20} $ 的序列組成的大 batch 來測量,每 batch 共 $ {\textstyle 15,000} $ 個 token。Responsiveness 是處理 $ {\textstyle 15,000} $ 個連續 token 的平均速度。表 4 顯示 LSTM 與 GCNN 的 throughput 相近。LSTM 在 GPU 上表現非常好,因為 $ {\textstyle 750} $ 的大 batch 在不同句子之間提供了高度並行化。這是由於 LSTM 實現已被徹底優化並使用了 cuDNN,而 cuDNN 中的卷積實現並未針對我們模型所用的 1-D 卷積進行優化。我們相信通過更高效的 1-D cuDNN 卷積可以獲得更好的性能。與 LSTM 不同,GCNN 可以同時在序列之間以及每個序列的 token 之間並行化,從而具有 20× 的 responsiveness。

    Refer to caption Refer to caption

    5.2 門控機制

    在本節中,我們將 gated linear unit 與其他機制以及沒有門控的模型進行比較。我們考慮 (Oord et al., 2016b) 提出的 LSTM 風格門控機制 (GTU) $ {\textstyle {{\text{tanh}\hspace{0pt}{({{\mathbf{X} \ast \mathbf{W}} + \mathbf{b}})}} \otimes \sigma}\hspace{0pt}{({{\mathbf{X} \ast \mathbf{V}} + \mathbf{c}})}} $,以及使用普通 ReLU 或 Tanh 激活的網絡。門控單元會增加參數,因此為公平比較,我們仔細對參數量相近的模型做交叉驗證。圖 3(左)顯示,在 WikiText-103 上 GLU 網絡收斂到的 perplexity 比其他方法更低。與 gated linear units 類似,ReLU 也具有一條線性路徑,使梯度容易通過激活單元。這使得 ReLU 與 GLU 的收斂速度都快得多。另一方面,Tanh 與 GTU 都沒有這種線性路徑,因此都遭受 vanishing gradient 問題。在 GTU 中,輸入與門控單元在單元飽和時都可能切斷梯度。

    比較 GTU 與 Tanh 模型讓我們能夠衡量門控的效果,因為 Tanh 模型可以看作去除了 sigmoid 門控單元的 GTU 網絡。結果(圖 3,左)表明門控單元帶來了巨大的差異,提供了有用的建模能力——GTU 與 Tanh 單元之間存在顯著的性能差距。類似地,雖然 ReLU 單元並非 GLU 中門控單元的精確消融,但它可以被視作一種簡化形式 $ {\textstyle {\text{ReLU}\hspace{0pt}{(\mathbf{X})}} = {\mathbf{X} \otimes {({\mathbf{X} > 0})}}} $,其中門是否激活取決於輸入的符號。即便如此,GLU 單元仍帶來更低的 perplexity。

    在圖 3(右)中,我們在更大的 Google Billion Words 數據集上重複同一實驗。考慮到該任務所需訓練時間較長,我們採用 $ {\textstyle 100} $ 小時的固定時間預算。與 WikiText-103 類似,gated linear units 在此問題上取得了最佳結果。GLU 與 ReLU 之間約有 5 個 perplexity 點的差距,與 (Jozefowicz et al., 2016) 在同一數據集上測得的 LSTM 與 RNN 模型之間的差距相近。

    5.3 非線性建模

    迄今為止的實驗表明,與其他非線性相比,gated linear unit 受益於其所提供的線性路徑。接下來,我們將帶 GLU 的網絡與純線性網絡以及帶雙線性層的網絡進行比較,以衡量 GLU 中門控所提供的非線性路徑的影響。該實驗的一個動機是線性模型在許多自然語言處理任務上的成功 (Manning & Schütze, 1999)。我們考慮深層 linear 卷積網絡,其中各層沒有 GLU 的門控單元,形式為 $ {\textstyle {h_{l}\hspace{0pt}{(\mathbf{X})}} = {{\mathbf{X} \ast \mathbf{W}} + \mathbf{b}}} $。多層堆疊不過是模型的一種分解,在 softmax 之前都保持線性,在 softmax 處變為對數線性。GLU 的另一種變體是雙線性層 (Mnih & Hinton, 2007),其形式為 $ {\textstyle {h_{l}\hspace{0pt}{(\mathbf{X})}} = {{({{\mathbf{X} \ast \mathbf{W}} + \mathbf{b}})} \otimes {({{\mathbf{X} \ast \mathbf{V}} + \mathbf{c}})}}} $

    Refer to caption

    5 顯示 GLU 表現最佳,其次是雙線性層,然後是線性層。雙線性層比線性層提升了超過 $ {\textstyle 40} $ 個 perplexity 點,而 GLU 又比雙線性模型提升了 $ {\textstyle 20} $ 個 perplexity 點。線性模型表現很差,perplexity 為 $ {\textstyle 115} $,甚至差於 Kneser-Ney 5-gram 模型的 $ {\textstyle 67.6} $,儘管前者可以訪問更多上下文。令人意外的是,僅引入雙線性單元就足以在 Google Billion Word 上達到 $ {\textstyle 61} $ perplexity,這超過了 Kneser-Ney 5-gram 模型以及 (Ji et al., 2015) 的非線性神經模型。

    5.4 上下文大小

    4 顯示了上下文大小對門控 CNN 的影響。我們對每個上下文大小嘗試了不同的網絡深度與核寬度組合,並為每個大小選擇表現最佳者。一般而言,更大的上下文可以提升準確率,但當窗口超過 40 個詞時收益會迅速遞減——即便在 WikiText-103 上,我們可以以整篇 Wikipedia 文章為條件,情況也是如此。這意味着循環模型所提供的無界上下文對於語言建模而言並非嚴格必要。此外,這一發現也與「通過 truncated backpropagation through time 在僅 40 個時間步後截斷梯度即可獲得良好的循環網絡性能」的事實一致。圖 4 還顯示,WikiText-103 比 Google Billion Word 從更大的上下文中獲益更多,因為在較小上下文下其性能下降更明顯。WikiText-103 提供的上下文遠多於 Google Billion Word(後者句子平均長度為 20)。不過,雖然文檔平均長度接近 4000 token,我們發現僅 30 個 token 的上下文即可獲得很強的性能。

    5.5 訓練

    在本節中,我們對 weight normalization 與 gradient clipping 的影響進行消融研究。我們對每種配置分別進行超參數交叉驗證以保證公平比較。由於每個實驗代價較高,我們僅在訓練數據上做一次迭代。圖 6 顯示,這兩種方法都顯著加快了收斂。其中,weight normalization 將速度提升了兩倍多。這種加速部分得益於能夠使用比原本大得多的學習率($ {\textstyle 1} $ 而非 $ {\textstyle 0.01} $)。Clipping 與 weight normalization 都會帶來計算開銷,但相對於收斂速度的大幅提升而言開銷較小。

    Refer to caption

    6 結論

    我們為語言建模引入了一種帶新型門控機制的卷積神經網絡。與循環神經網絡相比,我們的方法構建了輸入詞的層次化表示,使其更容易捕捉長程依賴,這與語言學語法形式主義中樹狀結構分析的精神相通。同樣的性質也使學習更容易,因為特徵經過固定數量的層與非線性變換,而循環網絡中的處理步數則取決於詞在輸入中的位置。結果顯示,我們的門控卷積網絡在 WikiText-103 上取得了新的 state-of-the-art。在 Google Billion Word 基準上,我們表明可以用顯著更少的資源獲得有競爭力的結果。

    致謝

    我們要感謝 Ben Graham、Jonas Gehring、Edouard Grave、Armand Joulin 與 Ronan Collobert 的有益討論。

    參考文獻

    • Bengio et al. (2003) Bengio, Yoshua, Ducharme, Réjean, Vincent, Pascal, and Jauvin, Christian. A neural probabilistic language model. journal of machine learning research, 3(Feb):1137–1155, 2003.
    • Chelba et al. (2013) Chelba, Ciprian, Mikolov, Tomas, Schuster, Mike, Ge, Qi, Brants, Thorsten, Koehn, Phillipp, and Robinson, Tony. One billion word benchmark for measuring progress in statistical language modeling. arXiv preprint arXiv:1312.3005, 2013.
    • Chen & Goodman (1996) Chen, Stanley F and Goodman, Joshua. An empirical study of smoothing techniques for language modeling. In Proceedings of the 34th annual meeting on Association for Computational Linguistics, pp.  310–318. Association for Computational Linguistics, 1996.
    • Chen et al. (2016) Chen, Wenlin, Grangier, David, and Auli, Michael. Strategies for training large vocabulary neural language models. CoRR, abs/1512.04906, 2016.
    • Collobert et al. (2011) Collobert, Ronan, Kavukcuoglu, Koray, and Farabet, Clement. Torch7: A Matlab-like Environment for Machine Learning. In BigLearn, NIPS Workshop, 2011. URL http://torch.ch.
    • Dauphin & Grangier (2015) Dauphin, Yann N and Grangier, David. Predicting distributions with linearizing belief networks. arXiv preprint arXiv:1511.05622, 2015.
    • Glorot & Bengio (2010) Glorot, Xavier and Bengio, Yoshua. Understanding the difficulty of training deep feedforward neural networks. The handbook of brain theory and neural networks, 2010.
    • Grave et al. (2016a) Grave, E., Joulin, A., Cissé, M., Grangier, D., and Jégou, H. Efficient softmax approximation for GPUs. ArXiv e-prints, September 2016a.
    • Grave et al. (2016b) Grave, E., Joulin, A., and Usunier, N. Improving Neural Language Models with a Continuous Cache. ArXiv e-prints, December 2016b.
    • (10) Gutmann, Michael and Hyvärinen, Aapo. Noise-contrastive estimation: A new estimation principle for unnormalized statistical models.
    • He et al. (2015a) He, Kaiming, Zhang, Xiangyu, Ren, Shaoqing, and Sun, Jian. Deep residual learning for image recognition. arXiv preprint arXiv:1512.03385, 2015a.
    • He et al. (2015b) He, Kaiming, Zhang, Xiangyu, Ren, Shaoqing, and Sun, Jian. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In Proceedings of the IEEE International Conference on Computer Vision, pp.  1026–1034, 2015b.
    • Hochreiter & Schmidhuber (1997) Hochreiter, Sepp and Schmidhuber, Jürgen. Long short-term memory. Neural computation, 9(8):1735–1780, 1997.
    • Ji et al. (2015) Ji, Shihao, Vishwanathan, SVN, Satish, Nadathur, Anderson, Michael J, and Dubey, Pradeep. Blackout: Speeding up recurrent neural network language models with very large vocabularies. arXiv preprint arXiv:1511.06909, 2015.
    • Jozefowicz et al. (2016) Jozefowicz, Rafal, Vinyals, Oriol, Schuster, Mike, Shazeer, Noam, and Wu, Yonghui. Exploring the limits of language modeling. arXiv preprint arXiv:1602.02410, 2016.
    • Kalchbrenner et al. (2016) Kalchbrenner, Nal, Espeholt, Lasse, Simonyan, Karen, van den Oord, Aaron, Graves, Alex, and Kavukcuoglu, Koray. Neural Machine Translation in Linear Time. arXiv, 2016.
    • Kneser & Ney (1995) Kneser, Reinhard and Ney, Hermann. Improved backing-off for m-gram language modeling. In Acoustics, Speech, and Signal Processing, 1995. ICASSP-95., 1995 International Conference on, volume 1, pp.  181–184. IEEE, 1995.
    • Koehn (2010) Koehn, Philipp. Statistical Machine Translation. Cambridge University Press, New York, NY, USA, 1st edition, 2010. ISBN 0521874157, 9780521874151.
    • Kuchaiev & Ginsburg (2017) Kuchaiev, Oleksii and Ginsburg, Boris. Factorization tricks for LSTM networks. CoRR, abs/1703.10722, 2017. URL http://arxiv.org/abs/1703.10722.
    • LeCun & Bengio (1995) LeCun, Yann and Bengio, Yoshua. Convolutional networks for images, speech, and time series. The handbook of brain theory and neural networks, 3361(10):1995, 1995.
    • Manning & Schütze (1999) Manning, Christopher D and Schütze, Hinrich. Foundations of statistical natural language processing, 1999.
    • Merity et al. (2016) Merity, S., Xiong, C., Bradbury, J., and Socher, R. Pointer Sentinel Mixture Models. ArXiv e-prints, September 2016.
    • Mikolov et al. (2010) Mikolov, Tomáš, Martin, Karafiát, Burget, Lukáš, Cernocký, Jan, and Khudanpur, Sanjeev. Recurrent Neural Network based Language Model. In Proc. of INTERSPEECH, pp.  1045–1048, 2010.
    • Mnih & Hinton (2007) Mnih, Andriy and Hinton, Geoffrey. Three new graphical models for statistical language modelling. In Proceedings of the 24th international conference on Machine learning, pp.  641–648. ACM, 2007.
    • Morin & Bengio (2005) Morin, Frederic and Bengio, Yoshua. Hierarchical probabilistic neural network language model. In Aistats, volume 5, pp.  246–252. Citeseer, 2005.
    • Oord et al. (2016a) Oord, Aaron van den, Kalchbrenner, Nal, and Kavukcuoglu, Koray. Pixel recurrent neural networks. arXiv preprint arXiv:1601.06759, 2016a.
    • Oord et al. (2016b) Oord, Aaron van den, Kalchbrenner, Nal, Vinyals, Oriol, Espeholt, Lasse, Graves, Alex, and Kavukcuoglu, Koray. Conditional image generation with pixelcnn decoders. arXiv preprint arXiv:1606.05328, 2016b.
    • Pascanu et al. (2013) Pascanu, Razvan, Mikolov, Tomas, and Bengio, Yoshua. On the difficulty of training recurrent neural networks. In Proceedings of The 30th International Conference on Machine Learning, pp.  1310–1318, 2013.
    • Salimans & Kingma (2016) Salimans, Tim and Kingma, Diederik P. Weight normalization: A simple reparameterization to accelerate training of deep neural networks. arXiv preprint arXiv:1602.07868, 2016.
    • Shazeer et al. (2014) Shazeer, Noam, Pelemans, Joris, and Chelba, Ciprian. Skip-gram language modeling using sparse non-negative matrix probability estimation. arXiv preprint arXiv:1412.1454, 2014.
    • Shazeer et al. (2017) Shazeer, Noam, Mirhoseini, Azalia, Maziarz, Krzysztof, Davis, Andy, Le, Quoc V., Hinton, Geoffrey E., and Dean, Jeff. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer. CoRR, abs/1701.06538, 2017. URL http://arxiv.org/abs/1701.06538.
    • Steedman (2002) Steedman, Mark. The syntactic process. 2002.
    • Sutskever et al. (2013) Sutskever, Ilya, Martens, James, Dahl, George E, and Hinton, Geoffrey E. On the importance of initialization and momentum in deep learning. 2013.
    • Wang et al. (2015) Wang, Mingxuan, Lu, Zhengdong, Li, Hang, Jiang, Wenbin, and Liu, Qun. gencnn: A convolutional architecture for word sequence prediction. CoRR, abs/1503.05034, 2015. URL http://arxiv.org/abs/1503.05034.
    • Yu & Deng (2014) Yu, Dong and Deng, Li. Automatic Speech Recognition: A Deep Learning Approach. Springer Publishing Company, Incorporated, 2014. ISBN 1447157788, 9781447157786.