標題:可解釋的視覺問題回答的概率神經符號模型
來源:ICML 2019https://proceedings.mlr.press/v97/vedantam19a.html
代碼:https://github.com/kdexd/probnmn-clevr
一、問題提出
neural-symbolic模型是神經和符號網路模型的結合,
神經網路引數的靈活可以挖掘到跟多的資訊,但是缺乏解釋性;
符號網路缺乏靈活的學習能力,但支持很強的泛化和系統性,且更加直觀可解釋,
本文從NMN出發,結合neural和program,深入探討模型的推理能力,
對于VQA的image i 和question x, 生成一個程式program z, 利用program制定推理程序,使用神經網路進行具體運算,

例子:該例子中,基于問題,program首先從場景中過濾出cylinder和cube兩個關鍵詞,應用filter[cube]算子并關聯[left],之后和filter[cylinder]一起預測答案,

在構建program的程序中,將會動態產生一組引數θ,每一個引數代表一個模塊,

本文的內容是在神經符號模型中引入了概率公式,通過這樣的運算式,期望該模型滿足可解釋推理模型的一些自然需求,
二、主要思想
問題形式化定義:
輸入影像:\(i\in\ R^{U\times V}\)
輸入問題:\(x=\left(x_1,...,x_t\right),\ \ x_t\in\ X\)
回答:\(a\in\ A\)
前綴序列化程式program:\(z=(z_1,...,z_t)\in\ Z\),其中給定符號\(z\in\ Z\),有一個對應的神經網路(后續可以動態的實體化神經網路)和引數\(\theta_z\)(給定z,這些都是確定的),——該步定義類同于NMN神經模塊網路中的模塊
采用的資料集:
\[D=\{x^n,z^n\}\cup\{x^m,a^m,i^m\} \]\(\{x^m,a^m,i^m\}\):VQA資料集
\(\{x^n,z^n\}\):指引資料集,需要人工標注(為了探索模型的學習效果,期望N<<M,即使用很少的注釋program得到很好的學習效果)
概率圖模型:
分為兩個步驟:Generative Model和Inference Network

- Generative Model
給定影像i,建立\(p\left(x,z,a\middle|\ i\right)\)的模型,即關于問題、回答和program關系的模型,
模型分解為:
\[p\left(x,z,a\middle|\ i\right)=p\left(z\right)p\left(x\middle|\ z\right)p\left(a\middle|\ z,i\right) \]步驟:首先從program z的先驗分布中采樣一個program z,并通過該program z生成問題x;之后基于program z和輸入的圖片i,生成問題的答案,(此步驟中,z生成了問題x,但x不參與生成答案,)
其中,對program z里面的每一個項設定一種小的神經單元,動態地實體化神經網路的引數\(\theta_z\)(給定z,這些都是確定的),——該步類同于NMN
從而:
\(p\left(a\middle|\ i,z\right)\)被化為\(p\left(a\middle|\ i,\theta_z\right)\),其中\(\theta_z=\{{\theta_{z_t}}\}_{t=1}^T\),
從而:
\[p\left(x,z,a\middle|\ i\right)=p\left(z\right)p\left(x\middle|\ z\right)p\left(a\middle|\ i,z\right)=p\left(z\right)p\left(x\middle|\ z\right)p\left(a\middle|\ i,\theta_z\right) \]\(p\left(z\right)\)用最大似然法對關于program的封閉資料集進行預訓練,并在之后保持固定,本文引數化為LSTM網路;
\(p_\sigma(x|z)\)同樣引數化為LSTM網路;
\(\theta_z\)被引數化為CNN網路,將圖片或者注意力作為輸入,提取圖中的感興趣區域,
- Inference Network
推理程序,如圖中虛線所示,首先通過問題生成program z,之后結合圖片和生成的program,生成問題的答案,
文中不再使用NMN中parser+layout的結構,而是使用一個推理網路\(q_\emptyset(z|x)\)來映射問題到潛在的結構化程式program,
優點:融合了概率公式的NMN模型(Prob-NMN)可以帶來更好的半監督學習和推理能力,
引數學習:
文中提出了一種三階段優化演算法:
- Question Coding
- Module Training
- Joint Training
- Question Coding
首先基于\(\{x^n,z^n\}\)以及\(x^m\),學習一個好的在潛空間z編碼問題x的方法,即優化概率公式\(p_\sigma(x|z)\)、\(q_\emptyset(z|x)\) ,
目標:\(argmax\ \sum_{n}{log\ p\left(x^n\middle|\ z^n\right)}+\sum_{m}{log\ p\left(z^m\right)}\)
需要補充知識點:變分推斷和攤銷推理網路
參考知乎:
https://zhuanlan.zhihu.com/p/402237111
https://zhuanlan.zhihu.com/p/385341342
Step1:
先處理第二項\(\sum_{m}{log\ p\left(z^m\right)}\),利用攤銷推理網路\(q_\emptyset\)優化證據下界( Evidence Lower Bound (ELBO)):

利用β < 1來衡量公式(1)中KL散度 \(D_{KL}(q(z|x)||p(z))\)的貢獻,
該約束條件下,\(u_{qc}\)項沒有捕獲program的語意,即沒有將其與特定的問題相關,所以還需要利用\(\{x^n,z^n\}\)學習問題和program之間的聯系,并為問題x提供易讀的解釋,
Step2:
處理第一項\(\mathcal{L}=\sum_{n}{log\ p_\sigma\left(x^n\middle|\ z^n\right)+log\ p\left(z^n\right)}\),設序列z中第t個時間步的序列\(z_t\)分布為引數\(\pi_t\)的范疇,設\(\mathrm{\Pi}=\{\pi_t\}_{t=1}^T\)表示整個\(\pi_t\)上的聯合隨機變數,,按照相同的方法優化組合\(\mathcal{L}=\sum_{n}{log\ p_\sigma\left(x^n\middle|\ z^n\right)+log\ p\left(z^n\right)}\)的下界:

在實踐中,由于后驗\(q(\mathrm{\Pi}|z^n,x^n)\)會使得KL散度趨于∞,所以公式(2)中得到的下界沒有意義,故改為對\(\mathcal{L}\)進行近似:

- Module Training
該階段對模塊進行優化,即優化引數\(\theta_Z\),最大化:

目標是找到模塊引數的最佳初始化值,
例子:模塊find [green] 的初始化引數\(\theta_{find\left[green\right]}\)將會約束該模塊的執行達到預期的效果(即將圖片中綠色部分加上注意力),
- Joint Training
利用全部資料集\(D=x^n,z^n\cup x^m,a^m,i^m\),綜合學習概率圖模型的所有引數:\(\{\theta_Z,\sigma,\varphi\}\),
目標:最大化\(\mathcal{L}+U_f\),其中\(U_f=\sum_{m=1}^{M}{log\ p\left(x^m,a^m\middle|\ i^m\right)}\),\(\mathcal{L}=\sum_{n=1}^{N}{log\ p\left(x^n,z^n\right)}\),
按照步驟(1)類同的方法推導\(U_f\)的變分下界:

綜合上述推導中的式(4)和式(3),將KL散度改寫并加入期望中(參照知乎文章),并對相應項加入比例因子,得到最終的優化目標:

由于期望是關于\(\varphi\)不可微的,所以使用了一種REINFORCE估計器來獲取\(\varphi\)的梯度估計,
最終的演算法流程:

三、實驗
資料集:SHAPES CLEVR
結果:


不同比例監督資料下的效果:

生成program的一致性和靈敏性:

四、總結
文章作業:
- 模型為半監督學習,利用少量標記資料學習program的表示,
- 使用了概率模型,提升了模型的性能,使得生成的program 更加直接、易讀、被理解,
- 用了反向推理的思路,通過給定答案(可能與事實不符),生成得到這個答案的program,提高了模型的解釋性能,
- 三階段訓練策略:先預學習部分引數,便于聯合學習獲取更好的表現,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/457601.html
標籤:其他
上一篇:論文閱讀:《Deep Compositional Question Answering with Neural Module Networks》
