圖片的描述為"A white bird perched on top of a red stop sign",一隻白色的鳥棲息在一個紅色 stop 標誌上。
像"A"和"of"這種單詞是沒有像"red"和"bird"這種易於理解的視覺信號的,並且在生成"on top of"這種固定搭配詞組的時候,語言模型就可以勝任,並不需要visual attention的幫助。
事實上,如果在生成這種不應該依靠 visual attention 的詞時,使用了 visual attention 的話,生成的梯度可能會誤導模型,並且可能會毀了之前 visual attention 在更新參數時做出的努力。
對 visual sentinel 的解釋:
visual sentinel是一個隱變量(latent variable),主要用來表示 decoder 已知的東西(what the decoder already knows)。decoder 記憶的內容有長期的也有短期的內容,有圖片的內容也有語言的內容,visual sentinel 就是拿來幫助 decoder 決定是否需要 attend to 圖片,通過一個 sentinel 門實現,通過線性插值的方式決定是否需要依賴圖片,表示為:
這裡表示 visual attention,總的 attention 結果由 visual sentinel 和 visual attention 共同決定。
該模型的 attention module 如圖所示:
整個 attention 計算過程和預測詞的過程如下:
1. 首先是普通 visual attention 的計算:
這裡最後一個特殊符號是一個元素全部為 1 的向量,其主要目的是為了將與其相乘的矩陣變得與加號前面的矩陣大小相同。
2. 然後是 visual sentinel 的計算:
中間的乘號是 element-wise multiplication。
3. 接著是 sentinel gate 的計算:
是一個 1xk 的向量,上面式子中後面一項算出來的是一個標量,sentinel gate就是的最後一項,也就是第 k+1 項。4. 總的attention計算:
5. 最後是預測詞:
p 是一個 1xD 的向量,D 表示詞庫的大小,最後得到的是概率最大詞對應的 index,再從詞庫中返回這個 word。
這篇文章指出,目前大多數的 image caption 模型中使用的 language model 都是逐個逐個生成詞的,按照 label 中 caption的順序,但是對於人來說,一種更自然的方式是,先確定圖中有哪些物體,物體之間的關係是什麼,然後再使用物體的矚目特徵來仔細描述每一個物體。
文章提出了一種 coarse-to-fine(我將其理解為椎輪大輅)的方法,將原始的圖片描述分解為兩個部分,一個主幹句(skeleton sentence)和各種物體的特徵(attributes),再生成語句的時候,也分為兩個部分進行生成。通過這種分解,該文章的模型達到了 state-of-the-art 的效果。
舉個例子:
為了生成上圖中的描述,首先生成一句 skeleton sentence: horse on pasture(馬兒在牧場上),用來表示物體中的主要物體和物體之間的關係,horses on pasture;然後,這些通過 visual attention 重新訪問這些物體,當物體的 attention response 很大時,就生成對這些物體特徵的描述,Three 和 a green。將兩個句子結合起來生成最終的描述,Three horses on a green pasture。
方法的結構如圖:
1. Skeleton-Attribute decomposition for captions:第一步需要對已有的訓練集 caption 作語法分析,並且提取出主幹句和特徵描述。NP/VP/PP/AP 分別是名詞/動詞/副詞/形容詞。
2. 使用經過了 CNN 提取的特徵作為語言模型的輸入,decoder 部分由兩個 LSTM 組成,一個是 Skel-LSTM,用來生成主幹句,另一個是 Attr-LSTM 用來生成描述特徵。
3. 在 Skel-LSTM 中使用的是 visual attention,在每個 time step 生成一張 attention map,用來預測這一時刻的詞。用來描述 skeleton sentence 中的 skeleton object 時生成的 attention map 也可以用在生成對該 object 的特徵描述上,所以在 Skel-LSTM 中獲得的 visual attention 也可以在 Attr-LSTM 中再次使用。
在 Attr-LSTM 中對特徵的生成不是逐個 object 生成的,是一次性生成的,因為學習過程中由於 Skel-LSTM 中物體是有順序的,所以 Attr-LSTM 也學習了特徵的順序。
Attr-LSTM 中不僅使用了 attention,還使用了 current time step t 對應 LSTM 的 hidden state 和對應 skeleton word 的 word embedding。具體方法不細說請參考論文,歡迎討論。
4. 最後將 skeleton sentence 和 attributes 結合起來,作為最終的 caption。
順便提及一下,文章也指出了 encoder-decoder 模型的兩個問題,很值得我們思考解決方法:
Deep Reinforcement Learning-based Image Captioning with Embedding Reward這是將強化學習與圖像描述結合起來的論文,因為我的強化學習學得不多,只停留在 GAN 和 GAN 的一些變體,如果有錯誤請指正。
文章提出了一種新的 decision-making 框架來進行圖像描述,用了一個"policy network"和一個"value network"協同生成描述。
policy network 扮演一個局部 guidance 的角色,根據這一時刻的狀態,提供對下一個詞預測的置信度。
value network 扮演一個全局、前瞻的 guidance,評估現狀態所有可能的擴展狀態。該網絡本質上是在調整學習的方向,從預測正確的詞彙到描述與 ground truth 相似的描述(這句話我不是很理解)。
使用的是 actor-critic 方法來訓練網絡,也就是先行動後打分的方法,是一種平衡了 value-based methods 和 policy-based methods 的方法。
作者說,他們的這種方法只通過 policy network 就可以提取出正確但是概率卻很低的單詞,具體例子如下圖:
Next Action 表示下一個生成單詞的 preference ranking,顯然在現在時刻最合適的詞 holding 並不是最優選擇,但是 value network 卻會 go forward 到假設生成 holding 這個詞的 state,然後評估這個 state,對於生成一個合適描述這一目標,分數有多高。
作者首先使用基於交叉熵 loss 的監督學習 pretrain 了一個 policy network,使用均方誤差訓練了一個 value network,然後使用深度強化學習來改進兩個網絡。深度強化學習常用的領域是遊戲和控制,對於 caption 這個任務來說,很難定義一個明確的目標,也就沒法明確優化的目標。
這篇論文中提出了一種 actor-critic 模型,使用的 reward 由 visual semantic embedding 生成(visual semantic embedding 計算的是圖片和描述的相似度,也就間接說明了 caption 的正確性,可以作為強化學習中合適的 target 來進行優化)。
文中具體的實現方法我也只能直觀上地理解,公式推導我還不行,當我補上了足夠的強化學習知識再來進行補充。
最近看新聞,騰訊 AI lab 在 MSCOCO 的 caption 任務上奪冠的模型也使用的是強化學習模型,我覺得強化模型在 caption 方向上可能會大放異彩。
相關連結[1] slides:http://slides.com/walkingdead526/deck#/
論文連結[1] https://arxiv.org/abs/1611.05594
[2] https://arxiv.org/abs/1612.01887
[3] https://arxiv.org/abs/1704.06972
[4] https://arxiv.org/abs/1704.03899
我是彩蛋
解鎖新功能:熱門職位推薦!
PaperWeekly小程序升級啦
今日arXiv√猜你喜歡√熱門職位√
找全職找實習都不是問題
解鎖方式
1. 識別下方二維碼打開小程序
2. 用PaperWeekly社區帳號進行登陸
3. 登陸後即可解鎖所有功能
職位發布
請添加小助手微信(pwbot01)進行諮詢
長按識別二維碼,使用小程序
帳號註冊paperweek.ly
關於PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報導人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群裡。
▽ 點擊 | 閱讀原文 | 訪問作者知乎專欄