1. 程式人生 > 其它 >論文閱讀:《Deep Compositional Question Answering with Neural Module Networks》

論文閱讀:《Deep Compositional Question Answering with Neural Module Networks》

標題:神經模組網路
來源:CVPR 2016 https://openaccess.thecvf.com/content_cvpr_2016/html/Andreas_Neural_Module_Networks_CVPR_2016_paper.html
程式碼:https://github.com/jacobandreas/nmn2

一、問題提出

增強了網路的可解釋性

VQA模型的分類:

(1)巨型網路 (monolithic network):傳統的神經網路,以CNN、RNN等為基礎,設計一個固定的網路架構處理 VQA 任務,比如CNN+LSTM 再連一個全連線分類器;

(2)神經模組網路(Neural modular network ,NMN),該類方法認為問題是一系列基礎模組的組合(如find, relate, count等),這些基礎模組的功能可以用子網路來擬合,回答不同的問題需要選擇不同模組網路來組合成一個大網路,因此網路結構是視問題而定的、動態的。相比於巨型網路,這種動態組合的網路更加直觀、可解釋,中間過程也更加透明。

本文首次提出了Neural Module Networks神經模組網路(NMN),不是像傳統的神經網路模型一樣是一個整體,它是由多個模組化網路組合而成。根據VQA資料集中每個questions定製一個網路模型。也就是說NMN模型的網路是根據question的語言結構動態生成的。

二、主要思想

2.1 主要步驟:
Step1:使用語義分析器parser分析每個問題,並結合分析獲取模組佈局layout(包括回答問題所需要的基本計算模組和之間的關係)。
Setp2:組合生成針對特定任務的模組,回答問題。模組內部需要人工設計,模組之間傳遞的資訊可能是原始影象特徵、注意力或分類決策。NMN中的所有模組都是獨立的和可組合的,這使得計算對於每個問題例項是不同的,並且在訓練期間可能不會被觀察到。
該圖中首先生成一個關注狗的注意力(attend模組),它將其輸出傳遞給一個位置分類器(classify模組)。
Step3:最終答案使用了一個迴圈網路(LSTM)

來讀取問題輸入,並結合NMN的輸出綜合得到分類結果。

2.2 問題定義:

三元組(w, x, y)
w:自然語言問題
x:圖片
y:答案

模型由模組m的集合完全確定,每個模組都具有相關引數\(\theta_m\)和一個從字串對映到網路的網路佈局layout的預測器P。給定\(\left(w,x\right)\),模型基於P(w)例項化一個網路,傳遞x (也可能是w)作為輸入,並在標籤上獲得一個分佈(對於VQA任務,要求輸出模組是一個分類器)。因此,模型最終編碼一個預測分佈\(p(y|w,x;\theta)\)

2.3 具體實現:

Part1:模組定義
模組操作三種基本資料型別:影象、未歸一化的注意力和標籤。
形式:

TYPE [INSTANCE] (ARG1,...)

TYPE:高階模組型別(比如注意、分類等)。
INSTANCE:考慮的模型的特定例項—例如,attend[red]定位紅色的東西,而attend[dog]定位狗。權重可以在型別級別和例項級別上共享。

模組型別包括:

注意模組attend[c]:將輸入影象中的每個位置與權重向量(每個c不同)卷積,以產生一個熱力圖或未歸一化的注意。

再注意力模組re-attend[c]:帶校正非線性(ReLUs)的多層感知器,執行一個從一個注意到另一個注意的全連線對映。例如,re-attend[above]應該將注意力轉移到最活躍的區域,而re-attend[no]應該將注意力從活躍區域移開。

組合模組combine[c]:將兩個注意力合併成一個注意力。例如,combine[and]應該只在兩個輸入都啟用的區域啟用,而combine[except]應該在第一個輸入啟用而第二個輸入不啟用的區域啟用。

測量模組measure[c]:單獨關注並通過標籤將其對映到一個分佈。由於模組之間傳遞的注意是未歸一化的,所以measure適用於評估被檢測物件是否存在,或者計算物件的集合。

分類模組classify[c]:需要注意輸入影象,並將它們對映到標籤上的分佈。

Part2:從字串到模組架構
Parsing:
用Stanford Parser解析每個問題,抽取句子中物件之間的語法關係,並生成抽象的句子表示;此外還執行基本的語義化,例如把kites變成kite、were變成be,減少了模組例項的稀疏性。
例如:what color is the trunk 轉化為 color(truck)
Layout:
基於特定的任務,將符號表示轉化為模組網路結構。
對映:
葉子節點 對應 attend模組(使用注意力)
內部節點 對應 (根據它們的度)re-attend模組或combine模組
根節點 對應 回答是/否問題的measure模組或者classify模組
具體每個模組的例項化不相同:
例如:attend[cat]和attend[trunck]引數不一樣

神經模組網路結構統計:

NMN模組視覺化例項:

NMN模組泛化

除了提供句子,通過parser和layout得到模組網路,還可以直接提供類似於sql的查詢語句,精確地指定需求:

Part3:
預測:包括LSTM網路和NMN模組網路兩部分
LSTM網路允許我們在資料中建模潛在的語法規則。其次,它允許我們捕捉語義規律。
例如:what is flying和what are flying兩個問題,is和are都會被轉化為be,所以最終轉化為:what(fly);但它們的答案應該分別是kite和kites。

LSTM模組和NMN模組都輸出預測答案集上的分佈。模型的最終預測結果是這兩種概率分佈的幾何平均值。

最後,LSTM模組和NMN模組是聯合進行訓練的。

三、實驗

資料集:VQA資料集 SHAPE資料集

結果:

視覺化:

正確案例:

錯誤案例:

四、總結

主要貢獻:

1、提出了神經模組網路NMN,為學習神經模組集合提供了一個通用的框架,這些神經模組集合可以動態地組合成任意深度網路。

2、NMN在回答物件或者屬性問題上表現出色。

3、提出了SHAPE資料集。