CVPR 2015
一、摘要
1、圖像的內容自動描述是一個AI基礎問題
2、該文采用基于深度循環(recurrent)結構的生成模型,該模型融合了近期在計算機視覺和機器翻譯的前沿研究,支持生成描述圖片的自然語句。
3、模型學習的目標:給定訓練圖像,最大化其對應的目標描述語句的似然概率(maximize the likelihood of the target description sentence given the training image)
4、衡量的指標:準確率(accuracy)、語句平順度(fluency of the language)
5、結果:
1)BLEU-1 score指標
2)Pascal數據集
state-of-art:25分,該文59分,對比人類69分左右
3)Flicker30k:56分提高到66分
4)SBU 19分提高到28分
5)最新的COCO數據集:BLEU-4 of 27.7分,current state-of-art
注:BLEU-http://www.aclweb.org/anthology/P02-1040.pdf
二、介紹
自動描述圖像內容的應用:幫助視力有缺陷的人更好的理解網絡上的圖片。
這個任務比計算機視覺領域通常關注的圖像分類、物體識別任務更難。任務的目的:object+object relation + object attributes + activity involved in 同時expressed in natural language,這就要求除了視覺理解外,還需要一個語言模型
已有的一些方法,主要是將上述子問題的解決方案融合在一起,來實現圖片到描述的生成[6,16]。相反,本文希望提出一個單一的模型,輸入是圖片I,訓練的目標是最大化似然概率P(S|I),S是目標word序列S={S1,S2,…},Si來源固定詞典
本文的主要思路來自于近期在機器翻譯上的進展,即通過最大化P(T|S)序列的似然概率,實現源語言S到目標語言T的序列翻譯。近些年機器翻譯可以通過采用RNN(Recurrent Neural Network)[3,2,30]來簡單的達到state-of-art水平。主要結構是Encoder(RNN)+Decoder(RNN)實現。
在本文中,基本保持了這套方法,只是把Encoder中的RNN替換成了CNN。通過CNN,輸入image可以被embedding為a fixed-length vector[28]。因此,通過預訓練一個CNN的圖片分類任務,可以得到image encoder,之后用最后一個隱層(hidden layer)作為RNN decoder的輸入,來產生sentence。這個模型被稱為Neutral Image Caption(NIC)。
本文的主要貢獻:1)end-to-end 系統;2)模型是對state-of-art的sub-network的組合,這些子網絡可以在其他的大規模語料上充分的預訓練;3)NIC的效果超出state-of-art。BLEU在Pascal dataset上,得分對比是59/25,human得分69。
三、相關工作
描述語言生成之前主要是應用在video上,AND-OR Graph或者logic system用來做視覺識別,之后再通過基于規則的系統轉化為自然語言。
靜態圖片的自然語言描述是近期才引起大家的興趣。憑借近期在物體、屬性、位置識別上的發展,支持實現一個自然語言生成的系統,但基本只限在表示性上(expressivity)。[6]采用檢測(detection)的方法推理出一個三元(triplet)場景元素,進而通過模板來轉化為文本。同樣的,[19]通過檢測,并且將識別的物體以及他們之間關系的短語描述拼接在一起的方法,生成最終的描述。[16]是比三元描述更復雜的方法,但也是基于模板來產生文本描述的。[23,1,17,18,5]中使用了基于語言翻譯的強大的語言模型。以上這些方法可以類似“in the wild”這樣描述圖片,但當用來做文本生成(text generation)時卻比較死板。
另外一大部分工作來解決對給定圖片的描述進行排序的問題[11,8,24]。這類的方法是基于將圖片和文本co-embedding編碼在一個相同的向量空間的想法。例如通過對圖片檢索的query和圖片描述文本在編碼空間的額相關度計算。更進一步,neural network也被用來將圖片和語句(sentence)co-embed[29],甚至是將圖片語料集合和語句集合編碼在一起[13],但是沒有嘗試生成描述(novel description)。因此,以上方法都不能事先描述沒見過的物體組合成的圖片,盡管單個物體可能已經在訓練數據中被觀察到過。此外,它們也都沒有解決如何評估一個生成的描述好壞的問題。
在本文中,將用于圖片分類的深度卷積網絡[12]與序列模型的循環網絡[10]關聯在一起,構成一個生成文本描述的整體網絡結構。這個idea來自近期序列生成模型在機器翻譯[3,2,30]上的成功,與之不同的是我們的輸入時一個經過卷積網絡處理的圖片。與本文最相近的工作[15],使用了neural net(但是是一個feedforward網絡)在給定圖片和前置word情況下,預測后續的word。一個近期的工作[21]使用了RNN來做同樣的預測工作,這和本文的工作十分相似,但區別在:1)使用了更強的RNN模型;2)將visual input直接輸入給RNN,這使RNN能夠跟蹤被文本描述的物體。最后,kiros[14]提出構建一個聯合的多模編碼空間,采用一個強大的計算機視覺模型和一個編碼文本的LSTM模型。相比于本文的方法,他們用了兩個獨立的方法(一個處理圖片,一個處理文本)來定義一個聯合編碼,雖然能夠生產文本,但更多是為了排序而調優的。
四、模型
最近在統計機器翻譯領域取得的進展標明,給定一個強大的序列模型,通過最大化正確翻譯概率,是可以實現state-of-art的效果的。這些模型使用循環神經網絡將變長的輸入編碼成一個固定維度的向量,之后用這個向量表達來解碼出希望的目標語句。
類比,提出了本文的模型:
Θ* = arg max ∑ log p(S|I;Θ),Θ是模型的參數,I是image,S是它對應的翻譯結果。
log p(S|I) = ∑ 0toN ?p(St|I,S0,S1,…,St-1) ?注:簡寫省略了Θ
在訓練的時候,(S,I)是一個輸入pair,在全部訓練數據上,通過SGD來優化上面的Log概率和。
對P(St|I,S0,S1,…,St-1),采用RNN來建模,其中words的變量個數(up to t-1)通過一個固定長度的隱狀態或者memory ht來表示。這個memory在遇見一個新的輸入xt時被更新:
h t+1 = f(ht,xt),其中f是一個非線性函數。
為了使上面的RNN模型更具體,兩個關鍵的問題需要確定:1)函數f的形式;2)圖片和Words如何作為輸入xt
本文中,f采用LSTM網絡(已經在序列任務例如翻譯中取得state-of-art效果)。對于圖片的表示,我們采用CNN模型。我們使用的一個特別之處是采用了比較新穎的BacthNorm[12]。Words采用一個embedding model來表示。
1、LSTM-based Sentence Generator
函數f的選擇需要考慮它應對梯度消失和爆炸的能力,這也是設計和訓練RNN模型時的挑戰。為了解決這個挑戰,LSTM[10]被提出并在翻譯[3,30]和序列生成[9]上取得了成功。
LSTM的核心是memory cell c,對每個時刻的knowledge進行編碼。這個cell的行為是被門“gates”layers控制的,gate值和gated layer的輸出是乘法關系,這可以保證當gate是1時,gated layer可以保留原值,當gate是0時,layer輸出為0。特別的,三個gate分別用來控制是否forget當前cell的值(forget gate f),是否讀取當前的輸入(input gate i),是否輸出新cell的值(output gate o)。相關的定義如下:
其中“圈點”符號代表與gate值的乘法,變量W矩陣是待訓練的參數。pt是在all words上的一個概率分布的輸出。
1)訓練Training
LTSM的訓練目標P(St|I,S0,S1,…,St-1)
input Image:I
ground truth sentence:S=(S0,…,Sn)
The unrolling precedure of LSTM is:
x-1 = CNN(I)
xt = We*St , t∈{0,…,N-1}
pt+1 = LSTM(xt),?t∈{0,…,N-1}
其中:St是每個word的one-hot表示,維度等于詞典的大小。
圖片和words被映射到相同的空間,image通過CNN映射,words通過一個Word embedding We映射。
注意,image I只在t=-1時刻輸入一次。經驗證明,如果在每個時刻都把圖片作為一個額外輸入到模型,會導致更差的結果,因為網絡能夠清晰的利用圖片里的噪聲并且更加容易過擬合。
Loss是各個時刻上正確word的負log似然之和:
L(I,S) = - ∑ 1toN log Pt(St)
上述的loss在全部參數(包含LSTM、CNN、We的全部參數)上尋求最小化。
2)預測Inference
采用NIC生成sentence有多種方式。
A:Sampling采樣
輸入圖片和起始標記S0,得到P1,根據P1采樣得到第一個word;將第一個word對應的embedding結果繼續作為輸入,得到P2,根據P2再采樣第二個word;依次繼續,直到我們采樣到了特殊的Sn(end-of-sentence的標記)或者是達到了指定的最大sentence長度。
B:BeamSearch(沒看太明白,0時刻的種子如何得到?)
在t時刻,采用K個當前最佳sentence構成的集合,作為生成t+1時刻的候選,同時在t+1時刻依然保留最好的K個sentence。本文中采用BeamSearch方法來實驗,beam的大?。↘)取20,beam取1時就是greedy search,實驗中發現BLEU打分會平均低2個點。
五、Experiments
1、Evaluation Metrics
最可信的評估方式是讓人工對描述的有用性給出一個主管的評分。在本文中,我們采用人工的方式來確認一些自動評估的方式確實和人工的主觀評分是一致的。每個圖片由2個人來標注,當標注意見不一致時,取平均打分。
其他自動的評估方式目前在圖片描述領域比較認可的是BLEU打分。
2、Training Details
有監督的學習需要大量的訓練數據,然而在數據集中高質量的圖片數不到10W張。雖然當前已經獲得不錯的效果,但是我們相信,當訓練數據集在未來的幾年變大時,我們方法比當前人工方法好的優勢會變得更大。
對于過擬合Overfitting,我們采取了一些辦法。最顯然的方法是采用Imagenet這樣的數據預訓練pretrained CNN的參數。在實驗中確實發現對于生成起到了作用。對于Word embedding網絡的參數初始化,我們使用了一個大的新聞語料[22],但是沒觀察到明顯的效果,因此本文從簡單考慮沒有進行初始化。最后,試了一些模型層面的避免overfitting的技術,比如試了dropout 和ensemble models,以及通過折中模型的隱藏節點數和深度,來探索模型規模。結果是Dropout和ensembling對BLEU分數帶來了些改善。
文中訓練所有的參數都采用:固定學習率learning rate+SGD+no momentum(計算本次調整時不考慮上一次的梯度變化,僅考慮本次的loss求導)。除了CNN的參數外,其他參數都采用隨機初始化的方式。CNN的參數是預訓練的并且在后續的訓練中保持不變(變化參數存在負向的影響)。embedding的維度采用512,LSTM memory 的大小也是512。
描述文本都預先按Basic粒度切詞,并且保留在訓練語料中出現次數≥5的全部word。