閱讀論文:《Compositional Attention Networks for Machine Reasoning》

star發表於2022-04-10

標題:機器推理的合成注意網路
來源:ICLR 2018 https://arxiv.org/abs/1803.03067
程式碼:https://github.com/stanfordnlp/mac-network
作者筆記:https://cs.stanford.edu/people/dorarad/mac/blog.html

一、問題提出

雖然當前的深度神經網路模型在學習”輸入和輸出之間的直接對映“方面非常有效,其深度、規模和統計特性使得它們能夠處理嘈雜和多樣化的資料,但也限制了它們的可解釋性,無法展示出一個連貫且透明的“思維過程”來得到他們的預測。

深度學習系統缺少推理能力,例如下例中,問題需要分步解決——從一個物件遍歷到相關物件,迭代地朝著最終解決方案前進。

image-20220410173634733

建立連貫的多步推理模型對於完成理解任務至關重要,作者文中提到了前人提出的一些將符號結構和神經模組起來的方法,例如:神經模組網路,其存在一定的問題,必須依賴於外部提供的結構化表示和功能程式,並且需要相對複雜的多階段強化學習訓練方案。這些模型結構的剛性和對特定操作模組的使用削弱了它們的魯棒性和泛化能力。

為了在端到端的神經網路方法的通用性和魯棒性 與 支援更加明確和結構化推理 的需求之間取得平衡,作者提出了MAC 網路,這是一種端到端的可微推理架構,用來順序執行具體推理任務。

二、主要思想

給定一個知識庫K(對於VQA,是一個影像)和一個任務描述q(對於VQA,是一個問題),MAC網路將問題分解為一系列推理步驟,每一個推理步驟使用一個MAC單元。

其組成主要包括三部分:

  • 輸入單元
  • 堆疊的MAC單元(執行推理任務)
  • 輸出單元

image-20220410182719953

Part1:輸入單元

處理輸入的圖片和問題:

圖片:使用預訓練的ResNet提取特徵,獲取中間層conv4特徵,並字尾CNN得到圖片每一個小塊的特徵表示,最終組合得到知識庫:

\[K^{H\times W\times d}=\{k_{h,w}^d|_{h,w=1,1}^{H,W}\},H=W=14 \]

文字:將字串轉換為單詞嵌入序列,並通過d維Bi-LSTM網路提取特徵:

一系列隱藏狀態:\(cw_1,...,cw_s\)

問題特徵表示:最後的隱藏狀態的拼接\(\overleftarrow{cw_1},\overrightarrow{cw_s}\),輸入MAC單元時需要進行線性變換:\(q_i={W_i}^{d\times2d}q+b_i^d\)

Part2:MAC單元

MAC單元(Memory、Attention、Composition)是一個迴圈單元,被設計的類似於GRU或LSTM。

設計理念

MAC網路內部的設計作者借鑑了計算機體系結構的知識,將控制和記憶體分離,通過序列執行一系列指令來操作:

Step1:控制器獲取指令並進行解碼;

Step2:按照指令的指示,從記憶體中讀取資訊;

Step3:執行指令,選擇地寫入相應的記憶體,並考慮處理的資訊進行下一步迴圈。

組成:

基於此,MAC單元顯式地將記憶體與控制分離,內部保持雙重隱藏狀態:維度為\(d\)的控制狀態\(c_i\)和記憶體狀態\(m_i\),並由三個串聯工作的操作單元組成,以執行一個推理步驟:

  • 控制單元Control:在每一步選擇性地處理問題詞序列中的一些部分來計算推理操作(這一步計算注意力來得到單詞序列上的概率分佈,表示該步驟對每個詞的關注程度),並更新控制狀態來表示單元要執行的推理操作。
  • 讀取單元Read:在控制狀態的指導下,從知識庫中提取相關資訊(在圖片中選擇性關注部分割槽域,同樣使用注意力分佈來表示提取到的資訊)
  • 寫單元Write:將提取到的新資訊和前一步記憶體狀態整合在一起,儲存中間結果並更新記憶體狀態——該狀態為當前推理獲得的結果。

image-20220410183931369

初始化:初始化學習引數\(c_0\)\(m_0\)

控制單元

image-20220410184317587

輸入:問題詞序列\(cw_1,...,cw_s\),問題特徵\(q_i\),前一步的控制狀態\(c_{i-1}\)

Step1:拼接問題特徵表示\(q_i\)和先前的控制狀態\(c_{i-1}\)並進行線性變換(獲取相關知識);

Step2:基於注意力生成推理操作\(c_i\):首先計算\(cq_i\)和每個問題詞特徵的相似度,之後通過線性變換和softmax函式獲得問題詞序列上的注意力分佈,最後基於該分佈對詞進行加權求和生成新的推理操作\(c_i\)

補充:後續該注意力可以用於視覺化並解釋控制狀態內容,提高模型的透明度。

讀取單元

image-20220410185121773

輸入:知識庫\(k_{h,w}\),前一步的記憶體狀態 \(m_{i-1}\),當前步驟的控制狀態\(m_i\)

Step1:通過將知識庫元素和前一步的記憶體狀態進行線性變換並對應位置相乘,提取模型從之前推理步驟中獲取到的中間資訊\(I_{i,h,w}\)

Step2:拼接知識庫元素和中間結果。考慮到一些推理過程需要將獨立的事實組合在一起得到答案,該步驟將允許模型推理考慮與之前的中間結果不直接相關的新資訊。

Step3:計算控制狀態\(c_i\)和中間資訊\(I_{i,h,w}^`\)的相似度,並通過softmax產生知識庫元素上的注意力分佈,最終加權求和得到讀取單元的檢索資訊\(r_i\)

視覺化注意力:

image-20220410191553032

例子:問題“what color is the matte thing to the right of the sphere in front of the tiny blue block”,首先找到藍色小塊並更新\(m_1\),之後控制單元關注到”the sphere in front of“,找到前面的球體並更新\(m_2\),最後關注到"the matte thing to the right of",找到問題的結果:紫色圓柱。

寫單元:

image-20220410192045396

輸入:前一步的記憶體狀態 \(m_{i-1}\),讀取單元的檢索資訊\(r_i\),當前步驟的控制狀態\(m_i\)

主要用於基於推理指令,整合先前推理得到的記憶體狀態和該步得到的檢索資訊

Step1:拼接\(r_i\)\(m_{i-1}\)並進行線性變換,得到更新的記憶體狀態\(m_i^{info}\)

可選操作:

Step2:注意力機制:為了支援非順序推理,允許單元綜合先前的所有記憶體狀態進行更新。計算當前指令\(c_i\)和先前指令序列\(c_1,...,c_{i-1}\)的相關性並生成注意力分佈\(sa_{ij}\)。利用該概率分佈對前序記憶體狀態進行加權求和,並組合\(m_i^{info}\)得到更新的記憶體狀態\(m_i^`\)

Step3:記憶門控:允許模型根據給定的問題動態調整推理過程長度。基於指令可選的更新記憶體狀態\(m_i\)

Part3:輸出單元

基於問題特徵表示\(q\)和最終的儲存狀態\(m_p\),利用雙層全連線softmax分類器獲得最終的答案預測。

image-20220410193449019

三、實驗

實驗:CLEVR資料集

結果:

image-20220410193524939

可解釋性:

image-20220410193625509

計數:

image-20220410193755766

四、總結

1、保持問題和影像的表徵空間之間的嚴格分離(它們只能通過可解釋的離散分佈進行互動),極大地增強了網路的可泛化性,並提高了其透明度。

2、不同於模組網路,MAC是端到端的完全可微網路,無需額外的監督資料,通過MAC單元的堆疊順序執行推理才做,不需要依靠語法樹或者其他設計和部署模組集合。此外,與深度神經網路方法相比,MAC具有更好的泛化效能、更高的計算效率和更透明的關係推理能力。

相關文章