1. 程式人生 > >Show, Attend and Tell: Neural Image Caption Generation with Visual Attention 閱讀筆記

Show, Attend and Tell: Neural Image Caption Generation with Visual Attention 閱讀筆記

0 模型在做什麼

圖0-0 Image Caption效果簡介

本文介紹的模型,將圖片資訊與相應的文字資訊進行結合,在預測文字中相應單詞的時候不同的影象區域被啟用

如在圖0-0 第一對圖片中,當用於生成句子中的dog單詞時,圖片中狗相關的區域變的高亮

類似的第二張圖中的stop標誌,第三張圖的人們,以及第四張圖的樹

圖0-1 錯誤案例

當然在依賴圖片生成文字的時候也會出現錯誤的情況,如在圖0-1中把第一張圖片的兩隻長頸鹿誤認為鳥,第二張圖片女性衣服的logo誤認為鐘錶,第三張圖把帆誤認成衝浪板,把第四章的小攤視作了披薩。

1 介紹

1.1 模型作用

受到機器翻譯與物體識別相關領域學科發展的影響,論文作者們嘗試一種能夠自動學習描述圖片的模型(拿我們龍哥的話說,就是看圖說話~),這種模型主要是基於attention技術。

模型優化主要基於反向傳播技術,同時文中作者用視覺化的方式,展現了模型如何聚焦用於生成文字的有效物件。

1.2 背景介紹

自動描述圖片,是計算機視覺的核心目標--場景理解的主要任務,在描述圖片的任務中,模型不僅需要足夠準確的圖片中包含了哪些物體,同時需要捕捉到物體之間的關係,並使用語言進行表述。正因上述原因,描述圖片任務一直被視為一個極具挑戰的問題。同時該任務中,模型人類將大量資料額資訊壓縮到可描述的語言資訊,因此圖片描述機器學習演算法的重要挑戰。

2 模型結構

2.1主要框架

                                                                          圖1

整體框架

圖1所示,主要流程如下

  1. Image Caption(圖片描述)模型中,輸入為圖片資料(第一步)
  2. 經過CNN進行卷積提取圖片特徵資訊最終形成圖片的特徵圖資訊(第二部,屬於encode過程)
  3. attention對提取的特徵圖進行加強與抑制,作為後續進入LSTM模型的輸入資料,不同時刻的attention資料會受到上一時刻LSTM模型輸出資料而有所調整(第三部分,後面會詳述attention 與 隱藏狀態ht 以及輸出yt的關係)
  4. LSTM模型最終輸出文字資訊(第四部分)

2.2 模型細節--encoder部分

Image Caption(圖片描述)模型的最終輸出為一個長度為C的句子,其中yi指句子中的第i個詞,這個詞屬於一個k維實數的詞向量,其中K是詞典長度(這麼看輸出應該是一個one-hot的詞向量)

在encoder階段,文中使用的是CNN(卷積神經網路),用於提取特徵圖向量集合,這些特徵圖向量後續會被作為註釋向量( annotation  vectors註釋向量啥意思啊~哈哈哈)使用。

通過CNN會提取L個特徵圖向量,命名為a,每一個都是D維向量用來代表圖片的一部分。同時為了保留特徵圖與2維圖片的關係,本文中的特徵來自於較淺的卷積層(不像其他研究中使用了全連線層),這麼操作可以保證後續的decoder階段,能夠通過選取所有特徵圖的子集而選擇性聚焦到圖片的部分位置。

2.3 模型細節--decoder部分

在decoder階段模型使用的是 long short-term memory (LSTM,長短時記憶模型)network,圖片的說明文字由本模型生成,在預測每一個詞的時候都會需要使用背景向量(前面提到的特徵圖的變體,後續會詳細講述)、前一時刻的隱藏層向量、前一時刻的詞。

                                                                     圖2 LSTM cell內部計算框架

                                                                     圖3 LSTM cell內部相應算式

decoder節段是一個標準的LSTM過程,如圖2中所示,每個LSTM需要以下輸入

  1. 背景變數Z,來源於圖片經過CNN提取特徵後,再使用attention進行過濾後的向量
  2. 前一時刻的隱藏層向量h
  3. 前一時刻的詞向量E,此時的詞被轉化為embeding向量

圖3中表示LSTM具體的計算公式,這裡暫不贅述,如果後續有時間會豐富下此處的細節,僅當複習LSTM

2.4 模型細節--背景向量Z的計算

背景向量Z的含義,Z是在t時刻,輸入圖片資料的動態表達,也就是說,

  1. Z是基於輸入圖片資料的,後續的加工依賴於註釋向量a
  2. 隨著時間的不同,Z向量是有變化的,導致Z變化的原因是前一時刻輸出的y

圖4 attention係數計算

圖5 計算背景向量

具體計算

  1. 圖4通過att函式計算第i張特徵圖ai與上一時刻隱藏向量ht-1的關係eti(具體的att函式也是本文的探討重點之一會後續介紹)
  2. 圖4中使用歸一化,將eti轉化為概率值,成為attention係數αti,αt既是指t時刻attention的集合
  3. 圖5說是特徵圖集合a中元素分別於attention係數中αti計算得到t時刻背景向量Zt

3 兩種attention機制--hard attention 與 soft attention

上面提到計算特徵圖與隱藏向量間關係時用到了att函式,本文中作者提到了兩種att函式分別是hard attention 與 soft attention

3.1 Stochastic “Hard” Attention

圖6 hard attention計算公式

所謂的hard attention實際上是使用一種隨機的方法計算attention係數α.

首先先設定一個t時刻的位置變數st,st是指在t時刻生成詞的時候模型需要聚焦於圖片的哪些位置.

在hard-attention 模型中,st是一個one-hot編碼向量,st,i中最大的值為1,其餘均為0.結合圖6中第二個公式,可以看出,會把與生成下一個詞最相關的特徵圖提取出來其他特徵圖拋棄。

基於整體模型得出目標函式,及優化函式如圖7所示

圖7 目標函式與優化函式

……後續補下目標函式與優化函式的推導,這東西實在讓我頭大啊~

在優化函式過程中(圖7的第二個公式),本文使用了 Monte Carlo based sampling (這個具體咋做實在不太清楚,不敢瞎翻譯啊,有大神求指點,多謝!)來逼近模型中相關引數的梯度。使用 Monte Carlo based sampling可以從一個多項式分佈中抽取位置變數st。因此優化函式變化如圖8

圖8 使用了Monte Carlo based sampling後的優化函式

為了降低蒙特卡洛方法計算梯度的變異性,使用了 moving average baseline (這個概念也不太懂,啊啊啊!!!),在第k批次資料進入模型時,moving average baseline通過累加前一批次的指數衰減後的log似然,如圖9所示

圖9 計算moving average baseline

為了再次降低計算時的變異,多項式分佈的熵H會被加入到優化函式中,最終優化函式如圖10所示

圖10 hard attention 模型下的最終優化函式

3.2 Deterministic “Soft” Attention 

“Neural machine translation by jointly learning to align and translate”這篇論文提出的演算法具體可參考https://arxiv.org/pdf/1409.0473.pdf

3.3 hard 與 soft 的對比

圖11 hard attention 集中效果

圖12 soft attention 集中效果

對比兩種attention的集中位置的視覺化效果來看,soft-attention 更能表達圖片與文字間的關係(尤其是soft的名詞部分)