讓機器“答問如流”:從視覺到語言|VALSE2018之四

深度學習大講堂發表於2018-05-10

編者按:

《書李世南所畫秋景》

                                        --蘇軾

“野水參差落漲痕,疏林欹倒出霜根。

扁舟一棹歸何處?家在江南黃葉村。”

宋代詩人張舜民在《跋百之詩畫》中,曾經寫道:“畫是無形詩,詩是無形畫”。這句詩展現了古代語言與視覺之間的融合,而在如今的人工智慧領域,這句詩亦可用來表現,自然語言理解與計算機視覺兩個領域的交融。

因此,當我們來讀蘇軾的《書李世南所畫秋景》,第一句的“野水參差落漲痕,疏林欹倒出霜根”,是從秋景中提取資訊來生成自然語言描述的過程,即Image Captioning,而第二句的“扁舟一棹歸何處?家在江南黃葉村”,則是從視覺內容結合“黃葉村”這一背景資訊來生成問答的過程,即融合了external knowledge的Visual Question    Answering。

在從視覺到語言這一問題上,人類通過對周圍世界不間斷的感知和學習,能達到如詩中融會貫通的效果。然而相比而言,機器卻只能達到人類三四歲小朋友的水平,其間還有很大的差距需要我們科研人員來填補。

今天,來自澳大利亞阿德萊德大學的沈春華教授,將為大家介紹,從視覺到語言,如何利用深度學習來填補機器與人之間的落差。

文末提供文中提到參考文獻、程式碼及資料庫的下載連結。

讓機器“答問如流”:從視覺到語言|VALSE2018之四

本次報告給大家分享一下過去差不多兩年的時間裡我們做的Natural Language Processing,NLP和Computer vision,CV的交叉的工作,主要是Image Captioning和Visual Question Answering

讓機器“答問如流”:從視覺到語言|VALSE2018之四

我下面介紹的工作主要是之前組裡兩個非常優秀的博士後做的:王鵬,現在是西北工業大學的教授;以及吳琦,現在是我們阿德萊德大學的講師。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
所謂的Vision and Language,是一個相對比較新的領域,上圖左邊是一些傳統計算機視覺的任務。比如給你一張圖片可以做Image Classification,Object Detection,Segmentation等等。基本上都是給你一張圖片,用演算法輸出單個或者多個標籤。而純自然語言處理領域的任務,則需要對自然語言進行相關的處理以及理解,常見的任務有機器翻譯,語言生成等等。而這裡很有意思的一點是,如果給一個三四歲小孩看一張照片,他/她會用一個簡單的自然語言的句子去描述這張照片,也就是說我們人類天生的會將視覺與語言系統組合起來使用從研究的角度來講,計算機視覺試圖解決的任務也是越做越複雜. 基於這樣的觀察, 我們希望做一個系統或者演算法,能夠給一張圖片生成一個或者幾個自然語言句子的描述,這個就是所謂的image captioning,video captioning

讓機器“答問如流”:從視覺到語言|VALSE2018之四

讓機器“答問如流”:從視覺到語言|VALSE2018之四
再往前走一步,就是裡面有一個人機問答,或者是Visual Question Answering ,給你一張圖片,我問跟這個圖片相關的問題,我希望有一個演算法或者系統能夠正確回答這個問題,這就是Visual Question Answering。Vision和Language目前2個比較主流的問題,一個是Captioning,一個就是Visual Question Answering

讓機器“答問如流”:從視覺到語言|VALSE2018之四
這需要兩方面的技術: 一是影像理解image understanding,給你一個圖片,你得有一個演算法能夠理解這個圖片是什麼。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
同時還得理解自然語言,得有一個Language Modelling,能夠生成合乎語法規則的英文句子的描述。計算機視覺再往前做,就不再滿足預測單個或者多個的標籤。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
這裡給大家看一下幾個image captioning的例子,這是我們2016年做的工作,發表在CVPR上。下面大概提一下怎麼做的,最傳統的做法,裡面嵌入了兩方面的內容:一個是Image processing,需要一個卷積神經網路,然後來提卷積或者全連線層的影像特徵;另外一個是用一個遞迴神經網路,來得到語言模型,從而生成自然語言的描述,這就是做Image captioning

讓機器“答問如流”:從視覺到語言|VALSE2018之四
如果做VQA的話,跟image captioning差不多,唯一的差別是你的輸入會多一個自然語言的輸入,所以輸入會有兩部分,一部分是輸入這個圖片,同時需要輸入這個自然語言的問題,輸出就是RNN去生成回答,這還是一個編碼和解碼(encoder-decoder)的過程。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
我剛剛提到了我們做了新的資料集,為什麼要做這個資料集呢?這裡列出來一些主流的VQA資料集。下面我會具體講一下我們做了什麼事情,這個資料集已經發布了。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
我們最早兩年前開始做VQA的時候,當時有一個很簡單的想法。我們觀察到之前做的大部分的工作,都是給你一個圖片,用一個神經網路來提特徵,提完特徵之後這個圖片就扔掉了。那麼這裡面有一個我們覺得不是很合理的地方。首先一點,幾乎所有人都是用ImageNet資料集,訓練模型,這是一個分類模型的資料集。但是這裡我們的任務是做captioning或者VQA,不是做分類。 所以我們當時做了一個事情,去提一系列表示圖片內容的標籤或屬性。給一張圖片,可以先用一個預處理的演算法---我們用的是一個深度學習的多標籤預測網路---來提取跟圖片相關的標籤或屬性。然後可以把這個作為LSTM的輸入,來做captioning,或者Question Answering,得到更好的結果。

提到VQA,其實如果要真正徹底解決VQA,一定要解決QA,在自然語言處理NLP裡面,所有的研究問題,最終都可以轉成QA的問題。如果把QA解決了, 其實也就是解決了自然語言處理,大家知道NLP遠遠沒有解決,還有很多研究的問題。那麼Question Answering問題,和其他傳統的計算機視覺問題相比是一個非常大的挑戰。 要正確回答這個問題,你可能要依賴很多的知識(knowledge), 這個知識不一定在影像裡面。


讓機器“答問如流”:從視覺到語言|VALSE2018之四
這個例子是我2016年我們CVPR的另外一個工作。把影像屬性提出來後,我們可以用Internal textual representation自動生成一個句子來描述這個圖片。但是如果問一個問題,Why do they have umbrellas? 為什麼他們會打傘?這個問題答案本身不在這個影像裡,只理解這個影像是不能回答這個問題的。正確答案是shade,遮陽。這裡需要External knowledge,需要一些常識:“遮陽傘,在沙灘上就是為了遮擋太陽的”。怎樣找到相關的External knowledge來正確的回答這個問題,這個是需要解決的研究問題。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
這裡再給幾個更直接的例子。第一個圖片,如果給你這樣一個圖片,問一個問題,How many dogs are in this image?用一般的傳統的演算法很容易能夠回答出來,這裡有一條狗,如果你問How many cats are in this image?,這個回答也是很容易就得到。但是如果我問一個How many mammals are in this image?,這裡面有貓有狗還有鳥,有多少個哺乳動物? 你得了解:狗和貓是哺乳動物,但是鳥不是。這樣一個常識(common knowledge)不在影像裡。演算法怎麼才能找到這個相關知識來正確的回答它?這是要解決的一個研究問題。

讓機器“答問如流”:從視覺到語言|VALSE2018之四

CVPR 2016的論文裡,我們做了一個工作,怎麼樣把相關的知識找出來,主要使用的External knowledge是維基百科。維基百科擁有幾十萬的英文文章. 基本是思想是給你一張圖片,可以根據影像相關的屬性得到標籤,然後再用SPARQL(SPARQL是一個資料庫搜尋的語言),去搜DBpedia,DBpedia是Google做的基於維基百科的結構化資料庫。得到之後,我們再去找到相關的維基百科裡面的英文文章,得到相關的描述。最後要讓文字參與計算,我們用了Doc2vec,把它轉換成一個向量,然後再輸入給LSTM,然後再做神經網路的訓練。用這樣的方法把相關知識利用起來。這可能是當時第一個把External knowledge利用起來,應用在VQA領域的工作. 這個工作只是往前走了一小步,還遠遠不夠。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
侷限性

首先一點,其實我剛才也提到了,現在做VQA, 或者captioning,通常都是隻用了CNN的特徵,CNN的特徵大部分情況下是直接用的ImageNet訓練好的模型. 有工作做了對比,不對CNN特徵做 End to end training的話效果反而會好一些。但是不管做 End to end training也好,不做也好,都是隻用了CNN的特徵。但是VQA這個問題本身是給你一張圖片,有可能問你這裡邊有多少個目標,多少個物體,多少個狗,或者這個貓的顏色或者這個貓在幹什麼。使用者可能問的問題是五花八門的。你如果要正確回答他提出的任意的問題,需要解決多個計算機的任務。有可能是問你統計有多少目標,你要數數。有可能是問你裡面的動作是什麼,那就是動作識別。第二個問題是之前的這些方法---其實這也是Deep Learning受到批判的一方面---現在都是訓練一個編碼和解碼的模型,這是個黑盒,反正就是輸入資料,輸出資料. 我們不知道為什麼會生成這樣的回答,沒有解釋。所做 End to end training模型就是一個 圖片加上文字,然後到答案的highly nonlinear的mapping的過程。mapping函式就是你的遞迴神經網路. 但是在很多應用上,我們希望知道,為什麼會得出這樣的答案,希望知道背後的原因。這個其實是跟研究深度學習可解釋性是息息相關的。我們的目標是,有沒有可能在VQA這個問題上,把這兩個侷限性給部分的解決了。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
去年的CVPR我們做了一個工作,希望在這兩個侷限性上往前走一步,所以我們做了一個VQA-machine,基本的思想很簡單。在CV這個領域裡,其實有很多off the shelf的方法,可以做語義分割,可以做目標檢測等等。其實我們可以做這樣一個事情,給你一張圖片,把現有的演算法跑一遍. 然後我們希望有一個演算法能夠有一個機制很好的利用這些結果,以便正確回答問題。我們把這些計算機視覺演算法的輸出結果叫做Visual facts,triplets的方式呈現。

如果要正確的利用這樣的結果,這裡有幾個研究問題要解決,其中一個是,首先這些off the shelf的演算法的結果不一定百分之百是正確的,有可能是錯的。怎麼樣把錯的結果給過濾掉?第二個問題是因為我們產生這些結果的時候,我們並不知道使用者要問的問題是什麼. 我們需要在給出一個問題的時候,去挑選那些相關的facts,把那些不相關的仍掉,這裡面得有一個機制,去掉錯的或者噪聲,來選擇正確的facts來回答我的問題。在去年的CVPR論文裡,我們提出一個Co-attention Model來做這個事情。


讓機器“答問如流”:從視覺到語言|VALSE2018之四
下面講一下facts representation。用一些已經有的演算法去跑,得到一些所謂的事實,因為這個結果不一定完全是正確的。我們做了這樣五種可能的關係。這些事實用triplet來表示它.以這個_img,_scene,img_scn作為例子。給你這樣一張圖片,要你去看看圖片中有什麼動物,這樣一個事件,這種可以用場景識別的方法來得到。 場景識別有很多比較好的演算法。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
得到這些facts之後,我們需要有一個機制(我們提出了Co-attention model)來回答我的問題。這個Co-attention model有個三個輸入。如果說沒有中間的Fact(F),這種做法就是你有一個影像,你有一個問題,就是標準的編碼-解碼的模型。在我們這裡有三個輸入,Facts是一系列的triplet。我們用這樣一個Co-attention的模型對應每個fact來學一個權重,0表示這個F是沒用的,1表示這個F是應該利用起來回答我這個問題。

讓機器“答問如流”:從視覺到語言|VALSE2018之四

讓機器“答問如流”:從視覺到語言|VALSE2018之四
這些是我們實驗結果的展示。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
剛才說了,我們想解決的侷限,原來的編碼和解碼這種模型,其實它是一個黑匣子,不知道它為什麼會產生這樣一個回答。在這裡,因為我們有Co-attention model,每一個F上面都有一個權重,0到1之間的數字,我們可以排序一下,分數越高,表示你的LSTM生成回答的時候,它用到F.1就是完全用到. 這個分數就表示重要程度。舉個例子給你這樣的圖片,問一個問題“Who is leading the horse?”,回答用到的facts有“The man is holding the rope”,“ The man is with the horse”,“ The girl is on the horse”.最後產生答案man,這個答案是從R1,R2,R3推匯出來,可以給出一些解釋。

讓機器“答問如流”:從視覺到語言|VALSE2018之四
這裡還有幾個例子。 中間這個例子比較有意思,給你這樣一個圖片,How is the weather outside?看不到外面在下雨,正確的回答是raining,正在下雨。因為可以看到有人在打傘,所以猜在下雨. 用到的第一個Fact是The woman is with the umbrella,有人在打傘。其他的facts有This image contains the attribute of rainThis image contains the object of umbrella

讓機器“答問如流”:從視覺到語言|VALSE2018之四
CNN+RNN

這些工作做完之後,我們在利用External knowledge上面,其實已經往前走了幾步了,為了更好的做VQA這個問題,其實它還是有一些侷限性的。第一個是可擴充套件性,它不夠好,因為所有的知識都是從Questions and answers這樣的問題和回答裡面學出來的。 knowledge可以是非常大的。如果說要有一個編碼解碼這樣的模型,一個遞迴神經網路,把所有的人類所知道的這些知識全部包含進去,全部學出來的話,可能是非常難的問題。

還有就是推導過程,目前我們只能rank一下它用到的Facts的重要性,它其實沒有一個相關性,怎麼顯性的推理過程是沒有的。第一個可擴充套件性非常重要,我們有沒有可能把我們知道的那些knowledge base全部用上,來回答你的這個問題,把它用到這個VQA上面。其實這個在NLP裡面有很多相關的工作,不過做視覺的很少關注到,這個肯定是有可能的,也需要把knowledge base這些技術跟視覺技術結合起來。


讓機器“答問如流”:從視覺到語言|VALSE2018之四
第二個,我們希望做一些推理的工作。去年我們做了一個工作,在我剛才介紹的這些工作基礎上又做了一些改進。我們叫做Ahab。這是一個傳說當中的人物,這個方法本身跟之前的編碼解碼這樣的模型是完全不一樣的,我們不再做question到answer的mapping,我們為了把knowledge base利用起來,做了從圖片加問題,到一個knowledge base query的mapping。

讓機器“答問如流”:從視覺到語言|VALSE2018之四

第一步,給你一個圖片,我們去產生concept,這個其實是圖片理解的過程,得到了影像資訊之後,我們可以跟DBpedia對應起來。第二個模組其實是要理解輸入的問題,因為你有個自然語言,NLP描述了一個問題,我們對這個問題做刪選,然後做一個對映,得到這個對映之後,就得到了Query,去搜尋這個knowledge base。

讓機器“答問如流”:從視覺到語言|VALSE2018之四

讓機器“答問如流”:從視覺到語言|VALSE2018之四

讓機器“答問如流”:從視覺到語言|VALSE2018之四

讓機器“答問如流”:從視覺到語言|VALSE2018之四

讓機器“答問如流”:從視覺到語言|VALSE2018之四

這裡面有幾個例子,為了去生成這個query,我們只能回答有限型別的問題。例如,像第一個,Is the image ...“這裡面有沒有”。


讓機器“答問如流”:從視覺到語言|VALSE2018之四

讓機器“答問如流”:從視覺到語言|VALSE2018之四

剛才說到的VQA,因為回答的問題有限,所以在這個基礎上又更進了一步,我們希望把生成query,改用學習的方法得到,這樣的話可以不侷限於只能回答有限的問題。


讓機器“答問如流”:從視覺到語言|VALSE2018之四

最後提一下今年做的工作,是今年CVPR的一個oral paper,這個工作的背景是我們把GAN用到VQA上。讓這個演算法生成更像人說的這些自然語言,這裡給大家看幾個例子,這個人說的話,大概會比較長,會有更多的資訊在裡面,如果用機器來生成非常簡短。


讓機器“答問如流”:從視覺到語言|VALSE2018之四

這個是我們提的框架,這裡面加了鑑別器,這個鑑別器的任務就是來區分這是人說的話還是機器產生的,然後得到這個分數之後,再來指導這個generator,讓它生成更像人說的話,這裡面也會用到一個Co-attention model。在訓練的時候,我們會固定一個訓練好的判別器模型,把它當作一個reward function. 然後使用policy gradient,這樣在訓練生成器的時候,我們可以不提供ground truth,只通過sampling的方式,然後將sampling好的結果送入判別器,再通過reward計算policy gradient,來調節生成器,期望得到更好的sampling。


讓機器“答問如流”:從視覺到語言|VALSE2018之四
讓機器“答問如流”:從視覺到語言|VALSE2018之四

讓機器“答問如流”:從視覺到語言|VALSE2018之四

文中提到參考文獻下載連結:

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

相關文章