最前沿:視覺推理(Visual Reasoning),神經網路也可以有邏輯

1 前言

在我們的上一篇文章 最前沿:百家爭鳴的Meta Learning/Learning to learn 中,我們談到了星際2 需要AI具備極好的邏輯推理能力才行,那麼實際上邏輯推理這個問題學術界一直有研究,但是進展緩慢。吳恩達Andrew Ng也說過當前的深度學習技術比較適合那些對人來說可以快速解答的問題,比如說圖像識別,我們不用怎麼思考,語音識別,我們也不用怎麼思考。但是吳恩達這麼說也不完全對,比如說AlphaGo。

AlphaGo有邏輯,會推理,能思考嗎?

我們都知道人類下圍棋是需要思考的,那麼一個不是採用窮舉辦法的AlphaGo能夠100%碾壓人類最頂尖棋手,我們也可以認為AlphaGo是有邏輯,會推理,能思考的,只不過它的思考模式和人類完全不一樣。我們人類棋手下每一步棋的思考過程都是可以被記錄的,但是對於AlphaGo,我們完全不知道它到底在想些什麼才做出了那樣的判斷。我們只能認為AlphaGo在將圍棋的盤面特徵輸入到卷積神經網路CNN的每一層的過程中完成了所謂的邏輯推理。然而我們更願意稱之為直覺Intuition,這也是deepmind官方的看法,也就是說對於AlphaGo來說,它只要憑感覺就能下棋,只不過這種感覺非常准而已。但是,

直覺可以直接等同於邏輯推理嗎?

這很令人懷疑。顯然,從我們人類的角度出發,我們很清楚邏輯推理是一種怎樣的過程,它很大程度上是有步驟的。我們常常經過多步的思考,才做出一個決定。因此,既然讓計算機能夠推理是實現通用人工智慧的必由之路,那麼是不是可以構造一個簡單一點的,但是又必須有嚴格的推理才能解答的問題,從而來更好的研究人工智慧推理的問題。

視覺推理Visual Reasoning就是這樣一個應運而生的問題!

2 視覺推理與CLEVR數據集

視覺推理在這裡主要是限定在VQA(Visual Question Answering)的問題上,也就是讓計算機看一副圖,然後給出一個問題,讓其回答。相比傳統的VQA問題,視覺推理問題的要求是要讓問題難度提升,必須經過推理才能回答。CLEVR數據集[1]就是這樣一個專門針對視覺推理而誕生的數據集。CLEVER數據集是Li Fei-Fei團隊做出的成果,不得不說Li Fei-Fei總是特別有遠見的通過為大家貢獻數據集來引領人工智慧的發展。CLEVER數據集是怎樣的呢?

從上圖可以看到,CLEVR數據集的圖都是一些簡單的幾何體,但是問題卻複雜的多。比如說上圖的第一個問題:大物體和金屬球的數量是一樣的嗎?為了能回答這個問題,我們首先需要找出大的物體還有金屬球,然後要分別計算各自的數量,最後判斷兩者的數量是不是相等,也就是為了回答這麼一個問題,我們需要三步的推理。那麼深度神經網路如果也要能做出正確的判斷,我們可以認為這個神經網路經過了推理的過程,而這正是我們想要解決的。

與此同時,在傳統的VQA問題上能夠work的神經網路模型(CNN+LSTM)在CLEVR數據集上的表現並不好,基本上在50%的正確率,約等於瞎猜,這基本說明一般的神經網路模型並沒有辦法通過End-to-End端到端的訓練來具備推理能力,為了在CLEVR數據集上取得好的結果,我們必須尋找新的神經網路模型。

CLEVR數據集除了提供一般的輸入輸出樣本外,還提供了人為設計的邏輯推理過程的標籤。比如說某一個問題需要三種推理過程,那麼就給予三個標籤。提供這些標籤是為了研究人員能夠基於此去探索深度學習實現邏輯推理的方法,最理想的解決方案還是要不依賴於這些標籤。

3 視覺推理最前沿的相關論文

[1] Johnson J, Hariharan B, van der Maaten L, et al. CLEVR: A diagnostic dataset for compositional language and elementary visual reasoning. arXiv preprint arXiv:1612.06890, 2016.

[2] Santoro A, Raposo D, Barrett D G T, et al. A simple neural network module for relational reasoning. arXiv preprint arXiv:1706.01427, 2017.

[3] Hu R, Andreas J, Rohrbach M, et al. Learning to reason: End-to-end module networks for visual question answering. arXiv preprint arXiv:1704.05526, 2017.

[4] Johnson J, Hariharan B, van der Maaten L, et al. Inferring and Executing Programs for Visual Reasoning. arXiv preprint arXiv:1705.03633, 2017.

[5] Perez E, de Vries H, Strub F, et al. Learning Visual Reasoning Without Strong Priors. arXiv preprint arXiv:1707.03017, 2017.

CLEVER數據集是去年12月提出的,經過半年多的研究,出現了多篇論文在該數據集上取得了很不錯的成果,提出了各種全新的idea。這些論文在上面列出了,下面我們就來分析一下論文的研究思路。

4 讓神經網路生成並執行程序來實現視覺推理

首先要說的文章自然是Li Fei-Fei組的文章了:Inferring and Executing Programs for Visual Reasoning,這篇文章記得剛出來的時候引起了較大的影響,因為之前沒人在VQA上這麼做過。

這篇文章到底做了件什麼變態的事情呢?簡單的說就是傳統的CNN-LSTM模型,我們是端到端訓練的,輸入圖像,問題,然後輸出答案,直接監督學習。但是這個模型不具備推理能力。所以,這篇文章就非常Naive的想:那就強制讓神經網路有邏輯好了。既然我們知道CLEVR數據集上的問題是有限的,並且中間所需的邏輯推理也就是數數顏色,材質,對比數量等等幾類,那麼就把每一種推理作為一個Program程序,先讓神經網路生成這些Program,然後再用一個神經網路來執行這個Program就行了。這確實是一個蠻酷的idea,只不過這個idea要work是有很大的前提條件的,那就是:

這麼做完全是基於擁有推理的標籤數據,簡直就是針對CLEVER數據集弄的。

不過這個idea還是很酷啊,看圖:

簡要的說明一下這個模型,首先是一個Program Generator,就是一個Seq-to-Seq的LSTM網路,輸入問題,輸出預測的小程序,也就是要回答這個問題所需要的邏輯推理。接下來,圖像那一邊輸入CNN提取特徵,將小程序和圖像特徵放到Execution Engine也就是程序執行的地方,執行程序,最後輸出到分類器輸出答案。

可以看到,程序生成在有Label標籤的情況下是比較容易的,直接監督學習就好了。關鍵是後面的程序執行引擎要怎麼工作呢?

Execution Engine使用了Neural Module Networks!

Neural Module Networks是加州伯克利大學的Dan Klein團隊提出的,實際上之後要講的論文[3]也是基於這個方法來做的。Neural Module Networks顧名思義,就是將神經網路模塊化,比如上圖中將不同的小程序分別用一個神經網路來表示,然後根據輸入的小程序,按照模塊順序串起來,輸入到不同模塊的神經網路中依次執行。在這篇文章中,每一個模塊都是一個ResNet,並且每一個模塊輸出相同維度的特徵Feature信息。

那麼怎麼來訓練Execution Engine呢?

雖然Execution Engine內每一次輸入的模塊組合方式都不一樣,但是都是端到端連接的,因此可以直接使用梯度下降訓練。從這裡也可以看到,這是一個完全的動態圖,使用PyTorch的話就非常容易處理了。事實上文章放出的代碼就是使用PyTorch來實現的。

在文章中,Program Generator和Execution Engine是先各自分開用監督學習訓練,然後使用REINFORCE聯合起來進一步增強。目前的VQA都已經進入到Reinforcement Learning增強學習的階段,加了RL的方法在結果上都可以大幅度提升!

最後說一下論文的實驗結果,竟然超過了人類!

雖然說利用了推理標籤這種有點Cheating的手段,但是直接超過人類讓人不好接受呀,只能說CLEVR數據集還是太簡單了點吧

簡單評價一下這篇論文,雖然額外使用了推理監督數據,但是經過訓練的神經網路實現了邏輯的可見性,也就是我們知道神經網路想的邏輯,如上圖所示。由此,其實我們可以很明確的說:

神經網路是可以具備邏輯的,而神經網路不同層的輸入輸出就是計算機的「思考」過程。

因此,說AlphaGo的神經網路有邏輯還是說的通的。

這篇論文可以說是一小步,如果能不實現額外的監督數據就能讓神經網路有邏輯那才是更好的,畢竟這種監督數據也不是那麼好弄的。

5 使用端到端的模塊化神經網路來實現視覺推理

這篇論文也就是加州伯克利的Learning to reason: End-to-end module networks for visual question answering。這篇論文因為同樣是基於Neural Module Networks, 所以在方法論上和上一篇論文是非常相似的:

可以說前面的layout prediction和上一篇的程序生成並沒有區別,是一樣的,只是這裡在構造網路(其實也小程序了)使用了Attention機制。使用Attention的目的實際上是為每個小程序(或者這裡叫做函數指定參數)。注意上一篇論文是直接輸出帶參數的小程序的,這篇論文也就是將函數和參數分開生成,然後進入到Network Builder來構建整個模塊化網路。剩下的訓練也就差不多了。

這篇和上一篇論文在方法上曲藝同工,從實現的結果上看比上一篇差了些,可能是各種細節原因造成,這就不是非常清楚了。

6 使用關係網路Relational Network實現視覺推理

這篇是DeepMind的:A simple neural network module for relational reasoning

這篇論文也很酷,首先的論文的名稱很酷,叫一個簡單的神經網路模塊來做關係推理,那麼實際上確實是弄的挺簡單的,如下圖:

論文最核心的想法就是把CNN提出的feature特徵信息當做圖像中的物體來看待,然後不同物體兩兩組合再加上問題的LSTM輸出特徵,連在一起經過MLP輸出一個所謂的關係feature,然後把所有的關係加在一起經過MLP輸出結果!所以,這個模型真的超級簡單!

但是它Work呀!

簡單的評價就是:採用cnn的feature作為所謂的object竟然也能work,挺神奇的,這也說明cnn確實提取出了object的特徵。RN能work說明神經網路可以任意找出兩個對象之間的某種潛在關係,而這種關係可以稱之為推理。

最值得注意的是這篇論文使用RN的網路結構,但是沒有使用前兩篇文章的額外監督數據,效果卻要更好!這顯然說明這篇論文的效果其實是遠大於前兩篇的。

前兩篇論文有點像說直接跟神經網路說有這些邏輯推理,讓神經網路去學,而這篇論文的思想是限定神經網路的結構,讓它不得不去學習圖片中不同物體的潛在關係。

但是,推理不只是關係呀,這樣做依然還是有針對CLEVR數據集的嫌疑。我覺得只要把圖片的場景變得複雜,甚至只要讓推理的分類增大到上百類,上面這些方法都要go die!

7 使用Conditional Batch Normalization

這篇論文也就是這個月剛剛出爐的Learning Visual Reasoning Without Strong Priors,竟然拿到了state-of-the-art,而且只用輸入輸出數據訓練:

真的是很讓人吃驚,這是怎麼做到的呢?

這篇論文的idea非常特別,竟然讓神經網路去預測Conditional Batch Normalization的兩個參數。通過調整不同的參數,我們知道會使CBN對於卷積層的處理髮生變化,可以放大或者縮小不同卷積層的權重,甚至扔掉一些卷積層。

整體說一下這篇論文的model,也還是分成問題部分和圖像部分。問題輸入到GRU中然後輸出一個特徵信息e,然後用e去估計不同的ResBlock的CBN參數:

直接就是一個線性組合。

然後是圖像輸入部分,先用一個使用ImageNet預訓練的ResNet提取出14x14的特徵信息,然後輸入到ResBlock中,每個ResBlock如上圖所示包含了2個CBN。接下來就是把ResBlock全部連接起來,使用端到端訓練。

為什麼這樣做能Work?

論文中對CBN的參數與推理的關係,進行了可視化:

然後很神奇的發現CBN的參數和不同層級的推理是直接相關的,也就是說CBN確實自己學到了不同層次的推理。

但是,為什麼通過改變CBN的不同參數對Feature Map的不同處理就能學出邏輯推理呢?論文裡面也並沒有明確的說明。我覺得上一篇論文的Relational Network學出一些邏輯是可以理解的,但是使用CBN並且是串聯的這樣也直接能學出邏輯推理能力還是很讓人詫異的。這裡歡迎大神來討論一下。

8 小結

分析完上面的幾篇前沿論文,我們可以發現研究思路可以分成兩種,一種是強制讓神經網路學習推理邏輯(有監督的),另一種是強制限制神經網路結構來實現無監督的學習推理邏輯。顯然,第二種更強一點,但是第二種從上面看來有點針對數據集,能否構造一個更通用的神經網路結構來實現推理呢?可以拭目以待,至少從這裡的分析我們可以肯定神經網路是可以有邏輯的,這是邁向「思考」的一小步啊!

ps:由於作者水平有限,並不專門研究VQA,恐有疏漏或謬誤,望批評指正!


推薦閱讀:

人工智慧成兵家必爭之地,阿里雲成為馬雲的必殺技?
人工智慧體系架構-入門人工智慧必看
AI的未來--深度學習和貝葉斯的進擊
盤點:2017金融科技十大關鍵詞
竟然還能後空翻,這真的還是機器人嗎?來看看波士頓動力最新的Atlas

TAG:深度学习DeepLearning | 人工智能 | 科技 |