Niu Y., Tang K., Zhang H., Lu Z., Hua X. and Wen J. Counterfactual VQA: A Cause-Effect Look at Language Bias. CVPR, 2021.
概
利用因果分析消除VQA(Visual Question Answering (VQA))中的language bias.
主要內容

如上圖所示,
\(Q\): question;
\(V\): image;
\(K\): multi-modal knowledge;
\(A\): answer.
影響最后決策\(A\)有三種:
- \(Q \rightarrow A\), 直接受question影響, 比如模型對於所有的問圖中的香蕉是什么顏色的問題均回答"黃色", 顯然是不考慮圖片的影響(因為可能是綠色), 這種實際上就是language bias;
- \(V \rightarrow A\), 直接受圖片影響;
- \(V, Q \rightarrow K \rightarrow A\), 這里有一個mediator K, 即部分影響兼顧了\(Q, V\).
理想的VQA模型應該舍棄1中的影響, 在因果分析里頭, 這部分direct effect被稱之為natural direct effect (pure direct effect實際上):
\[NDE = A_{q, v^*, k*} - A_{q*, v^*, k^*}. \]
余下的是TIE (total indirect effect):
\[TIE = TE - NDE = A_{q, v, k} - A_{q, v^*, k^*}. \]
作者的思路是在inference的時候找到一個\(a\), 最大化TIE.
需要說明的是:
\[\mathrm{Pr}[A|do(Q, V, K)] =\mathrm{Pr}[A|Q, V]\\ \mathrm{Pr}[A|do(Q, V^*, K^*)] =\mathrm{Pr}[A|Q, V^*, K^*]\\ \]
這條件成立的原因單純是因為作者的假設中並沒有confounder, 實際上個人認為應當加一個\(V \rightarrow A\)的 arrow, 雖然這個並不影響上面的結論.
然后作者計算TIE也並不是針對\(A\), 而是\(A\)的score, \(Z=Z(Q=q, V=v, K=k)\).
實現

不同以往, 這一次可以顯示地設置\(v^*, k^*\)了:
\[Z_q = \mathcal{F}_Q(q), Z_v=\mathcal{F}_V (v), Z_k=\mathcal{F}_{VQ}(v, q), Z_{q, v, k} = h(Z_q, Z_v, Z_k). \]
特別的, 在\(q^*, v^*, k^*\)的情況下, 作者采取了如下的策略:
\[Z_q = \left \{ \begin{array}{ll} z_q = \mathcal{F}_Q(q), & \mathrm{if}\: Q= q \\ z_{q^*} = c, & \mathrm{if}\: Q=\empty. \end{array} \right . \]
\[Z_v = \left \{ \begin{array}{ll} z_v = \mathcal{F}_V(v), & \mathrm{if}\: V= v \\ z_{v^*} = c, & \mathrm{if}\: V=\empty. \end{array} \right . \]
\[Z_q = \left \{ \begin{array}{ll} z_k = \mathcal{F}_{VQ}(v,q), & \mathrm{if}\: V=v, Q = q \\ z_{k^*} = c, & \mathrm{if}\: V = \empty \: \mathrm{or}\: Q = \empty. \end{array} \right . \]
這里\(c\)為可學習的變量.
注: 作者在代碼中給出, \(c\)為一scalar, 也就是說實際上是:
\[z_* = c \cdot \mathbb{1}_{z}. \]
作者也在文中指出, 這是為了一個Uniform的假設.
注: 看起來, 似乎應該對不同的\(Z_*\)指定不同的\(c\), 但是實際上, 是不影響的. 這一點是因為在下面HM和SUM的處理方式中, 無論是\(c_1\cdot c_2\cdot c_3\)
還是\(c_1 + c_2 + c_3\)都等價於\(c\) (這里要感謝作者的答復).
有了上面的准備, 下面是\(h\)的構造, 因為我們需要把不同的特征融合起來, 作者給出了兩種方案:
- Harmonic (HM):
\[h(Z_q, Z_v, Z_k) = \log \frac{Z_{HM}}{1 + Z_{HM}}, Z_{HM} = \sigma(Z_q) \cdot \sigma(Z_v) \cdot \sigma(Z_k). \]
- SUM:
\[h(Z_q, Z_v, Z_k) = \log \sigma(Z_{SUM}), Z_{SUM} = Z_q + Z_v + Z_k. \]
在訓練的時候, 用的是如下的損失:
\[\mathcal{L}_{cls} = \mathcal{L}_{VQA}(v, q, a)+ \mathcal{L}_{QA}(q, a) + \mathcal{L}_{VA}(v, a). \]
以及, 為了訓練\(c\)(且僅用於訓練c),
\[\mathcal{L}_{kl} = \frac{1}{|A|}\sum_{a\in \mathcal{A}}-p(a|q,v,k)\log p(a|q, v^*,k^*), \]
其中\(p(a|q,v,k)=softmax(Z_{q,v, k})\).
雖然感覺可以直接通過最大化TIE來訓練c比較合理, 但是正如作者在附錄中給出的解釋一下, 這種情況明顯會導致\(c \rightarrow 0\)並導致\(Z_{q, v^*, k^*}\rightarrow -\infty\).
代碼
原文代碼