模型名稱:Collocate Neural Module(CNM)
與VQA不同的挑戰:只能看見部分的已生成句子
模型設計
- 1個功能詞模塊和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模塊
- 目的:轉換CNN特徵到特徵集VO,包含物體的類別。
- 輸入:Ro,維度N*dr,這是從ResNet-101 Faster R-CNN提取出的N個ROI特徵。(ROI,region of interest,感興趣區域)。這個ResNet是使用VG數據集的object annotations進行目標檢測的預訓練而成。
- 表示:
其中,VO是N*dv的輸出特徵集。
attribute模塊
- 目的:轉換CNN特徵到特徵集VA,包含一些形容詞。
- 輸入:N*dr的特徵集,使用ResNet-101 Faster R-CNN提取。這個網絡是使用VG數據集的attribute annotation進行attribute分類預訓練好的。
- 表示:
其中,VA是N*dv的輸出特徵集。
relation模塊
- 目的:轉換CNN特徵到特徵集VR,表達兩個object之間的一些交互作用interaction。例如,ride,on,two。
- 特點:基於multi-head self-attention mechanism,能夠自動識別輸入特徵的interaction
- 輸入:RO(這種特徵在廣泛的應用中作爲輸入,可以實現優秀的關係檢測)
- 表示:
其中,
MultiHead表示multi-head self-attention mechanism
MLP表示兩層全連接且使用了ReLU作爲激活層的前項神經網絡 feed-forward network
VR是N*dv維度的輸出特徵集
特別地,multi-head self-attention的實現如下:
- 首先使用按比例縮小的點積scaled dot-product來計算k self-attention head矩陣
其中,都是dr*dk維度的可訓練矩陣,dk=dr/k,dk是每一個head向量的維度,共有k個head矩陣。
- 接着,將這k個head矩陣連接起來併線性投影到最終的特徵集M中。
其中,WC是dr*dr的可訓練矩陣,M是N*dr的特徵集。
function模塊
- 目的:產生單個特徵集vF,以生成功能詞,例如a或and。
- 輸入:dc維度的向量c,由RNN提供,在圖中是虛線。以此作爲輸入的原因:它包含了在部分可見的已生成標題中的豐富的語言語境知識,這些知識非常適合生成連詞和前置詞這樣的功能詞,例如a或者and,它們只需要少量的視覺信息。
- 表示:
其中,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。
限制和未來
- 仍然存在錯誤的預測而導致更多的錯誤,可考慮用強化學習解決。
- 不充足的嘗試推斷,例如無法判斷鄉下,生鏽,擁擠等常識概念。可以考慮引入一個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.