1. 程式人生 > >Sequence to Sequence Learning with Neural Networks

Sequence to Sequence Learning with Neural Networks

用神經網路進行序列到序列的學習

摘要

深度神經網路(DNN)是功能強大的模型,在複雜的學習任務中取得了優異的效能。雖然DNN在大型標記訓練集可用時效果很好,但它們不能用於將序列對映到序列。在本文中,我們提出了一種通用的端到端序列學習方法,它對序列結構做出了最小的假設。我們的方法是使用多層長短期記憶(LSTM)將輸入序列對映到固定維度的向量,然後使用另一個深度LSTM來解碼來自向量的目標序列。我們的主要結果是,在WMT’14資料集的英語到法語翻譯任務中,LSTM產生的翻譯在整個測試集上獲得了34.8的BLEU分數,其中LSTM的BLEU分數在詞彙量不足時將會降低。此外,LSTM在長句上沒有困難。為了比較,基於短語的SMT系統在同一資料集上實現了33.3的BLEU分數。當我們使用LSTM重新調整上述SMT系統產生的1000個假設時,其BLEU分數增加到36.5,接近此任務的先前最佳結果。LSTM還學習了對詞序敏感且對主動和被動語音相對不變的合理的短語和句子表示。最後,我們發現,逆轉所有源語句(但不是目標句子)中單詞的順序可以顯著提高LSTM的效能,因為這樣做會在源語句和目標語句之間引入許多短期依賴關係,從而使優化問題更容易。

1.介紹

深度神經網路(DNN)是非常強大的機器學習模型,可以在諸如語音識別[13,7]和視覺物件識別[19,6,21,20]等難題上實現出色的效能。DNN功能強大,因為它們可以針對適度大小的步驟執行任意平行計算。DNN功能的一個令人驚訝的例子是它們只使用2個二次大小的隱藏層來排序N個N位數的能力。因此,雖然神經網路與傳統的統計模型相關,但它們會學習複雜的計算。此外,只要標記的訓練集具有足夠的資訊來指定網路引數,就可以使用監督的反向傳播訓練大型DNN。因此,如果存在了一個取得了良好結果的大型的DNN引數設定(例如,因為人類可以快速的解決該任務),則有監督的反向傳播將會找到這些引數並解決該問題。

儘管DNN具有靈活性和強大的功能,但它們只能應用於輸入和目標可以用固定維數向量進行合理編碼的問題。這是一個重要的限制,因為許多重要問題最好用長度未知的序列表達。例如,語音識別和機器翻譯是順序問題。同樣,問題回答也可以被視為將表示問題的單詞序列對映到表示答案的單詞序列。因此,學習將序列對映到序列的與結構域無關的方法將是有用的。

將DNN用於序列將產生很大挑戰的原因是因為DNN獲取的輸入和輸出的維度是一直且固定的。在本文中,我們將展示長短期記憶架構的直接運用處理序列到序列的問題。我們的想法是使用一個LSTM來讀取輸入序列,一次一個時間步,以獲得大的固定維向量表示,然後使用另一個LSTM從該向量中提取輸出序列(圖1)。第二個LSTM本質上是一個遞迴神經網路語言模型,但它不以輸入序列為條件。LSTM成功學習具有長距離時間依賴性的資料的能力使其成為該應用的自然選擇,因為輸入與其相應輸出之間存在相當大的時間滯後(圖1)。
在這裡插入圖片描述


已經有許多相關的嘗試來解決用神經網路進行序列到序列的學習。我們的方法與Kalchbrenner和Blunsom 密切相關,他們是第一個將整個輸入句子對映到向量的人。Graves 引入了一種新穎的可區分的注意力機制,它允許神經網路專注於他們輸入的不同部分,並且這個想法的一個優雅的變體已經成功地應用於Bahdanau等人的機器翻譯。 Connectionist Sequence Classification 是另一種用神經網路將序列對映到序列的流行技術,但它假設輸入和輸出之間單調對齊。

這項工作的主要成果如下:在WMT’14英語到法語翻譯任務中,我們通過使用簡單的從左到右的 beam search 解碼器從5個深度LSTM(每個具有384M引數和8000維狀態)的集合中直接提取翻譯,獲得了34.81的BLEU得分。到目前為止,這是通過大型神經網路進行直接翻譯得到的最佳結果。為了比較,該資料集上SMT Baseline 的BLEU得分為33.30 。34.81 的 BLEU 得分是通過LSTM獲得的,詞彙量為 80,000 詞,因此只要參考譯文為包含這些 80,000 個的單詞,分數就會降低。該結果表明,相對未優化的小詞彙量神經網路體系結構具有很大的改進空間,但已經優於基於短語的SMT系統。

最後,我們使用LSTM重新調整了同一任務中公開提供的最佳 SMT Baseline 列表。通過這樣做,我們獲得了36.5的BLEU分數,這使得 Baseline 提高了3.2 個 BLEU 分,並且接近於此任務的先前最佳公佈結果(37.0)。

令人驚訝的是,LSTM能夠在長句子上做得很好,因為我們顛倒了源句中的單詞順序而不是訓練和測試集中的目標句子。通過這樣做,我們引入了許多短期依賴關係,使優化問題變得更加簡單(參見第2節和第3.3節)。反轉源句中單詞的簡單技巧是這項工作的關鍵技術貢獻之一。

LSTM的一個有用特性是它可以將可變長度的輸入句子對映到固定維度的向量表示。鑑於翻譯傾向的是源句的釋義,翻譯目標鼓勵LSTM去尋找能夠代表他們含義的句子表示,因為具有相似含義的句子彼此接近,而不同的句子含義將互相遠離。定性評估支援這種說法,這表明我們的模型對單詞順序敏感,並且對主動和被動語音是相對不變的。

2.模型

遞迴神經網路(RNN)是前饋神經網路到序列的自然概括。給定一系列輸入(x1,…,xT),標準RNN通過迭代以下等式計算輸出序列(y1,…,yT):
在這裡插入圖片描述
只要提前知道輸出之間的對齊,RNN就可以輕鬆地將序列對映到序列。然而,目前尚不清楚如何將RNN應用於其輸入和輸出序列具有不同長度且具有複雜和非單調關係的問題。

一般序列學習的最簡單策略是使用一個RNN將輸入序列對映到固定大小的向量,然後用另一個RNN將向量對映到目標序列。雖然它原則上可以工作,因為RNN提供了所有相關資訊,但由於產生的長期依賴性(圖1),RNN很難訓練。然而,因為長短期記憶(LSTM)可以解決長距離時間依賴性的問題,因此LSTM可能在此方法上成功。

LSTM的目標是估計條件概率 p ( y 1 , . . . , y T x 1 . . . x T ) p(y_1,...,y_{T^{'}}| x_1,...,x_T) ,其中 x 1 , . . . , x T (x_1,...,x_T) 是輸入序列, y 1 . . . y T y_1,...,y_{T^{'}} 是其對應的輸出序列,其長度 T T^{'} 可以不同於T。首先,LSTM通過由最後隱藏狀態給出的輸入序列 x 1 . . . x T (x_1,...,x_T) 的固定維表示v來計算該條件概率,然後用標準的LSTM-LM公式計算 y 1 . . . y T y_1,...,y_{T^{'}} 的概率,其初始隱藏狀態設定為 x 1 . . . x T x_1,...,x_T 的表示v :
在這裡插入圖片描述

在該等式中,每個 p y t v y 1 . . . y t 1 p(y_t | v,y_1,...,y_{t-1}) 的分佈用詞彙表中的所有單詞的softmax表示。我們使用Graves的LSTM公式。請注意,我們要求每個句子以特殊的句末符號<EOS>結束,這使得模型能夠定義任何長度的序列的分佈。總體方案在圖1中概述,其中所示的LSTM計算“A”,“B”,“C”,<EOS>的表示,然後使用該表示來計算“W”,“X”,”Y“,”Z“,<EOS>的概率。

我們的實際模型與上述描述在三個重要方面上不同。首先,我們使用了兩個不同的LSTM:一個用於輸入序列,另一個用於輸出序列,因為這樣做能夠增加模型引數的數量並且其計算成本可以忽略,還可以同時在多個語言對上訓練LSTM。其次,我們發現深度LSTM明顯優於淺LSTM,因此我們選擇了一個四層LSTM。第三,我們發現翻轉輸入句子的單詞順序是非常有價值的。例如,不是將句子a,b,c對映到句子α,β,γ,LSTM而是要求將c,b,a對映到α,β,γ,其中α,β,γ是 a,b,c 的翻譯。這樣,a非常靠近α,b非常接近β,依此類推,這使得SGD很容易在輸入和輸出之間“建立通訊”。我們發現這種簡單的資料轉換可以大大提高LSTM的效能

3.實驗

我們用兩種方式將我們的方法應用於WMT’14英語到法語MT任務。

  1. 我們用其直接翻譯輸入句子而不使用參考SMT系統,;
  2. 我們重新調整SMT baseline 的n個最佳列表。

我們給出了這些翻譯方法的準確性,提供樣本翻譯,並可視化生成的句子表示。

PS:Baseline Model是機器學習領域的一個術語,簡單來說,就是使用最普遍的情況來做結果預測。比如一個猜硬幣正反面遊戲,最樸素的策略就是永遠猜正(或者永遠猜反),這樣你至少有50%的準確率。再比如說,很多學習不好的同學,應該都做過這件事情:考試裡選擇題一率選C,這也是利用了Baseline Model來“預測”問題的結果。理論上,這樣做至少能拿25%的分數。而之所以選擇C,是發現,似乎選擇C,能拿到比25%還多的分數。畢竟,選擇題的答案不是真正的隨機分佈的。

Baseline Model的意義,是讓我們瞭解這個問題的基線在哪裡,從而讓我們不再迷信一個絕對的數值。你告訴我你的預測準確度是99.9%,嚴格意義來講是沒有意義的。因為如果你的Baseline Model的準確率也是99.9%,你的演算法等於沒有做任何事情;而如果你的Baseline Model的準確度是99.99%,你的演算法反而讓結果變差了。但是如果你的Baseline Model的準確率是50%,你的演算法結果準確率哪怕僅僅是60%,也是挺不錯的一個改善。

3.1 Dataset details

我們使用WMT’14英語到法語資料集。我們在12M句子的子集上訓練我們的模型,這些句子由348M法語單詞和304M英語單片語成,這是一個乾淨的“選定”子集。我們選擇了這個翻譯任務和這個特定的訓練集子集,因為該資料集提供了公共可用的標記化訓練和測試集以及來自基線SMT的1000個最佳列表。

由於典型的神經語言模型依賴於每個單詞的向量表示,我們對兩種語言都使用了固定的詞彙表。 我們對源語言使用了160,000個最常用的單詞,為目標語言使用了80,000個最常用的單詞。 每個詞彙表外的單詞都被一個特殊的“UNK”標記所取代。

3.2 Decoding and Rescoring

我們實驗的核心是在許多句子對上訓練大的深度LSTM。我們訓練該網路是通過在給定源句S的情況下最大化正確翻譯T的對數概率,因此訓練目標是:

在這裡插入圖片描述
其中 S S 是訓練集。訓練完成後,我們根據LSTM來查詢最可能的翻譯:
在這裡插入圖片描述
我們使用簡單的從左到右beam search 解碼器搜尋最可能的翻譯,該解碼器維持少量部分假設B,其中部分假設是某些翻譯的字首。在每個時間步長,我們用詞彙表中的每個可能的單詞擴充套件 beam 中的每個部分假設。這大大增加了假設的數量,因此我們根據模型的對數概率丟棄除最可能的假設B之外的所有假設。只要將<EOS>符號附加到一個假設中,就會將其從 beam 中移除並新增到一組完整的假設中。雖然這個解碼器是近似的,但實現起來很簡單。有趣的是,即使 beam 尺寸為1,我們的系統也能很好地工作,而尺寸為2的 beam 提供了beam search 的大部分優點。我們還使用LSTM來重新調整baseline system 產生的1000個最佳列表。為了重新對n個最佳列表評分,我們使用LSTM計算每個假設的對數概率,並對其得分和LSTM得分取平均值。

3.3 Reversing the Source Sentences

雖然LSTM能夠解決長期依賴性問題,但我們發現當源語句被翻轉時(目標語句不翻轉),LSTM會學得更好。通過這樣做,LSTM的測試困惑度從5.8降至4.7,並且其解碼翻譯的測試BLEU分數從25.9增加到30.6。

雖然我們沒有對這種現象做出完整的解釋,但我們認為這是由於對資料集引入了許多短期依賴性。通常,當我們將源句與目標句連線起來時,源句中的每個單詞都遠離目標句中的相應單詞。結果,這個問題有一個很大的“最小時間滯後”。通過翻轉源語句中的單詞,源語言和目標語言中相應單詞之間的平均距離不變。但是,源語言中的前幾個單詞現在非常接近目標語言中的前幾個單詞,因此問題的最小時滯大大減少了。因此,反向傳播在源句和目標句之間更容易“建立通訊”,這反過來導致整體效能的顯著改善。

最初,我們認為反轉輸入句只會導致目標句子前面部分的預測更加準確,後面部分的預測則不那麼準確。然而,對於翻轉源語句進行訓練的LSTM在長句子上比在原始源語句上訓練的LSTM好得多(參見第3.7節),這表明反轉輸入句子會導致LSTM具有更好的記憶體利用率。

3.4 Training details

我們發現LSTM模型易於訓練。我們使用4層的深度LSTM,每層1000個記憶細胞和1000維的詞嵌入,輸入詞彙表為160,000,輸出詞彙表為80,000。因此,深度LSTM使用8000個實數來表示句子。我們發現深度LSTM明顯優於淺層LSTM,其中每個附加層減少了近10%的困惑度,可能是由於它們巨大的hidden state。我們在每個輸出上使用了超過80,000個單詞的樸素softmax。得到的LSTM有384M個引數,其中64M是純迴圈連線(“編碼器”LSTM為32M,“解碼器”LSTM為32M)。完整的訓練細節如下:

  • 我們用-0.08和0.08之間的均勻分佈來對所有LSTM的引數進行初始化
  • 我們使用無動量的隨機梯度下降,固定學習率為0.7。5個週期以後,我們開始每半個週期對學習率減半。我們一共用7.5個週期來訓練我們的模型。
  • 我們使用128個序列的批次作為梯度,並將其劃分為批次的大小(即128)。
  • 儘管LSTM一般不會遇到梯度消失的問題,但它們會有梯度爆炸的問題。因此,我們通過當其範數超過閾值時對其進行縮放來對梯度的範數[10,25]實施強制約束。對於每個訓練批次,我們計算s = g 2 ||g||_2 ,其中g是梯度除以128。如果 s &gt; 5 s&gt;5 ,那麼我們將g縮小為 g = 5 g s g=\frac{5g}{s}
  • 不同的句子有不同的長度。大多數句子都很短(例如,長度為20-30),但是一些句子很長(例如,長度> 100),因此長度為128的小批次隨機選擇的訓練句子將具有許多短句和很少的長句,因此,小批次的大部分計算是浪費的。為了解決這個問題,我們確保在一個小批次中的所有句子的長度大致相同,將會提高兩倍的速度。

3.5 並行化

在單個GPU上並使用上一節的配置來實現深度LSTM的C++實現,每秒大約處理1700個字。這對我們來說太慢了,所以我們使用8-GPU的機器並行化我們的模型。LSTM的每一層執行在不同的GPU之上,並在計算完成後立即將其啟用傳遞給下一個GPU /層。我們的模型有4層LSTM,每個LSTM都駐留在一個單獨的GPU上。剩下的4個GPU用來並行化softmax,因此每個GPU負責一個1000×20000矩陣的乘法運算。最終的實現使用了一個大小為128的小批次,其速度能夠達到每秒處理6300個詞(英語和法語)。採用這種實施方式,訓練完成僅需要10天。

3.6 實驗結果

我們使用cased BLEU評分來評估翻譯質量。我們在標記化預測和基本事實上使用multi-freu.pl來計算了我們的 BLEU 分數。這種評估BELU評分的方法得到了33.3分。但是,如果我們以這種方式評估最好的WMT’14系統,我們得到了37.0的分數,這大於tostatmt.org\matrix報告的35.8。

結果呈現在表1和表2中。我們的最佳結果是通過LSTM集合獲得的,這些LSTM的隨機初始化和小批量隨機順序與其他的不同。雖然LSTM集合的解碼翻譯並不優於最好的WMT’14系統,但它是第一次純粹的神經翻譯系統在大規模MT任務上的表現優於基於短語的SMT baseline,儘管其還不能處理詞彙表外的單詞。如果重新調整1000個最佳baseline system 列表,LSTM只比WMT’14最佳結果低0.5 個BLEU數值。
在這裡插入圖片描述
在這裡插入圖片描述

3.7 在長句子上的表現

我們驚訝地發現LSTM在長句中表現良好,這將會在在圖3中定量顯示。表3列出了幾個長句及其翻譯的例子。

在這裡插入圖片描述Figure 3:The left plot shows the performance of our system as a function of sentence length, where the x-axis corresponds to the test sentences sorted by their length and is marked by the actual sequence lengths.There is no degradation on sentences with less than 35 words, there is only a minor degradation on the longest sentences. The right plot shows the LSTM’s performance on sentences with progressively more rare words,where the x-axis corresponds to the test sentences sorted by their “average word frequency rank"
在這裡插入圖片描述

3.8 模型分析

我們模型的一個吸引人的特徵是它能夠將一系列單詞轉換為固定維度的向量。圖2展示了一些學習的表示。該圖清楚地表明,該表示對單詞的順序敏感,但對用主動語態替換被動語態相當不敏感。
在這裡插入圖片描述
Figure 2: 該圖示出了在處理圖中的短語之後獲得的LSTM隱藏狀態的二維PCA投影。短語按意義聚類,在這些例子中主要是詞序在起作用,用詞袋模型難以捕捉。請注意,兩個叢集都具有相似的內部結構。

4.相關工作

關於神經網路在機器翻譯中的應用有大量的工作。到目前為止,將一個RNN語言模型(RNNLM)或前饋神經網路語言模型(NNLM)應用於MT任務的最簡單和最有效的方法是重新計算 MT baseline 的最佳列表[22],這種做法能夠可靠地提高翻譯質量。

More recently, researchers have begun to look into ways of including information about the source language into the NNLM。
這項工作的例子包括Auli等人。[1],他們將NNLM與輸入句子的主題模型相結合,從而提高了重新評分效能。Devlin等。[8]採用了類似的方法,但是他們將NNLM結合到MT系統的解碼器中,並使用解碼器的對齊資訊為NNLM提供輸入句子中最有用的單詞。他們的方法非常成功,並且在基線方面取得了很大的進步

最近,研究人員開始研究將源語言的相關資訊加入到NNLM中。例如Auli等人,他們將NNLM與輸入句子的主題模型相結合,從而提高了 rescoring 的效能。Devlin等人採用了類似的方法,但是他們將NNLM結合到MT系統的解碼器中,並使用解碼器的對齊資訊為NNLM模型提供輸入句子中的最有用的單詞。他們的方法非常成功,並且在 baseline 方面取得了很大的進步。

我們的工作與Kalchbrenner和Blunsom 密切相關,他們是第一個將輸入句子對映到一個向量然後回到一個句子的人,但他們用的是卷積神經網路來將句子對映到向量,這會失去單詞的排序。與此相似,Cho等人使用類似LSTM的RNN架構將句子對映到向量,但他們的主要關注點是將他們的神經網路整合到SMT系統中。Bahdanau等人也嘗試使用神經網路進行直接翻譯,該網路使用注意機制來克服Cho等人所遇到的長句處理不理想的情況,並取得了很好的成果。同樣,Pouget-Abadie等人試圖解決Cho等人的記憶問題,通過以產生平滑翻譯的方式翻譯源句的片段,這類似於基於短語的方法。我們認為他們可以通過簡單地在反向源語句上訓練他們的網路來實現類似的改進。

端到端訓練也是Hermann等人關注的焦點,其模型表示前饋網路的輸入和輸出,並將它們對映到空間中的類似點。但是,他們的方法不能直接生成翻譯:要獲得翻譯,他們需要在預先計算的句子資料庫中查詢最接近的向量,或者重新構造句子。

5.總結

在這項工作中,我們展示了一個很大的深度LSTM,它具有有限的詞彙表,幾乎沒有對問題結構的假設,可以勝過基於SMT的標準系統,但SMT系統的詞彙表在大規模MT任務中是無限的。我們在MT上基於LSTM的方法的成功表明,如果有足夠的訓練資料,它應該在許多其他序列學習問題上也能做得很好。

我們對通過反裝源語句中的單詞所獲得的改程序度感到驚訝。因此,找到具有最大數量的短期依賴性的編碼很重要,因為它們使學習問題更加簡單。特別是,雖然我們沒有在非反向翻譯問題上訓練標準RNN,但我們認為當源語句被顛倒時,標準RNN應該易於訓練(儘管我們沒有對其進行實驗驗證)。

我們也對LSTM能夠正確翻譯長句子的能力感到驚訝。我們最初認為由於LSTM有限的記憶而在長句上會失敗。然而,在反向資料集上訓練的LSTM在翻譯長句時幾乎沒有困難。

最重要的是,我們證明了一種簡單,直接且相對不優化的方法就可以勝過SMT系統,因此進一步的工作可能會帶來更高的翻譯準確度。這些結果表明,我們的方法可能在其他有挑戰性的序列到序列的問題上也能很好的工作。