1. 程式人生 > >深度學習基礎--注意力機制(attention)

深度學習基礎--注意力機制(attention)

注意力機制(attention)

在機器翻譯中的應用

  在Deep learning火起來後,最常見的建模方式是用Recurrent Neural Networks (RNN) 將上下文"“編碼”",然後再"“解碼”"成目標文字。以機器翻譯為例。   Google最近的論文中,用一個 RNN encoder讀入context, 得到一個context vector(RNN的最後一個hidden state);然後另一個RNN decoder以這個hidden state為起始state,依次生成target的每一個單詞。But,這種做法的缺點是,無論之前的context有多長,包含多少資訊量,最終都要被壓縮成一個幾百維的vector。這意味著context越大,最終的state vector會丟失越多的資訊。   輸入sentence長度增加後,最終decoder翻譯的結果會顯著變差。事實上,因為context在輸入時已知,一個模型完全可以在decode的過程中利用context的全部資訊,而不僅僅是最後一個state。Attention based model的核心思想就是如此。

具體做法

  首先,在生成target side的states時 (),所有context vectors ()都會被當做輸入。   其次,並不是所有context都對下一個狀態的生成產生影響。例如,當翻譯英文文章的時候,我們要關注的是“當前翻譯的那個部分”,而不是整篇文章。“Attention”的意思就是選擇恰當的context並用它生成下一個狀態。   在大部分的論文中,Attention是一個權重vector(通常是softmax的輸出),其維度等於context的長度。越大的權重代表對應位置的context越重要。不同論文對attention權重的計算方式不同,但其核心拋不開上述兩點。

  注意力機制的實現流程:   1)將 sentence embeeding 連線到到每個 location 的 image feature,   2)然後通過一個 MLP 獲得每個 location 的分值,   3)然後再通過一個 softmax 獲得 attention map,   4)然後以後的 visual feature 就是每一個 location 的 feature 的加權平均。"

應用

  用於NLP,LSTM,captioning 任務等。