介紹
Image Caption是電腦視覺和自然語言處理相結合的一個任務,作者提出了一種基於神經網路的方法,將用於物體識別的cnn網路和用於機器翻譯的lstm網路拼接起來,通過極大化正確描述的似然函數來訓練這個網路。發表論文時,pascal資料集上bleu-1得分最高是25分,作者的模型可以到59分,人類水平大約是69分。
該文主要是由於當時機器翻譯模型的一些突破性進展,使用rnn模型的話,單個任務驅動,使用一個編碼器產生固定長度向量表示,再使用一個解碼器產生目標句子。
於是,作者考慮能不能通過替換RNN機器翻譯模型中的編碼器為CNN網路,實現Image Caption。原因如下:編碼器目的在於抽象特徵為固定長度向量,而CNN已被證實具有描述映像特徵的功能,因此可以預先訓練圖片分類模型。
上圖便是作者的模型Neural Image Caption(NIC),使用一個cnn網路作為映像編碼器,並在物體識別任務中預訓練參數,將最後一個隱含層輸入到RNN解碼器中。
這篇論文的主要貢獻有: 提出一種端到端的神經網路,可以使用隨機梯度下降直接訓練 結合了兩種出色的神經網路,可以分別在額外資料集上預訓練 在公開資料集上得到了出色的效果 相關工作
以前Image Caption工作嚴重依賴規則,主要採用結構化模板產生自然語言;另外,還有很大一部分工作在於評價排序,即從給定的一系列描述中計算圖片和文本的關聯度,找到最接近的,這種方法不能預先產生描述,只能用於評價描述的準確性。
與該文比較相似的三篇論文: Kiros:利用前饋神經網路,通過映像和當前詞預測下一個詞 Mao:使用RNN網路,與本文最相似,但作者使用了更強大的網路,圖片直接輸入,測試效果更好 Kiros:多模型混合,聯合向量定義使用兩種獨立的方式,映像和文本 模型
目標函數:極大化目標句子的似然函數
θ∗=argmaxθ∑(I,S))logp(S|I;θ)(1) (1) θ ∗ = a r g max θ ∑ ( I , S ) ) log p ( S | I ; θ )
進一步,應用鏈式法則對對數似然函數分解,句子S由N個片語成,每一個詞對應一個時刻t,故而有:
logp(S|I)=∑t=0Nlogp(St|I,S0,...,St−1)(2) (2) log p ( S | I ) = ∑ t = 0 N log p ( S t | I , S 0 , . . . , S t − 1 )
即對於輸入映像 I I ,輸出句子 S S 的機率為每一時刻產生對應詞 St S t 機率的乘積,如果取對數機率,則分解為每一時刻詞對數機率的和。
作者發現該公式恰好可以對應到RNN網路結構中,在 t t 時刻,需要計算當前詞 St S t 的機率,則可以將曆史詞 S0 S 0 到 St−1 S t − 1 表示為一個確定長度的隱含層神經元向量 ht h t ,同時輸入映像 xt x t ,在 t+1 t + 1 時刻,隱含層向量被更新:
ht+1=f(ht,xt)(3) (3) h t + 1 = f ( h t , x t )
LSTM
上述模型中有一個未知量 f f 函數,如果選用RNN網路,則在訓練過程中,往往會遇到梯度消失或者梯度爆炸問題。而LSTM網路作為RNN的改進版,很好的規避了這一個缺點。
LSTM作為一個記憶單元,內部邏輯結構很簡單,可以用以下四個公式來描述:
it=σ(Wixxt+Wimmt−1)ft=σ(Wfxxt+Wfmmt−1)ot=σ(Woxxt+Wommt−1)ct=ft⊙ct−1+it⊙h(Wcxxt+Wcmmt−1)mt=ot⊙ct(4) (4) i t = σ ( W i x x t + W i m m t − 1 ) f t = σ ( W f x x t + W f m m t − 1 ) o t = σ ( W o x x t + W o m m t − 1 ) c t = f t ⊙ c t − 1 + i t ⊙ h ( W c x x t + W c m m t − 1 ) m t = o t ⊙ c t
其中, i i 代表輸入門, f f 代表遺忘門, o o 代表輸出門, c c 代表記憶狀態, m m 代表輸出值
訓練
這裡主要指出了需要注意的幾個點: 各個時刻的LSTM單元共用一套參數 單詞採用one-hot的表示方法 每一個句子前後都有標誌詞,表示句子的開始和結束 映像只需要輸入一次,作者實驗過映像輸入到每一時刻的lstm中,結果因雜訊很容易過擬合 採用對數損失函數: L(I,S)=−∑Nt=1logpt(St) L ( I , S ) = − ∑ t = 1 N log p t ( S t ) 輸出
兩種方法: Sampling:直接將前一個詞輸入下一個時間維 BeamSearch方法:第一個時間點,輸出top k個候選詞,這k個候選詞分別輸入第二個時間維,得到若干第一個和第二個片語合,從這選擇得分top k的,輸入第三個時間維,依次迭代
該文採用第二種BeamSearch方法 實驗
首先對原始樣本做bootstrapping採樣,即n次重複抽樣,目的在於基於有限少量樣本得到真實樣本分布。 訓練細節
論文提到高品質資料集少,標記困難,但還是會遇到過擬合問題,有以下方法: 預訓練模型:映像部分直接採用ImageNet模型;lstm部分嘗試新聞預料模型訓練,效果很差,最後採用隨機參數 dropout,ensembing models(融合模型)
訓練方法採用隨機梯度下降法,固定學習速率,無動量項。
對於實驗結果,可以查看原文,當時作者取得的效果已經非常出色。 思考 遷移學習:即在一個領域訓練完成後,可以直接或者少量修改就能應用到另外一個不相關領域中 資料大小:作者測試使用Flickr30k資料集訓練比Flickr8k效果提升5分,這裡看似是資料驅動的,且有過擬合趨勢;但使用mscoco資料(大小大於Flickr30k近5倍),分數降低10 資料標記品質:作者嘗試SBU資料集,非人類自主描述產生的句子,測試效果很差 產生多樣性:對於上述BeamSearch方法,如果每次只取最佳候選句,則結果80%都會在訓練集中,因為樣本少,產生的都是範例句;如果每次取top 15的候選句,可以得到很多全新的句子,但是仍然有很好的BLEU得分 總結
該論文由於採用了深度神經網路模型,無可例外受到資料集的限制,當資料集規模大的時候,NIC可以顯示出很好的效果。另外,作者希望未來可以實現無監督的Image Caption,輸入一堆不相關的圖片和文本,模型可以自主學習。