基於RNN的Attend機制

文章來源: http://blog.csdn.net/shenxiaolu1984/article/details/51493673


Xu, Kelvin, et al. “Show, attend and tell: Neural image caption generation with visual attention.” arXiv preprint arXiv:1502.03044 (2015).

聚焦機制(Attention Mechanism)是當下深度學習前沿熱點之一,能夠逐個關注輸入的不同部分,給出一系列理解。這篇論文是聚焦機制代表作,完成了圖像理解中頗具難度的“看圖說話”任務。

作者提供了基於Theano的源碼(戳這裏),另外有熱心羣衆在Tensorflow上給出了實現(戳這裏)

本文對照Tensorflow版本源碼,詳解論文算法。

數據結構

從輸入到輸出經歷編碼和解碼兩個部分。

類比:在機器翻譯中,編碼部分把源語言變成基本語義特徵,解碼部分把基本語義特徵變成目標語言。

輸入:圖像I 
特徵(annotation):{a1...ai...aL} 
上下文(context):{z1...zt...zC} 
輸出(caption):{y1...yt...yC}

這裏寫圖片描述

I是輸入的彩色圖像。 
有順序的yt組成一句“說明”(caption)。句子長度C不定。每個單詞yt是一個K維概率,K是詞典的大小。

ai是一個D維特徵,共有L個,描述圖像的不同區域。 
zt也是一個D維特徵,共有C個,表示每個單詞對應的上下文。

釋義ai是一次生成的,但單詞zt是逐個生成的,所以使用下標t來強調每一次估計。

網絡結構

編碼(Ia)

輸入圖像I歸一化到224×224。特徵a直接使用現成的VGG網絡1中conv5_3層的14×14×512維特徵。區域數量L=14×14=196,維度D=512。 
爲了能夠更好地描述局部內容,所以使用了較低層級的特徵。

編碼只進行一次,解碼是逐個單詞進行的,所有以下網絡變量均帶有步驟下標t。

上下文生成(az)

當前步驟的上下文zt是原有釋義a的加權和,權重爲αt2。和ai類似,zt也是一個D維向量。:

zt=αTta

αt維度爲L=196,記錄釋義a每個像素位置獲得的關注。

權重αt可以由前一步系統隱變量ht經過若干全連接層獲得。編碼et用於存儲前一步的信息。灰色表示模塊中有需要優化的參數。 
這裏寫圖片描述

“看哪兒”不單和實際圖像有關,還受之前看到東西的影響。比如et1中蘊含看到了騎手,接下來應該往下看找馬。

第一步權重完全由圖像特徵a決定: 
這裏寫圖片描述

這一部分在全圖特徵上施加了權重,也稱爲Attention網絡。系統的隱變量是一個m=256維特徵,在下一步獲得。

隱變量生成(zh)

這部分中採用當下流行的LSTM結構3模擬步驟之間的記憶關係。除了前文提到的內部隱狀態ht,還包含輸入it,遺忘ft,存儲ct,輸出ot,候選gt共6個狀態。他們都是m維變量。

輸入i、輸出o和遺忘f是三個“門變量”,用來控制其他狀態的強度,都可以通過上一步驟的隱狀態h,以及當前上下文z決定4: 
候選g描述可能進入存儲的信息,生成方式相同:

這裏寫圖片描述

存儲c是LSTM的核心,由前一詞的存儲和當前候選g加權得到,遺忘門f控制前一詞存儲,輸入門i控制本次候選: 

ct=ftct1+itgt

隱狀態h由存儲經過變化得到,強度由輸出門o控制: 

ht=ottanh(ct)

整個LSTM構造如下,前一步驟中的h,c輸入到本步驟中。 
這裏寫圖片描述

句子生成(hy)

當前隱變量ht通過全連網絡生成當前單詞yt。 
這裏寫圖片描述

回顧

到此模型搭建完畢,來總結一下: 
這裏寫圖片描述

  • 圖像經過卷積網絡生成圖像特徵;
  • 根據系統前次狀態,決定現在該看哪兒;
  • 用關注點對特徵加權,獲得當前上下文;
  • 借鑑前次系統狀態,由上下文計算系統隱變量;
  • 有隱變量直接推導出當前單詞。

訓練

數據

本文使用了三種數據庫Flickr8KFlickr30KMS COCO。每個樣本包含一張圖片,以及幾個標定好的句子。使用的詞典大小K=10000

優化

爲了提高效率,每個mini-batch由“擁有相同長度句子”的樣本組成,mini-batch尺寸爲64。

在最後的誤差模塊中,比較每一步驟輸出的單詞和標定句子的Cross Entropy,使用RM-SProp方法更新模型參數。

除此之外,使用機器翻譯中常見的BLEU準則,監測validation集上的得分,作爲early stopping的一句。

在最大的MS COCO數據庫上,使用NVIDIA Titan Black訓練時間爲3天。

結果

與其他算法相比,BLEU以及METEOR評分均有提高。 
這裏寫圖片描述 
尤其可貴的是,本論文只是用了單獨一個模型,且在沒有檢測模塊的前提下,給出了針對每個單詞的注意力區域(由α上採樣高斯獲得)。


  1. K. Simonyan and A. Zisserman. Very Deep Convolutional Networks for Large-Scale Image Recognition. arXiv:1409.1556 [cs], Sept. 2014. arXiv: 1409.1556. 3 
  2. 這裏和源碼一樣,只介紹了論文中的soft attention方法。hard attention方法推導較爲繁瑣,可以參看前文DRAM算法 
  3. 適合入門的LSTM簡介:http://www.open-open.com/lib/view/open1440843534638.html 
  4. 論文中,前一步輸出yt1也參與了本步驟運算。本文以Tensorflow源碼爲準。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章