Learning to Collocate Neural Modules for Image Captioning筆記

模型名稱:Collocate Neural Module(CNM)

與VQA不同的挑戰:只能看見部分的已生成句子

 

模型設計

  1. 1個功能詞模塊和3個視覺內容詞模塊(名詞、形容詞、動詞)
  2. 軟模型混合+多步模塊執行(使得部分可見的視覺推斷更爲魯棒)
  3. 設計了一個linguistic loss,更好地貼合詞性搭配(比如形容詞在名詞前面)

效果:MSCOCO的karpathy劃分上,CIDER-D達到127.9,c40達到126.0;並且CNM針對少量訓練樣本的表現比強基線(對照樣本)更好。

 

模型介紹

虛線表示這些子網絡都需要部分可見的生成句子的語境知識。

概要

一個CNN和四個神經模塊去爲decoder做準備。

decoder中有一個模塊controller去軟混合這些特徵爲一個單一的特徵,再跟一個RNN。

從encoder到softmax有一個直接的傳輸通道。

神經模塊

正交知識orthogonal knowledge 例如 object模塊關注的物體類別和attribute模塊關注的視覺屬性就是彼此正交的。

四個模塊正是用來學習四個彼此正交的知識領域。

並可以在單詞級別上擺脫不同數據庫的bias特性,因爲是從四個模塊上學習,而不僅僅是從文本信息上學習。因此,可以擺脫文本數據庫裏貢獻率較高的單詞組的影響,從而降低過擬合。

object模塊

  1. 目的:轉換CNN特徵到特徵集VO,包含物體的類別。
  2. 輸入:Ro,維度N*dr,這是從ResNet-101 Faster R-CNN提取出的N個ROI特徵。(ROI,region of interest,感興趣區域)。這個ResNet是使用VG數據集的object annotations進行目標檢測的預訓練而成。
  3. 表示:

其中,VO是N*dv的輸出特徵集。

attribute模塊

  1. 目的:轉換CNN特徵到特徵集VA,包含一些形容詞。
  2. 輸入:N*dr的特徵集,使用ResNet-101 Faster R-CNN提取。這個網絡是使用VG數據集的attribute annotation進行attribute分類預訓練好的。
  3. 表示:

其中,VA是N*dv的輸出特徵集。

relation模塊

  1. 目的:轉換CNN特徵到特徵集VR,表達兩個object之間的一些交互作用interaction。例如,ride,on,two。
  2. 特點:基於multi-head self-attention mechanism,能夠自動識別輸入特徵的interaction
  3. 輸入:RO(這種特徵在廣泛的應用中作爲輸入,可以實現優秀的關係檢測)
  4. 表示:

其中,

MultiHead表示multi-head self-attention mechanism

MLP表示兩層全連接且使用了ReLU作爲激活層的前項神經網絡 feed-forward network

VR是N*dv維度的輸出特徵集

特別地,multi-head self-attention的實現如下:

  1. 首先使用按比例縮小的點積scaled dot-product來計算k self-attention head矩陣

其中,都是dr*dk維度的可訓練矩陣,dk=dr/k,dk是每一個head向量的維度,共有k個head矩陣。

  1. 接着,將這k個head矩陣連接起來併線性投影到最終的特徵集M中。

其中,WC是dr*dr的可訓練矩陣,M是N*dr的特徵集。

function模塊

  1. 目的:產生單個特徵集vF,以生成功能詞,例如a或and。
  2. 輸入:dc維度的向量c,由RNN提供,在圖中是虛線。以此作爲輸入的原因:它包含了在部分可見的已生成標題中的豐富的語言語境知識,這些知識非常適合生成連詞和前置詞這樣的功能詞,例如a或者and,它們只需要少量的視覺信息。
  3. 表示:

其中,vF是dv維度的輸出特徵。

 

Controller

controller會通過一個LSTM生成四個soft權重,來將四個模塊的特徵混合成一個單一的混合特徵v。

controller中包含三個attention網絡和一個LSTM來生成soft權重。controller的輸出用於接下來的RNN進行推斷。

soft 混合

假設:組合幾個簡單模塊的就可以大致完成複雜的任務。

幾個用於將三個視覺模塊的輸出,轉換爲信息更爲豐富的特徵集合。

vO,vA,vR都是dv維度的VO,VA,VR的轉換特徵。h是dc維度的由LSTM生成的查詢向量。三個attention網絡結構相同,但不共享參數。

在vO,vA,vR都生成且vF也從function模塊中獲得後,controller會分別爲其生成四個soft權重,過程如下:

輸入x是三個視覺嵌入向量和一個文本內容向量的連接。(因爲它們四個是獨立的)

w是由wO,wA,wR,wF組成的4維soft attention向量。

輸出向量v會被用於RNN中進行之後語言編碼。

多步推斷

caption生成過程中的句子是部分可見的,爲了使得這個過程更爲魯棒,我們重複soft混合和語言編碼M次。通過觀察到更多的視覺線索,生成的caption纔可以和圖片更爲相關。

此外,剩餘的連接直接傳輸信息到最終的層裏,當知識的推斷已經足夠的時候,就可以起到殘差層的作用。

linguistic損失

對單詞進行詞性分爲4類,用onehot編碼:

object-名詞,attribute-形容詞,relation-動詞、介詞、數量詞,function-連詞、前置詞。

將這樣的onehot編碼w*作爲真實值,計算出的soft-weight作爲預測值w,計算交叉熵

訓練和推斷

神經模塊+模塊controller+CNN(resnet-101)+LSTM(top-down),實現了端到端訓練

在時間步t,第一個LSTM輸出查詢向量h;在上一個時間步t-1,第二個LSTM輸出語境向量c。

給出一個真實的caption和它分離出的詞性標記w*,通過最小化linguistic誤差來端到端訓練CNM。假設單詞s的CNM預測出的概率爲P(S),我們可以用交叉熵損失函數來定義language損失:

或者使用強化學習的獎勵函數:

r是採樣句子和真實句子的句子級矩陣。

總的損失函數結合linguistic和language

使用集束搜索,size爲5

 

參數設定

dr 2048

dv 1000

dc 1000

head vector k 8

adam 學習率初始化爲5e-4,每5輪衰減爲原來的0.8

傳統loss 35輪,rl loss100輪

表現和lambda不敏感,傳統1,rl 0.5。

評價指標:CIDEr-D,BLEU,METEOR,ROUGE,SPICE。

 

限制和未來

  1. 仍然存在錯誤的預測而導致更多的錯誤,可考慮用強化學習解決。
  2. 不充足的嘗試推斷,例如無法判斷鄉下,生鏽,擁擠等常識概念。可以考慮引入一個reason模塊,最簡單的就是使用CNM+SGAE(爲CNM配備了一個保存SGAE中語言bias的字典)的方式,這樣做比單純的CNM更好。

SGAE X. Yang, K. Tang, H. Zhang, and J. Cai. Auto-encoding scene graphs for image captioning. arXiv preprint arXiv:1812.02378, 2018.

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