Counterfactual VQA: A Cause-Effect Look at Language Bias

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.

主要内容

image-20210407210124578

如上图所示,
(Q): question;
(V): image;
(K): multi-modal knowledge;
(A): answer.

影响最后决策(A)有三种:

  1. (Q ightarrow A), 直接受question影响, 比如模型对于所有的问图中的香蕉是什么颜色的问题均回答"黄色", 显然是不考虑图片的影响(因为可能是绿色), 这种实际上就是language bias;
  2. (V ightarrow A), 直接受图片影响;
  3. (V, Q ightarrow K ightarrow 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 ightarrow A)的 arrow, 虽然这个并不影响上面的结论.

然后作者计算TIE也并不是针对(A), 而是(A)的score, (Z=Z(Q=q, V=v, K=k)).

实现

image-20210409085129305

不同以往, 这一次可以显示地设置(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 { egin{array}{ll} z_q = mathcal{F}_Q(q), & mathrm{if}: Q= q \ z_{q^*} = c, & mathrm{if}: Q=empty. end{array} ight . ]

[Z_v = left { egin{array}{ll} z_v = mathcal{F}_V(v), & mathrm{if}: V= v \ z_{v^*} = c, & mathrm{if}: V=empty. end{array} ight . ]

[Z_q = left { egin{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} ight . ]

这里(c)为可学习的变量.

注: 作者在代码中给出, (c)为一scalar, 也就是说实际上是:

[z_* = c cdot mathbb{1}_{z}. ]

作者也在文中指出, 这是为了一个Uniform的假设.

注: 看起来, 似乎应该对不同的(Z_*)指定不同的(c), 但是实际上, 是不影响的. 这一点是因为在下面HM和SUM的处理方式中, 无论是(c_1cdot c_2cdot c_3)
还是(c_1 + c_2 + c_3)都等价于(c) (这里要感谢作者的答复).

有了上面的准备, 下面是(h)的构造, 因为我们需要把不同的特征融合起来, 作者给出了两种方案:

  1. 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). ]

  1. 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_{ain 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 ightarrow 0)并导致(Z_{q, v^*, k^*} ightarrow -infty).

代码

原文代码

原文地址:https://www.cnblogs.com/MTandHJ/p/14635817.html