08.17 自然語言處理-第十四期-Attention Mechanism

背景

自然語言處理-第十四期-Attention Mechanism

上一期提到了Seq2Seq模型,其模型是NMT(神經網絡翻譯)和Chatbot的基礎。但是從上一期大家也可以看出來,Seq2Seq模型非常簡單、非常直接。就是一個 RNN的Encoder 和 一個RNN的Decoder。 當然其缺陷也是有的。Attention Mechanism是補足其的非常重要的一部分。

今天我們會初步涉及Attention Model。這一整篇,只是想介紹Attention Model是個啥。

Seq2Seq的缺陷

自然語言處理-第十四期-Attention Mechanism

上圖就是Seq2Seq的大概的框架,其中Encoding部分會輸出一個 隱藏狀態(Hidden State)或者可以理解成一個向量。 該向量代表了Enocder部分的濃縮。即綠色方塊傳遞到藍色方塊的信息。

而Decoder部分的作用就是將 Hidden State 擴展成我們的目標語句。

我最初看到這個框架的兩個主要 疑問是:

  1. Hidden State怎麼就能代表 輸入語句了呢?
  2. Hidden State怎麼就能擴展出一個完整的語句了呢?

關於這兩個問題,其實是我最初的思考方向錯了。Seq2Seq的encoder部分最初並不能代表輸入語句。但是經過大量的訓練樣本後,就能達到這樣的效果。 通過Autoencoder的例子更好理解一些:

下面是一個Autoencoder 的框架圖,Autoencoder 也是分為Encoder 和Decoder部分,其與眾不同的是 輸入值 與 輸出值是 同一個值。那麼如果按照一個Seq2Seq的模型來理解它的話: Autoencoder 是將一組數據 壓縮成二維, 然後再放大回原始緯度。

那麼為何二維數據,能代表原始數據的濃縮版呢? 原因很簡單,就是訓練得來的。當你壓縮完,解壓完還是你。那麼濃縮版就make sense了

自然語言處理-第十四期-Attention Mechanism

但是Seq2Seq有一個重大的缺陷,當我們遇到的是一個較長的句子時,我們也可以想象,我們要將一個encoder 傳遞過來的hidden state “轉換”為一段完整的輸出文本。其中一個主要原因是Gradient Explosion 或者 Gradient Diminision。


解釋下,什麼是Hidden State。我又要用到RNN的一個GIF圖了。 大家能看到X0 輸入最終會有一個輸出值,該輸出值會進入下一個神經元中。

而每列的輸出值,就是該部分的Hidden State。

自然語言處理-第十四期-Attention Mechanism


Attention Model初步

Attention Model應該是我自學以來覺得蠻難的一個東西。一個主要原因是我沒有找到一個對新手比較友好的資料。最終還是Stanford公開課給力。

還是老規矩,叫什麼不重要。我們需要從問題出發,瞭解該方法解決問題的思路及其解決問題的本質。

那麼,從上一部分,我們知道Seq2Seq 最大的問題是,當面對較長的語句,效果就會差很多。

而導致其效果不好的原因是:Encoder部分只傳遞了最終的Hidden State進入Decoder。說白了就是光用 最後一個hidden state不好使。

自然語言處理-第十四期-Attention Mechanism

那麼基於該問題,Attention Model的方法也很直接,就是控制使用的hidden state;或者說將注意力集中到對的Hidden State上。

如上圖,當我需要輸出紅色第一個字時,我需要更多得把注意力放在“I” 上面。

換句話說,Attention Model將此問題轉化為一個 “連連看” 的問題

。如下圖,就是將輸入文本(橫軸)與輸出文本(縱軸)的單詞進行對齊。當你翻譯“I am a student” ------> "我是一個學生" 時, “我”的注意力應該幾種在“I” 上面。

自然語言處理-第十四期-Attention Mechanism

再換個角度,這就是一個Dynamic Memory Network(中文可能是動態記憶提取?)。 Hidden State 就是我們的memory,而我們提取的方法是動態的。當我輸出值是 “我” 的時候,我的Hidden State 提取更多的應該從“I”對應的Hidden State。

當然上面所說的連連看,並不是一一對應的關係。而是一個權重的分配。如下圖。

自然語言處理-第十四期-Attention Mechanism

Attention 的效果

Attention Model的效果就是做到動態的記憶提取。 在翻譯不同部分時,將注意力放在不同的Hidden State上。

自然比傳統Seq2Seq,所有的信息只有一個 輸入文本最終的Hidden State

總結下

Attention Model是什麼呢?

基礎的Seq2Seq Model只使用了 句子結尾的Hidden State。其最大的問題就是,當面對較長句子時,難以從單一Hidden State 推出完整的目標語句。

而Attention Model的思路是,Dynamic Memory 動態的記憶提取。 或者說,將目標語句與輸入語句做一個“對應關係”。

Attention Model的效果是什麼呢? 可以動態提取Hidden State。 如果能做到對應關係靠譜,那麼Attention Model的提升將是顯著的。

而其中最重要的是,如何計算出,我們的Attention 應該放在哪些地方。 而這個將在下一期帶來。


分享到:


相關文章: