論文筆記:Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation

論文學習:Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation

這篇論文算是 Seq2Seq(Sequenc to Sequence) 的經典論文了。文中提出了一種新的RNN模型結構用於機器翻譯等工作,此外,作爲LSTM單元的變種和簡化版本 GRU 單元也是在文章中首次提出的。很值得一讀。

Abstract

摘要部分就是老規矩了,簡要介紹文中所建立的新模型。這種名爲 RNN Encoder-Decoder 的模型的通過最大化給定序列的條件下目標序列的概率,即最大化這個條件概率,來同時訓練編碼器和解碼器。不過文中也提到,將這個模型作爲一種新的特徵來與對數線性模型共同使用,具體來說就是計算短語對出現的概率,然後應用到現有的對數線性機器翻譯模型中,可以很好的提高模型的翻譯性能。這裏的對數線性模型之後會介紹到。

1.Introduction

這一部分總體上介紹了深度網絡在自然語言處理方向的一些應用,以及稍微詳細的介紹了 RNN Encoder-Decoder在機器翻譯系統中的使用,這裏要注意一點,也就是文中提到了對比其他的模型,本文模型可以學習一個短語的連續表示空間,更好地捕捉到短語的語言規律(linguistic regularity)

2.RNN Encoder-Decoder

這一部分重點介紹了 模型的結構以及計算方式,更具體的計算過程在附錄裏(即使是很詳細的附錄我也沒有很懂,感覺自己好菜…)。

第一小節中介紹了經典的 RNN 結構,對於每一個時刻,模型單元都會輸出一個概率分佈,然後對於整個序列來說,將這些概率值相乘,也就是最後的一個序列的總概率值了。

第二小節纔是真正的重頭戲,詳細介紹 RNN Encoder-Deocder模型,其中編碼器和解碼器都是一層RNN網絡,當然,這是改良過的,也就是GRU單元,因此整體可以看成是兩層RNN結構級聯而成,對於輸入的一個序列,首先通過編碼器處理,輸出一箇中間的向量C,然後將C作爲解碼器的輸入,然後將這個C再轉化成符號序列,這個思想還是很好理解的,這個部分結合論文中的 Figure 1 更加清楚。要注意的是,這裏的輸入序列和輸出序列的長度不一定是相等的,這與其他的一些模型是不一樣的。其實從整體來看,我們最後優化的目標就是讓 目標序列在輸入序列的條件下 取最大,然後文中還提到了,這個模型的計算過程是可微分的,所以我們可以使用梯度的方式來求解模型的參數。這一小節最後提到了如何使用 RNN Encoder-Decoder 的問題,其實不難看出這兩中用法:一種是根據已知的序列生成一個新的序列,第二個是對給定的輸入-輸出對進行評分,這個評分當然是基於模型計算的概率,關於第二點,我的理解是更像是使用這個模型對數據進行預先處理,然後將這些評分作爲其他模型的一些依據,就像是在後面實驗部分,就是使用這個模型對短語表中的信息進行了處理,然後將這些信息作爲另外的一個MST系統進行翻譯標準。

第三小節介紹了模型中使用的隱藏單元,也就是我們所熟知的 GRU 單元,關於這個單元,網絡上的介紹也有很多。這個單元是對 LSTM 的一種優化,LSTM 中使用了三個門:輸入門,遺忘門,輸出門來完成 long-term信息和short term 信息的處理,GRU 則是使用了 Reset gate 和 Update gate,這一部分在附錄中也有介紹。(雖然大家都說 GRU 是LSTM 的簡化版本,但是我咋覺得這種單元理解上比LSTM費勁呢。。。不過參數數量上來說,確實是減少了很多,如果需要計算速度快一點的話,可以使用 GRU 來替代 LSTM 單元)

3. 統計機器翻譯

整體來說,這一部分介紹了機器翻譯 (MST)的一些工作,主要是介紹了很多神經網絡在MST中的使用,這樣往往是通過最大化條件概率 P(目標序列|條件序列))的形式來翻譯一個句子,實際使用中,經常使用一些額外的特徵和權重來構建一個對數線性模型,(這個地方不是很理解)

在第一小節,介紹了可以使用 RNN Encoder-Decoder 模型對短語對進行評分,這裏提到使用這個模型對現有的短語表進行重新打分,從而將這些評分作爲優化算法的輸入。

第二小節介紹了一些基於神經網絡的MST工作,簡答來說就是拉出來“鞭屍”,不斷對之前的模型的侷限進行突破改進就能得到效果更好的模型,例如文中提到之前有的模型沒有考慮到序列之間的順序,顯然這個一個改進點,或者是使用更爲適合的網絡結構(從卷積結構改進爲循環網路結構)等。

4.實驗

聊完模型原理,接下來就是使用實驗數據來證明模型的優越性了。這篇文章中,沒有將 RNN Encoder-Decoder 作爲一種單獨的模型,而是將這個作爲一個基準模型(Baseline System)的一部分。

第一小節介紹了使用的數據和基準模型,這裏使用的數據都是全部數據,而是關注有給定任務最爲相關的數據部分,也就是一個 subset, 至於基準模型,使用的 Mose 實現的模型,這個 Mose查了一下是一個機器翻譯系統。除此之外,這一部分還詳細的列出了訓練時候使用的各項參數,例如參數是如何初始化的等等,這裏爲了進行對比,還使用了一個另一個神經網絡模型 ,也就是文中提到的 CSLM,雖說是進行對比,在後面中發現將 CSLM 與本文模型進行結合,回有更好的結果。

第二部分是定量分析,首先文中設計了四種組合方式,也就是 僅僅使用基準模型 使用基準模型+RNN 然後再繼續添加 CSLM 等等,這又是一般規律了,最後一種使用了最多的方法的模型取得了最好的效果。這一部分還提到了關於未知詞的問題,文章前面提到了,在使用的時候,針對具體的數據集,選擇了 15000個單詞作爲詞彙表,這覆蓋整個數據集的 93% ,而不是使用所有的單詞,其實這也是常用的方式了,因爲一些詞語的出現頻率極低,計算他們意義不大,在詞彙表中往往把這些單詞設置爲 [UNK] ,在實驗部分,又考慮了使用未知詞的數量作爲模型的另一個特徵的,但是這沒有起到更好的效果。

第三部分是定性分析,這一部分目的在於找到模型的效果提升來源,也就是找到是什麼原因使得 RNN Encoder-Decoder 的效果得以提升。這裏提到了一個原因就是之前的統計模型往往是隻考慮到了頻率的方式,這樣,對於頻率較高的短語就會有更好的效果相比於頻率低的數據,但是 RNN Encoder-Decoder 可以同時兼顧 語義規律,這就是可以做的更好的原因。這裏有一些數據,在論文中的表格中也列出了一些數據信息,可以發現,莫i選哪個回偏好較短的輸出,另外,通過實驗,還發現,即使是不使用現有的短語表而僅僅使用 RNN Encoder-Decoder,也能取得很好的效果,未來工作的一個方向就是考慮是否可以使用 RNN Encoder-Deocder 的結果直接取代部分或者全部的短語表。

第四部分則是在實驗過程中發現的 RNN Encoder-Deocder 的另一個用處了,也就是用來獲取短語的表示,這就像是訓練詞向量一樣。得到一個短語的 embedding。文中表示,這個模型可以同時獲取短語的語義結構和句法結構信息。

5.結論

這裏對全文的工作做了一個總結,主要來說,就是建立了一個 RNN Ecoder-Deocder 模型,這個模型主要有兩種使用用途,第一是建立序列到序列映射關係(Sequence to Sequence),第二點可以用來對短語對進行評分。此外,在這個過程中,又提出了一種新的RNN單元-- GRU, 在實驗中,發現模型可以很好的捕捉短語的語義規則。最後,作者表示,RNN Encoder-Decoder 並不僅僅侷限於文中的這些應用,它還可以有更多的應用,例如語音轉錄等等。

參考資料

這是在理解這個模型過程中參考的一些資料:

Sequence to Seque https://zhuanlan.zhihu.com/p/36030490

使用機器學習翻譯語言:神經網絡是Seq2Seq爲何效果非凡 https://www.jiqizhixin.com/articles/2016-08-25-3

對於這篇文章,還有很多不太清楚的地方,繼續學習~

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