編者按:
《書李世南所畫秋景》
--蘇軾
“野水參差落漲痕,疏林欹倒出霜根。
扁舟一棹歸何處?家在江南黃葉村。”
宋代詩人張舜民在《跋百之詩畫》中,曾經寫道:“畫是無形詩,詩是無形畫”。這句詩展現了古代語言與視覺之間的融合,而在如今的人工智慧領域,這句詩亦可用來表現,自然語言理解與計算機視覺兩個領域的交融。
因此,當我們來讀蘇軾的《書李世南所畫秋景》,第一句的“野水參差落漲痕,疏林欹倒出霜根”,是從秋景中提取資訊來生成自然語言描述的過程,即Image Captioning,而第二句的“扁舟一棹歸何處?家在江南黃葉村”,則是從視覺內容結合“黃葉村”這一背景資訊來生成問答的過程,即融合了external knowledge的Visual Question Answering。
在從視覺到語言這一問題上,人類透過對周圍世界不間斷的感知和學習,能達到如詩中融會貫通的效果。然而相比而言,機器卻只能達到人類三四歲小朋友的水平,其間還有很大的差距需要我們科研人員來填補。
今天,來自澳大利亞阿德萊德大學的沈春華教授,將為大家介紹,從視覺到語言,如何利用深度學習來填補機器與人之間的落差。
文末提供文中提到參考文獻、程式碼及資料庫的下載連結。
本次報告給大家分享一下過去差不多兩年的時間裡我們做的Natural Language Processing,NLP和Computer vision,CV的交叉的工作,主要是Image Captioning和Visual Question Answering。
我下面介紹的工作主要是之前組裡兩個非常優秀的博士後做的:王鵬,現在是西北工業大學的教授;以及吳琦,現在是我們阿德萊德大學的講師。
提到VQA,其實如果要真正徹底解決VQA,一定要解決QA,在自然語言處理(NLP)裡面,所有的研究問題,最終都可以轉成QA的問題。如果把QA解決了, 其實也就是解決了自然語言處理,大家知道NLP遠遠沒有解決,還有很多研究的問題。那麼Question Answering問題,和其他傳統的計算機視覺問題相比是一個非常大的挑戰。 要正確回答這個問題,你可能要依賴很多的知識(knowledge), 這個知識不一定在影像裡面。
在CVPR 2016的論文裡,我們做了一個工作,怎麼樣把相關的知識找出來,主要使用的External knowledge是維基百科。維基百科擁有幾十萬的英文文章. 基本是思想是給你一張圖片,可以根據影像相關的屬性得到標籤,然後再用SPARQL(SPARQL是一個資料庫搜尋的語言),去搜DBpedia,DBpedia是Google做的基於維基百科的結構化資料庫。得到之後,我們再去找到相關的維基百科裡面的英文文章,得到相關的描述。最後要讓文字參與計算,我們用了Doc2vec,把它轉換成一個向量,然後再輸入給LSTM,然後再做神經網路的訓練。用這樣的方法把相關知識利用起來。這可能是當時第一個把External knowledge利用起來,應用在VQA領域的工作. 這個工作只是往前走了一小步,還遠遠不夠。
如果要正確的利用這樣的結果,這裡有幾個研究問題要解決,其中一個是,首先這些off the shelf的演算法的結果不一定百分之百是正確的,有可能是錯的。怎麼樣把錯的結果給過濾掉?第二個問題是因為我們產生這些結果的時候,我們並不知道使用者要問的問題是什麼. 我們需要在給出一個問題的時候,去挑選那些相關的facts,把那些不相關的仍掉,這裡面得有一個機制,去掉錯的或者噪聲,來選擇正確的facts來回答我的問題。在去年的CVPR論文裡,我們提出一個Co-attention Model來做這個事情。
這些工作做完之後,我們在利用External knowledge上面,其實已經往前走了幾步了,為了更好的做VQA這個問題,其實它還是有一些侷限性的。第一個是可擴充套件性,它不夠好,因為所有的知識都是從Questions and answers這樣的問題和回答裡面學出來的。 knowledge可以是非常大的。如果說要有一個編碼解碼這樣的模型,一個遞迴神經網路,把所有的人類所知道的這些知識全部包含進去,全部學出來的話,可能是非常難的問題。
還有就是推導過程,目前我們只能rank一下它用到的Facts的重要性,它其實沒有一個相關性,怎麼顯性的推理過程是沒有的。第一個可擴充套件性非常重要,我們有沒有可能把我們知道的那些knowledge base全部用上,來回答你的這個問題,把它用到這個VQA上面。其實這個在NLP裡面有很多相關的工作,不過做視覺的很少關注到,這個肯定是有可能的,也需要把knowledge base這些技術跟視覺技術結合起來。
第一步,給你一個圖片,我們去產生concept,這個其實是圖片理解的過程,得到了影像資訊之後,我們可以跟DBpedia對應起來。第二個模組其實是要理解輸入的問題,因為你有個自然語言,NLP描述了一個問題,我們對這個問題做刪選,然後做一個對映,得到這個對映之後,就得到了Query,去搜尋這個knowledge base。
這裡面有幾個例子,為了去生成這個query,我們只能回答有限型別的問題。例如,像第一個,Is the image ...“這裡面有沒有”。
剛才說到的VQA,因為回答的問題有限,所以在這個基礎上又更進了一步,我們希望把生成query,改用學習的方法得到,這樣的話可以不侷限於只能回答有限的問題。
最後提一下今年做的工作,是今年CVPR的一個oral paper,這個工作的背景是我們把GAN用到VQA上。讓這個演算法生成更像人說的這些自然語言,這裡給大家看幾個例子,這個人說的話,大概會比較長,會有更多的資訊在裡面,如果用機器來生成非常簡短。
這個是我們提的框架,這裡面加了鑑別器,這個鑑別器的任務就是來區分這是人說的話還是機器產生的,然後得到這個分數之後,再來指導這個generator,讓它生成更像人說的話,這裡面也會用到一個Co-attention model。在訓練的時候,我們會固定一個訓練好的判別器模型,把它當作一個reward function. 然後使用policy gradient,這樣在訓練生成器的時候,我們可以不提供ground truth,只透過sampling的方式,然後將sampling好的結果送入判別器,再透過reward計算policy gradient,來調節生成器,期望得到更好的sampling。
文中提到參考文獻下載連結:
https://pan.baidu.com/s/1hH9Z-WOXfIEpjQY_jIPYlw 密碼: niw2
程式碼及資料集開放連結為:
DAQUAR資料集:
https://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal-computing/research/vision-and-language/visual-turing-challenge/
COCO-QA資料集:
http://www.cs.toronto.edu/~mren/imageqa/data/cocoqa/
VQA資料集:
http://www.visualqa.org/download.html
Visual Genome資料集:
https://visualgenome.org/api/v0/api_home.html
FVQA 資料集:
https://www.dropbox.com/s/iyz6l7jhbt6jb7q/new_dataset_release.zip?dl=0
CO-attention code:
https://www.dropbox.com/s/siofu0gj6ocoirw/HieCoAttenVQA_v2_clean.zip?dl=0
Attributes captioning/VQA code:
https://www.dropbox.com/s/ur15xi828k2j4a9/ACK_Code.zip?dl=0