Image Caption 深度學習方法綜述

本周對利用深度學習方法解決 Image Caption 問題做了一些研究,讀了幾篇論文,總結如下。

總體來說,目前深度學習領域 Image Caption 的方法仍主要是 Encoder-Decoder。基於此,attention 機制的引入較為顯著地提升了性能。更進一步地, Adaptive Attention 在2016年11月放到 arXiv 時(已被2017CVPR接收了),實現了 state-of-the-art 的效果。目前在 COCO 上的排名也十分可觀。

本文基於這個思路介紹下最近關於 Image Caption 的幾篇深度學習論文。

1. Encoder-Decoder

Encoder-Decoder 最早是在機器翻譯領域引入的。因為原始 RNN 結構中,要求輸入序列和輸出序列嚴格等長,而機器翻譯任務中源語句與目的語句往往不等長,因此引入了 Encoder-Decoder 結構解決了這一問題,基本結構如下:

Encoder 部分將完整輸入「編碼」成為 h_n ,然後輸入 Decoder 「解碼」生成目標向量 y_m ,由此避免了不等長的問題。具體見[3]。

2. m-RNN

2014年10月,百度研究院的Junhua Mao和Wei Xu等人在arXiv上發布論文《Explain Images with Multimodal Recurrent Neural Networks》,提出了multimodal Recurrent Neural Network(即m-RNN),創造性地將 CNN 和 RNN 結合起來,用於解決圖像標註和圖像語句檢索等問題。

本文開創性地將深度學習方法用於解決 Image Caption 問題,並取得了不錯的效果,以至於到目前為止,很多該領域論文仍將 m-RNN 作為一個 baseline。論文中作者也不吝嗇地說:

To the best of our knowledge, this is the first work that incorporates the Recurrent Neural Network in a deep multimodal architecture.

m-RNN 模型結構如下:

2.1 結構說明

  1. input word 通過兩個word embedding層,生成稠密向量表示 w(t)w(t) 同時被傳遞給 RNN 和 Multimodal。
  2. RNN 所做變換為 r(t) = f_2(U_r cdot r(t-1)+w(t)) , 其中 r(t) 是 t 時刻循環層激活數據。
  3. 右側綠框中,輸入圖像經過 CNN 生成特徵向量 II 與 一併輸入multimodal。multimodal 所做變換是 m(t) = g_2(V_m cdot w(t) + V_r cdot r(t) + I) g_2(x) = 1.7159 cdot tanh(frac {2} {3} x)
  4. m(t) 輸入 softmax 層生成概率矩陣。至此,由input word 產生了一個 next word 。

可以看出,m-RNN 也是 Encoder-Decoder 結構。

2.2 代價函數

C = frac {1} {N} sum_{i=1}^{N} L cdot log_2PPL(w_{1:L}^{(i)} | I^{(i)}) + ||theta||_2^2

基於困惑度(perplexity),可以看出 | theta | _2^2 實際上是一個正則化項。

2.3 語句生成步驟

模型以一個特殊的開始符號或者任意個參考單詞做開始,計算下一個單詞的概率分布 P(w | w_{1:n-1} | I) ,據此產生單詞。循環往複,直至產生結束符號。

2.4 其他

需要注意,每個 t 時刻,即生成每個詞語時,圖像特徵 I 都參與了計算。這是一個弊端,下文再討論。

3. NIC

2014年11月,Google 推出了 NIC 模型[6]。

相對於m-RNN,NIC 具有如下不同:

  • 用 LSTM 替代 RNN;
  • 不同於 m-RNN 的 AlexNet,CNN 部分使用了效果更好的卷積網路;
  • CNN 提取到的圖像特徵只在開始時輸入一次。

模型結構如下:

值得說明的是,論文還用人工方法客觀地對模型生成的 caption 做了再次評價,結果顯示,目前的評價指標並不能全面準確地評價 caption 結果,在一些指標上 NIC 比人類標註獲得了更好評分,但實際標註效果並不更好。

特別說明下圖像特徵輸入方式改變的原因,論文中作者是這麼說的:

We empirically verified that feeding the image at each time step as an extra input yields inferior results, as the network can explicitly exploit noise in the image and overfits more easily.

我們從實踐經驗上證實如果在每一個時間點都輸入圖像數據,將會導致較差的結果。網路可能會放大圖像數據中的噪音,並且更容易過擬合。

再次說明了深度學習的玄學性。

NIC 一次性將圖像特徵輸入 Decoder,但顯而易見的是,每步生成的不同的詞語一般關聯圖片中的不同部分,因此理想的情況下應該是在預測下一個詞語時,Decoder 自動關注應該關注的圖像區域,這樣擬合的準確率才會更高,這也符合人類視覺系統中局部關注的特點,因此 attention 的引入就很自然。

4. Attention

Image Caption 問題不僅要解決目標檢測的問題,生成的 caption 中還要考慮目標之間的關係。

Attention 機制可以較好地考慮這種「局部重視」,其直觀說明如下圖:

2015年2月,《 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》將人類視覺系統中的 attention 機制引入深度學習,整體模型結構如下:

可以看出,整體仍是 Encoder-Decoder 結構,Encoder 部分沒有做改變,在 Decoder 中引入了 attention。

假設 CNN 部分提取到的是14*14*256 的特徵向量,可以將其認為是 L=14*14=196 個區域,將其表示為 a={a_1, a_2...,a_L},a_i in R^Da 就是位置特徵的集合。

Attention 的核心就是去學習這個位置集合的權重,用公式表達為

z_t=sum_{i=1}^L alpha_{t,i} a_i

alpha_{ti}=frac{exp(e_{ti})} {sum_{k=1}^L exp(e_{tk})}

e_{ti}= f_{att}(a_i, h_{t-1})

f_{att}:  attention  model

z_t 表示的就是經過 attention 的圖像信息,和隱層狀態 h_{t-1} 、word embedding Ey_{t-1} 一起送入 LSTM。

文章提供了 Hard Attention 和 Soft Attention 兩種 attention 機制,以上介紹的是 Soft Attention,Hard 較為 Hard,當然效果也更好,好多公式不想看就不介紹了。

論文給出的實驗效果如下圖,可見也是 state-of-the-art 的效果。

易見,這裡圖片每個 channel 的 attention 權重是相同的,體現的是「spatial attention」,也有論文進一步考慮了不同 channel 的權重分布,如「SCA-CNN: Spatial and Channel-wise Attention in Convolutional Networks for Image Captioning」,不再詳述。

5. Adaptive Attention

2016年12月,在 Encoder-Decoder + Attention 的基礎上, 《Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning》進一步深入,提出了 Adaptive Attention 結構。

以前的 Caption 模型中,將所有的詞語等同看待,認為他們都需要從輸入圖片中提取產生,然而對於一些介詞、虛詞等,可以從已產生的文本中推測得出。以「A white bird perched on top of a red stop sign」為例,只要能預測出「bird」、「stop sign」等,從這些已有預測文本中預測出「a」、「on」、「of」等詞語可以是一件更為簡單準確的事情。因此,本論文提出 Adaptive Attention 的結構(如下圖),分利用圖片信息和已有 caption 文本信息,提出「visual sentinel」的概念,利用其將圖片信息、文本信息做加權組合,在生成 caption 的每一個單詞步驟,都考慮是否利用圖片信息,如果「是」則繼續做上一部分的 attention 模型,如果「否」,則從已產生文本中預測下一個詞語。

論文主要貢獻包括:

  • We introduce an adaptive encoder-decoder framework that automatically decides when to look at the image and when to rely on the language model to generate the next word.
  • We first propose a new spatial attention model, and then build on it to design our novel adaptive attention model with 「visual sentinel」.
  • Our model significantly outperforms other state-ofthe-art methods on COCO and Flickr30k.
  • We perform an extensive analysis of our adaptive attention model, including visual grounding probabilities of words and weakly supervised localization of generated attention maps.

5.1 對 Soft Attention 的改進:

如上圖所示,Soft Attention 中,輸入圖片的 Attention 結果特徵 c_t (類似於第4部分的 z_t )用的是上一隱層狀態 h_{t-1} 去決定 Attention 區域。而 Adaptive Attention 中採用的是 h_{t} 。這一靈感來自 ResNet,作者認為這種 c_t 包含了當前隱層狀態 h_t 的殘留視覺信息,可以減少由 h_t 生成下一個單詞預測的不確定性。

5.2 Adaptive Attention Model

首先介紹下「visual sentinel」的概念,它被認為隱式地存儲了 Decoder 已知的信息,包含長期和短期的視覺信息和語言信息。

Adaptive Attention Model 的核心結構如下圖:

visual sentinel vector s_t :

s_t = g_t odot tanh(m_t)

g_t = sigma (W_x x_t + W_h h_{t-1})

x_t = [w_t;v^g]

v^g = ReLU(W_b a^g)

a^g = frac {1} {k} sum_{i=1}^{k} a_i

V = [v_1, ... v_k]

v_i = ReLU(W_a a_i)

m(t) : t 時刻的 LSTM cell state。

x_t :word embedding w_t 向量 和全局圖像特徵向量 v^g 的連接。

A = {a_1, ... a_k}, a_i in R^{2048} : k 個 attention 區域的特徵矩陣。

[:] 表示 concatenate。

務必注意 V與A 的區別!

context vector c_t

c_t = sum_{i=1}^{k} alpha_{ti} v_{ti}

alpha_t = softmax(z_t)

z_t = w_h^T tanh(W_vV +(W_gh_t)1^T)

有了 s_tc_t ,可以得出 Adaptive Attention 的核心公式 adaptive context vector

hat c_t = beta_t s_t + (1- beta_t) c_t

beta_t 代表了網路在sentinel上分布的權重,基於 alpha_t 建立新的權重表示如下:

hat alpha_t = softmax([z_t; w^T_h tanh(W_s s_t + (W_g h_t))]) quad hat alpha_t in R^{k+1}

beta_t = hat alpha_t[k+1]

由此可計算詞典的概率矩陣

p_t = softmax(W_p(hat c_t + h_t))

5.3 效果

妥妥的 state-of-the-art。

6. What Value Do Explicit High Level Concepts Have in Vision to Language Problems?

2016年4月的這篇論文的研究思路像它以問號結尾的標題一樣別緻[7]。

前面我們提到的模型都是把 CNN 提取到的抽象圖像特徵向量輸入模型,神奇的是我們一直使用的這些特徵向量我們也不知道是什麼。本文在摘要部分就一針見血地指出了這個問題:

Much recent progress in Vision-to-Language (V2L) prob- lems has been achieved through a combination of Convolutional Neural Networks (CNNs) and Recurrent Neural Net- works (RNNs). This approach does not explicitly represent high-level semantic concepts, but rather seeks to progress directly from image features to text.

這種方法追求的是從圖像特徵到文本的直接轉換,而不是顯式展示高層語義特徵。

所以在本文中,作者的心態就是要研究下這種方法的成功是不是因為他們避免了將圖像信息表達為高層的語義信息。因此 decoder 的輸入就變成了高層語義信息,具體模型結構如下:

訓練時,在預訓練的單標籤模型上做fine-tune,生成屬性概率預測,然後輸入 decoder 中生成 caption。

具體要點如下:

  • CNN 部分是 VGGNet,RNN 部分仍是 LSTM;
  • fine-tune 過程是將 CNN 的最後一個全連接層輸入到 c 分類的 softmax 中,用 MS COCO 這種具有多標籤的數據集做 fine-tune;

著重說一下屬性表構建部分:

  • 訓練時,屬性表可以從 caption 中直接提取;
  • 測試時,屬性表的構建更為複雜,如下圖所示。測試圖片使用Multiscale Combinatorial Grouping (MCG)方法生成 region proposal,這些所有方框分成 m 個簇,每個簇中保留最好的 k 個,加上原圖共有 m*k+1 個proposal,然後這些 proposal 全部輸入到 fine-tuned multi-labeled model 中,生成 m*k+1 個屬性表,最後對這 m*k+1 個屬性表做 cross hypothesis maxpooling,產生最後的屬性表。

最後測試結果如下所示:

註:除困惑度(P)之外,所有指標都是越高越好

注意,第二個指標圖中該模型的效果顯示比人類標記更好,實際應該是沒有人類標記好的,Google 的 NIC 那篇論文中有提及,這些指標其實是不夠準確的,這也是目前亟需解決的問題。

當前,這篇論文在當時也達到了 state-of-the-art 的效果,並且評價極高。這不是因為指標上有多好,而是相對於莫名其妙改改模型刷出了較好的指標(如 NIC 的」可能是因為每步都輸入圖片的話雜訊會影響效果「),這篇文章的思路(為什麼不用人類可理解的語義特徵輸入 decoder 呢?難道現在這些模型的好效果就是因為它避免了語義表述嗎?)是人類可理解的。個人看法。。。


參考:

[1] 「Show and Tell」——圖像標註(Image Caption)任務技術綜述

[2] Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning

[3] Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation

[4] 看圖說話的AI小朋友——圖像標註趣談(下)

[5] Explain Images with Multimodal Recurrent Neural Networks

[6] Show and Tell: A Neural Image Caption Generator

[7] What Value Do Explicit High Level Concepts Have in Vision to Language Problems?

[8] Show, Attend and Tell: Neural Image Caption Generation with Visual Attention

[9] Knowing When to Look: Adaptive Attention via A Visual Sentinel for Image Captioning

[10] Multimodal —— 看圖說話(Image Caption)任務的論文筆記(三)引入視覺哨兵的自適應attention機制


推薦閱讀:

機器學習演算法自動訓練工具Parris,消除你重複建堆棧的煩惱
非凸優化基石:Lipschitz Condition
Python vs R : 在機器學習和數據分析領域中的對比
特徵選擇1:用貝葉斯方法挑西瓜
機器學習系列-隨機過程

TAG:深度学习DeepLearning | 神经网络 | 机器学习 |