寫在前面
Attention 機制在許多領域中都有應用,這些模型都被稱爲 Attention Based Model,而這篇論文則是將注意力機制應用在神經網絡機器翻譯中,論文的思路很清楚,首先介紹了傳統NMT系統的缺陷,然後針對這一缺陷提出改進,最後實驗證明,並進行定量以及定性分析。
首先我們要了解經典的Seq2Seq模型是如何進行翻譯的:整體模型使用了一個 Encoder 和一個 Decoder 首先輸入的序列經過 Encoder 的處理,壓縮成爲一個固定長度的向量(Fixed-length Vector),然後在 Decode 階段,將這個向量中的信息還原成一個序列,從而完成翻譯任務。
在這裏我們需要尤其注意這個定長向量,可以想象,對於不同長度的句子,在模型中卻要將提取的全部信息放在同樣長度的向量中,這本身就是不太合理的,一個長度50的句子和一個長度5的句子信息量怎麼會在同樣長度的向量中合適地表達呢?這也是論文中提到的,在測試的時候,對於長度大於30的句子,RNN Encoder-Decoder 機制的模型就有些力不從心了,因此引入了注意力機制,在 Decode 過程中,仍然可以直接參考原始句子序列中相關的部分。
在學習過程中,看到了這樣的說法,使用 Attention 機制進行翻譯的過程,就像是人進行翻譯的過程,我們在翻譯一個長句子的時候,假設翻譯到某一個時刻,忘了要翻譯的內容,我們會回過頭去,找到原始句子的那一部分,然後再決定如何讓翻譯,Attention 機制解釋了這一過程,實驗證明,這一方式是非常有效的。
之前參考了一些代碼,學習了一下 Seq2Seq + Attention 的代碼實現,只能說,即使是論文的模型構建方式懂了,真正落地到代碼也還有很長的一段路要走,果然還是要再努力一點啊。
1. Abstract & Introduction & Background
這一部分簡要介紹了NMT一些基礎共性,論文中提到,目前(當時)的 NMT 模型都屬於 Encoder-Decoders 家族,模型的思路本質上就是最大化條件概率:,而使用固定長度向量來存儲信息的做法,就像之前所說的,固定長度的限制無法儲存足夠多的信息,這就成爲了一個瓶頸(Bottleneck)。在生成輸出序列的時候,每次模型都只生成一個單詞,在生成的時候使用 (soft-)search 的方法搜索輸入序列中與要翻譯內容最相關的部分,其實也就是 Attention 的思想了。
文中對 Neural Machine Translation 進行了介紹,首先是介紹了概率角度的機器翻譯任務(就是最大化那個條件概率),然後對 RNN Encoder-Decoders 模型進行了介紹,並提到,通過使用一些更優秀的循環單元(LSTM),是的這些模型相較之前都有了很大的提升,這裏還簡單提了 RNN Encoder-Decder 的公式之類的,推薦更深的瞭解直接看之前的論文,例如 《Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation》
Learning to Align and Translate
第三部分切入正題,這裏介紹的順序是先 Decoder 然後是 Encoder (這算是自頂向下嗎?)。首先來看這張圖(論文中 Figure 1):
所有的信息都在這張圖上了。
Decoder
首先來看 Decoder 部分,這裏使用的就是一個簡單的 RNN 單元, 只是要注意隱狀態的改變:
可以看到,某個時間點上輸入的隱狀態由三個因素共同決定:
- 第一個是上一步的隱狀態輸出 () 。
- 第二個是上一步的直接輸出()。
- 第三個是來自 Encoder 部分所有輸出的一個處理結果 ()。
這一步還是很好理解的,很顯然, 問題就在於如何表示來自於 Encoder 部分的輸出信息,因爲之前提到過,對於輸出環節的每一個詞語,我們都要找到輸入序列的部分信息,然後再決定輸出什麼。也就是如何表示向量C了。
這裏可以看到對於某一步 ,對應的 實際上是一個加權和的形式,與當前步相關大的部分權值大,不太相關的則權值小,這樣的過程就是 Attention 的體現,在文中也稱 (soft-)search。另一個問題的這個 如何計算,在論文中公式(6)可以看出,每一個權值都是對當前步的隱狀態(Decoder階段)和所有步的隱狀態(Encoder階段)經過一個變換的結果這個變換有必要提一下,這裏的變換,也就是公式(6)中的 有很多實現形式,例如計算餘弦距離, 或者是通過一個簡單全連接神經網絡的形式,這時候也就是 了,等等。然後對這一批權值,做一個softmax處理,(處理成一個概率分佈,相當於一個標準化,不然不同的權值第一步(1,2,3),第二步(100, 200, 300)顯得太不平衡了)。
(PS:關於這裏 Attention 的權值計算方式,在實現時候多有不同,我見的代碼有不使用decoder階段隱狀態而是用decoder階段輸出與encoder所有的輸出計算權值的,所以,我覺得理解這個意思就好了,一定程度上不必把所有的細節都完全與論文一樣,當然,完全論文復現還是儘量這樣的,我的意思只是學習的過程中。。)
另外,更具體的過程可以參考附錄部分。
Encoder
Encoder階段就非常好理解了,這裏沒有直接使用RNN,而是使用了一個 BiRNN 網絡實現,雙向循環網絡可以更好地捕捉文本上下文信息嘛。這樣的話,每一步上Encoder都會有兩個輸出,這裏的處理很簡單,直接把兩個輸出結果 concatenate,也就是論文3.2節中雙向箭頭那部分向量,把這個拼接後的向量作爲我們上面提到的計算 Attention 權重的 部分。
Experiment Settings
這一部分介紹實驗中的一些設置,主要包括兩部分,第一部分介紹使用的數據集,第二部分展示了實驗中模型的一些參數。
第一部分對於數據集的處理,文中表示對數據集並沒有進行一些特殊的操作,首先是數據集選擇,去掉了一些不合適的數據,第二步進行分詞,然後選擇其中最常見的30000詞構建詞典,這裏強調了沒有進行其他特殊操作,例如統一對數據小寫處理,以及詞幹化等。
第二部分介紹了實驗中的一些參數以及對比模型等。既然是對比試驗,文中設計了兩類模型,每一種模型又按照長度分爲兩種(長度不超過30、長度不超過50),分別是:
- RNN encdec-30
- RNN search-30
- RNN encdec-50
- RNN search-50
具體參數可以看論文這一部分,更具體的參數記錄在附錄中,這一部分最後也提到了,對於每一個模型,訓練了大概5天。。。果然學習最後還是要靠硬件嗎。。
Results
感覺這一部分纔是論文的核心,對於實驗數據的分析,這裏分了兩部分,第一部分是定量分析(quantitative analysis),第二部分是定性分析(qualitative analysis),這兩種分析方法經常在論文中出現。
首先是定量分析,這一部分主要是擺數據,驗證論文新模型的效果,第一個表展示了不同模型的 BLEU 分數,對比的基準模型是非常常見的傳統模型 Moses,表中分了兩類,第一類是隻包含詞典詞語的結果,第二類是包含 unknown 詞的結果,結果來看,在更普遍情況下(含 UNK),論文提出的 RNN search-50有最好的結果。第二個實驗比較了句子長度增長對模型性能的影響,就像之前分析的結果,確實在最開始,所有模型的結果是差不多的,但是當句子長度增大到20~30以及之後時,採用傳統 Encoder-Decoder 模式的模型效果迅速下降,當然 RNNsearch-50 保持了分數穩定。
第二部分進行的是定性分析,這裏一開始提到了一個概念:對齊(Alignment),又提到了論文中提出的方法是對(soft-)alignment 的一種很直觀的解釋,關於這個對齊,我的理解就是輸出序列中單詞與輸入序列中單詞的對應關係,這裏的 軟對齊 ,我的理解是有兩層意思吧,第一層是指輸出序列中一個單詞可能會對應輸入序列中的多個單詞或者相反,第二層意思是兩個序列次序不同的問題,這一點在論文的這一部分有介紹。此外,論文中這一部分給出了兩個序列的權重關係圖,可以說是非常直接明瞭了,所以有種說法是 Attention 機制實際上是對翻譯過程的形象展示(翻譯任務),因爲之前的模型方法我們並不清楚模型內部是如何進行轉化的,但是 Attention 解釋了這個。
在這一部分還直接使用長句子的例子展示了不同的模型的處理結果(具體句子可以看附錄),也算是針對之前的介紹的具體解釋吧。
Related Work & Conclusion
這一部分,論文中提到,之前使用神經網絡的方式進行機器翻譯的過程,往往都是作爲現有的統計翻譯模型的一個組件,例如提供額外特徵,或者對候選翻譯重新打分等等,但是,作者們提到,完全可以只依賴神經網絡方式建立完整的翻譯系統。
結論部分就是對之前的各部分工作做了一個總結。