[論文]Google——Show and Tell: A Neural Image Caption Generator

論文地址

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。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,327評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,996評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,316評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,406評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,128評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,524評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,576評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,759評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,310評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,065評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,249評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,821評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,479評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,909評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,140評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,984評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,228評論 2 375

推薦閱讀更多精彩內容