《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》

論文地址與項目源碼:

arxiv.org/abs/1502.0304

github.com/DeepRNN/imag

一、主要概念、任務與背景

「soft」deterministic attention mechanism 確定性注意力機制:確定的全局注意力

「hard」stochastic attention mechanism 隨機注意力機制:不確定取attention的區域位置

本文主要提出了與soft attention相對應的hard attention

  • hard: Attention每次移動到一個固定大小的區域
  • soft: Attention每次是所有區域的一個加權和

soft attention是可微的,即attention項和作為結果的loss function都是輸入的可微函數,這樣梯度信息保留下來,就可以用BP

主要思想:

二、本文主要工作、模型

主要區別是Φ function的不同

Stochastic 「Hard」 Attention:

首先定義一個地點變數St,就是在生成第t個詞的時候模型的注意力的位置

St,i是one-hot變數,置第i個位置為1(out of L)

Encoder:VGG

  • VGG第四層的輸出為14×14×512
  • Flatten之後為196×512,L=196 D=512,這L個向量被稱為annotation vectors

  • 一個map有196個位置,每個位置的特徵用一個512維的vector表示,然後給這196個vector加權相加,得到這個map在當前time step的表示,即Zt

獲得Annotation vector兩種方法:

  1. 14×14×512 ——>1×4096:繼續卷積池化,最後全連接,得到1個dense的輸出向量,也就是此時的annotation vector是一個向量,這種情況下decoder不能選擇性的關注一些區域(14×14個區域)
  2. 14×14×512 ——>1×512:soft attention或者hard attention 如果是soft attention,本文沒有直接通過全連接得到dense的向量來表示這個圖片,為了能夠讓每個time step的輸入有不同的關注點(每個時刻都分別進行attention),於是對這196個分別代表了196個區域的的向量取加權相加得到了一個512維的向量來表示這張圖片,也就是說可以分析出當前時刻的輸入vector更「像」哪些區域的vector(相當於從196個區域vector中選一個子集(加權)作為image的表示)。這時的annotation vector是一個矩陣,可以與decoder每個時刻的hidden state動態交互從而產生動態的attention。

Decoder:LSTM

Decoder的cell state與hidden state的初始化trick:

將196個annotation vectors求均值,然後分別過兩個獨立的MLP多層感知機

  1. Eyt-1為上一個時刻的輸出的文字對應的詞向量
  2. ht-1為上一個時刻的隱層輸出
  3. Zt為當前時刻t的map的attention後的動態表示(512維),即context vector,因為每生成一個字的關注點是不一樣的,所以attention的權重是和decode的上一個時態的hidden state有關的
  4. m為詞向量維度,n為LSTM隱層維度

Attention的權重如何得到:第i個區域,第t個step

用fatt這個函數處理context vector(L×D)與decoder的上一個時刻的hidden state,得到當前時刻的attention權重分布即αti

對於fatt,是一種對齊模型,常見的對齊計算方式有:

Score(ht,hs) = aij表示源端與目標單單詞對齊程度。

常見的對齊關係計算方式有,點乘(Dot product),權值網路映射(General)和concat映射(multilayer perceptron)幾種方式。

而本文使用了第三種multilayer perceptron。

Context vector如何得到(理解為當前step下圖片區域的representation):

hard/soft attention的區別就是怎麼利用這一組權重對annotation vectors進行處理,就是Φ

Soft attention:

直接使用attention的權重對196個vector加權相加即可:整個模型可微,可以利用BP進行end-to-end訓練

Hard attention:

核心思想是隨機採樣在這些區域中進行選擇,優化marginal likelihood

參考 cnblogs.com/Determined2

Doubly Stochastic Attention

目標函數即在給定輸入x時,對應y的最大概率,而懲罰項表示關注錯誤的區域會得到較大的懲罰,對loss會有較大的貢獻,而對於關注正確的區域,則減小懲罰力度。

Decoder每個時刻輸出word:

給定 previous word, hidden state, context vector

其實就是傳統的softmax多了一個L0

小總結:

三、實驗

四、總結

1、使用CNN中的low-level的feature map來作為decoder的輸入,通過在每個時刻與上一時刻的hidden state的交互得到當前的attention分布,從而得到當前的context vector,然後與上一時刻的輸出(word)、上一時刻的hidden state一起,得到當前時刻的輸出(改進版softmax)

2、? 函數代表的兩種attention機制


推薦閱讀:

《Dialogue Act Sequence Labeling using Hierarchical encoder with CRF》閱讀筆記
TextGAN 代碼閱讀筆記
辭彙星空:如何構建一個炫酷的 Word2Vec 可視化
NLP入門:做一個簡單的"人工智障"

TAG:自然語言處理 |