CNN+LSTM:看圖說話


看圖說話——CNN和LSTM的聯合應用

看圖說話是深度學習波及的領域之一。其基本思想是利用卷積神經網絡來做圖像的特征提取,利用LSTM來生成描述。但這算是深度學習中熱門的兩大模型為數不多的聯合應用了。

本文是參考文獻[1]的筆記,論文是比較早的論文,15年就已經發表了,不新。但還是想寫下來它的細節以備后用。

關於CNN(卷積神經網絡)和LSTM(長短期記憶網絡)的細節,本文不再贅述其細節。讀者們需要了解的是:

  • 卷積神經網絡是一種特別有效的提取圖像特征的手段。一個在大數據集如ImageNet上預訓練好的模型能夠非常有效的提取圖像的特征。
  • 長短期記憶網絡能夠處理長短不一的序列式數據,比如語言句子。給定一個輸入,網絡能夠給出一個序列輸出。

背景

在參考論文提出的模型之前,對於看圖說話這個問題,解決方法主要有兩個大類:

  • 利用一些預定義好的屬性來進行生成,比如對於路況圖像,可以判斷路上多少車,然后判斷路況堵不堵之后就可以生成描述。但這樣不具有可擴展性,對於每種場景都需要定制。
  • 使用搜索排序的方法定義該問題,即對於每張圖像,在已有的描述中選擇最好的一個。這種方法的限制在於不能生成新的語句。

網絡模型

圖像到文字的問題可以看做是一種機器翻譯,在現在的機器翻譯模型中,以LSTM為基礎的seq2seq模型成為主流,該模型的基本思想是,對於一個數據pair (A, B)。因為A和B表達的是同一個意思,所以存在某種隱含狀態h,使得A和B都對應到h。於是seq2seq模型就先對A進行編碼,得到一個數據表示,再基於這個數據表示去解碼,生成目標語言的文字。

圖像到文字也類似,假設存在某種隱含狀態h,圖像可以編碼到h,而基於h可以生成目標語句。

用公式表示則是:

模型則如圖示:

值得注意的是,在LSTM模型方面,訓練和預測的時候是不一樣的。

  • 在訓練時,假設數據是<某張圖像A, “ 我 是 誰 ”>,那么LSTM的輸入S0到SN-1分別是、我、是、誰;而輸出分別是 我、是、誰、。
  • 在預測時,對於數據是<某張圖像A1, ???>,那么LSTM的輸入S0為,S1到SN-1分別為上一步的輸出。

實驗

效果評價

使用三種評價指標:

  • 人工評價: 在Amazon Mechanical Turk平台上進行評測,每條數據可以由多個人打分。
  • BLEU:衡量預測結果和實際結果在N-gram上的精度。
  • Perplexity: 語言模型的常用指標,語句出現的概率,等於其句子中每個詞出現的概率之積。METEOR和Cider是其變種。

訓練細節

為了避免過擬合,采用了如下手段:

  • 使用在大數據集上預訓練好的CNN模型。這樣不止防止了過擬合,還會提升效果。
  • 預訓練好的word embedding並不能提升效果,所以沒用。
  • Dropout和Ensembling可以顯著提升效果
  • 圖像的文本描述數據部分都經過了預處理 
    • 統計詞語頻度,只保留出現過5個以上的詞語。

實驗結果

  • 各個指標均顯著變好。
  • 在Flickr30k和Flickr8k的類似數據上進行對比,發現大數據集可以顯著提升效果
  • 在top-1的預測結果上,模型的輸出有80%在訓練集上出現過。而Top-15則只有50%的語句在訓練集上出現過。

參考文獻

[1]. Show and Tell: A Neural Image Caption Generator


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM