對Neural Machine Translation by Jointly Learning to Align and Translate論文的詳解


讀論文
Neural Machine Translation by Jointly Learning to Align and Translate

這個論文是在NLP中第一個使用attention機制的論文。他們把attention機制用到了神經網絡機器翻譯(NMT)上。NMT其實就是一個典型的sequence to sequence模型,也就是一個encoder to decoder模型,傳統的NMT使用兩個RNN,一個RNN對源語言進行編碼,將源語言編碼到一個固定維度的中間向量,然后在使用一個RNN進行解碼翻譯到目標語言。

直接來看這個模型

\(c_{i} = \sum_{j=1}^{T_{x}}\alpha_{i,j}h_{j}\)

\(\alpha_{i,j} = \frac{exp(e_{i,j})}{\sum_{k=1}^{T_{x}}exp(e_{i,k})}\)

\(e_{ij} = a(s_{i-1},h_{j})\)

我們使用一個前饋神經網絡來對對齊網絡模型\(a\)進行參數化。(在這里有一個知識點需要取了解什么是前饋神經網絡)。對於這個前饋神經網絡模型,是整體模型的一部分,所以參數會隨着整體模型的其他部分異同進行訓練更新,而不是單獨把這個模型拿出來訓練。

值得注意的是這個對齊模型並不是一個隱變量(什么是隱變量在這里有一個解釋。這個對齊模型是一個軟對齊模型,允許損失函數的梯度進行反向傳播並更新(這里我並沒有看懂,為啥軟對齊模型可以達到這個效果)。換句話講,這個對齊模型可以和整個翻譯模型一起進行訓練更新。

我們把計算隱層狀態權重和的過程可以理解為一個求期望隱層狀態表達的過程。
我們可以把\(\alpha_{i,j}或者是說與它相關\)當做是一個概率。這個概率的含義就是目標單詞\(y_{i}\)和源單詞\(x_{j}\)對齊的概率。或者說,目標單詞\(y_{i}\)是從源單詞\(x_{j}\)翻譯過來的概率帶下。然后對於目標單詞\(y_{i}\)來說的,它的環境向量\(c_{i}\)是一個期望中的表達,這個表達是基於annotations(這里指的是所有的隱層狀態)和相對應的\(\alpha_{ij}\)的結合計算。

\(\alpha_{i,j}\)或者\(e_{i,j}\)反應出的是\(h_{j}\)和上一層隱層狀態\(s_{i-1}\)對於下一個隱層狀態\(s_{i}\)和下一個單元輸出\(y_{i}\)

解碼器應用這個attention機制,從而決定在原始句子中的哪個部分需要花費更多的注意力。通過使用這個機制,編碼器消除了一個負擔,這個負擔就是不得不把所有的原始句子信息經過神經網絡由一個固定長度的向量表達。其實用了這個機制,長度也是固定的,只不過對於現在這個機制,這個向量會針對不同的目標單詞有着不同的環境向量。

我自己有一個思考,在整個模型訓練完成之后,我們得到的應該是一個權重矩陣C。為什么這么說呢,因為針對每個目標單詞,我們都有一行的權重(其中這一行的每一個權重值代表的是輸入句子中的每個單詞的重要程度)。

對於這個權重矩陣\(C_{i}\)是權重矩陣的一行,表示對於目標單詞\(y_{i}\)輸入句子每個單詞對應的重要程度。

對於\(\alpha_{i.j}\),它表示的是一個單詞的重要程度,是\(C_{i}\)中的一個具體單詞的重要程度。

現在我自己有一種感覺,就是說,這個權重矩陣,學習的重要程度,從現在我直觀感受來說,它是一種兩種翻譯語言的語法關系。是輸入句子一個位置對輸出句子中的一個位置的影響程度,這個並沒有體現出意思之間的對應的關系。

我們使用的是只有一層的多層感知機來計算\(a(s_{i-1},h_{j})=v_{a}^Ttanh(W_{a}s_{i-1}+U_{a}h_{j}\)

(其實這里並沒有搞清楚為啥是一個多層感知機模式。多層感知機其實是一個最簡單的神經網絡模型,如果看做是一個多層感知機,那么輸入是\(s_{i-1}\)\(h_{j}\),怎么會有兩個輸入呢?)

在原始論文中,作者說\(U_{a}h_{j}\)並沒有依賴於\(i\),那么我們可以提前將這個東西算出來減少計算消耗。(那么這一步提前算出來是怎么實現的呢?)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM