Knowledge Acquisition for Visual Question Answering via Iterative Querying
這篇論文是斯坦福李飛飛團隊做的工作,發(fā)表在CVPR2017上。論文通過迭代的查詢(問問題query)來獲取額外知識和信息,從而更好的解決VQA問題(關于VQA的縱覽可以看我的另一篇文章——一文帶你了解視覺問答VQA)。相比于其它獲取額外知識的方法,這篇論文是通過提問與問題和圖片相關的問題的方式來獲取相關知識/信息,就像人類會問問題獲取信息一樣,論文也是基于這個啟發(fā)。例子如下圖所示,通過問那個是平底鍋,然后得知里面食物的顏色。(然而這篇論文距離這種類型的目標還差之甚遠,論文也算是提出了一種問問題的框架,還是有待改善。)

模型

模型的總框架,分為
- core network
核心網絡根據圖像和問題,額外知識,得到最終答案,具體包含四個部分:
- question encoder: 輸入為圖片特征和問題特征,經過MLP,輸出編碼;
- answer decoder:輸入為memory bank的所有向量sum和question encoder的編碼,經過MLP,輸出answer;
- memory encoder:輸入為提問query得到的response,經過encoder編碼為固定長度的向量,因為response有多種格式,所以memory encoder需要能處理不同類型的response;
-
memory bank:存儲memory encoder編碼得到的memory,以隊列保存每次查詢得到的response的memory。
迭代查詢的方式如下圖所示,論文沒有提到查詢是什么時候,怎么終止的,所以應該是固定查詢次數的。
-
query generator
查詢生成器用來生成query,輸入為圖像,問題,當前的memory bank,輸出下一個問題。
因為問題空間大,所以論文使用了四種類型的問題/模板,與固定的objects(主要是因為哲四種有標注好的數據集),所以模型有兩個softmax,一個問題類型,一個object:
Training
query generator的訓練因為沒有數據,不能進行有監(jiān)督的訓練,但是可以有core network的反饋/回報。所以一種方式是使用增強學習RL的方法,然而因為action空間,也就是問題空間很大,所以論文沒有使用RL。而是使用mento-carlo來采樣問題空間,擴展問題樹,通過得到的答案的準確性來給問題打分score:

seed set是詞的集合,用來生成相關性強的問題。訓練sample來自當提的問題能夠使網絡得到正確答案時,那么這個問題是正確的,相關的,將用來訓練query網絡。
兩個網絡使用交替更新的方式來訓練,就是固定一個網絡然后訓練另一個網絡:

實驗
實驗在兩個數據集上做驗證:
- Visual7W數據集,知識源是Visual Genome的標注,包含object,position,relationship等;
-
VQA數據集,知識源是一個訓練好的detector。
結果:
從結果看,Visual7W的提升還是較大的,畢竟相比于那兩個方法多了額外的信息,也就是Genome的標注。不過在VQA數據集上,優(yōu)勢就體現(xiàn)不出來了,可能是得到的額外信息少了,因為只有detector作為知識源,也有模型的問題,比如沒有attetion的運用,數據增強等。
論文給出的一些query例子:
Discussion
這篇論文本質上是通過query來得到額外知識/信息來提高回答的準確性,給我們提供了一個問問題的思路,然而也存在很多缺陷,留給大家思考:
- 提問問題可以得到額外信息,但是沒有轉化為內在知識表示,只是當作記憶;(每次都要問,需要一個龐大的知識源,相比于數據增強訓練能轉化為內在表示);
- 提問不知道何時停止,何時得到準確信息,這是一個可以改進的地方,比如增加一個判斷啥的;
- 太依賴知識源的回答,本質還是視覺基礎問題,只有當視覺基礎解決得好,與NLP的融合問題也可以迎刃而解;
- 學習方法,問的問題還是比較蠢的,從上面給出的例子可以看出,同時也受限于問題類型等。




