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\)有三种:

  1. \(Q \rightarrow A\), 直接受question影响, 比如模型对于所有的问图中的香蕉是什么颜色的问题均回答"黄色", 显然是不考虑图片的影响(因为可能是绿色), 这种实际上就是language bias;
  2. \(V \rightarrow A\), 直接受图片影响;
  3. \(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\)的构造, 因为我们需要把不同的特征融合起来, 作者给出了两种方案:

  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_{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\).

代码

原文代码

Counterfactual VQA: A Cause-Effect Look at Language Bias的更多相关文章

  1. 【论文笔记】用反事实推断方法缓解标题党内容对推荐系统的影响 Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue

    Click can be Cheating: Counterfactual Recommendation for Mitigating Clickbait Issue Authors: 王文杰,冯福利 ...

  2. 关于《阿里巴巴Java开发规约》插件的安装与使用

    一.安装 二.idea插件的安装与使用 https://github.com/alibaba/p3c/tree/master/idea-plugin#run-plugin Idea Plugin Pr ...

  3. OpenGL book list

      From: https://www.codeproject.com/Articles/771225/Learning-Modern-OpenGL   A little guide about mo ...

  4. 机器学习中模型泛化能力和过拟合现象(overfitting)的矛盾、以及其主要缓解方法正则化技术原理初探

    1. 偏差与方差 - 机器学习算法泛化性能分析 在一个项目中,我们通过设计和训练得到了一个model,该model的泛化可能很好,也可能不尽如人意,其背后的决定因素是什么呢?或者说我们可以从哪些方面去 ...

  5. The 11 advantages of Java -Why you choose this language

    Java is never just a language.There are lots of programming languages out there, and few of them mak ...

  6. The Django template language 阅读批注

    The Django template language About this document This document explains the language syntax of the D ...

  7. The Go Programming Language. Notes.

    Contents Tutorial Hello, World Command-Line Arguments Finding Duplicate Lines A Web Server Loose End ...

  8. A Language Modeling Approach to Predicting Reading Difficulty-paer

    Volume:Proceedings of the Human Language Technology Conference of the North American Chapter of the ...

  9. 函数式编程语言(Fuction Program Language)

    一.什么是函数式编程语言 函数式编程语言(functional progarm language)一类程序设计语言,是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型. ...

随机推荐

  1. LeetCode缺失的第一个正数

    LeetCode 缺失的第一个正数 题目描述 给你一个未排序的整数数组 nums,请你找出其中没有出现的最小的正整数. 进阶:你可以实现时间复杂度为 O(n)并且只使用常数级别额外空间的解决方案吗? ...

  2. Scala和Java的List集合互相转换

    import java.util import scala.collection.mutable /** * 集合互相转换 */ object ScalaToJava { def main(args: ...

  3. nodejs-Child Process模块

    JavaScript 标准参考教程(alpha) 草稿二:Node.js Child Process模块 GitHub TOP Child Process模块 来自<JavaScript 标准参 ...

  4. Sharding-JDBC 实现水平分库分表

    1.需求分析

  5. 容器之分类与各种测试(三)——queue

    queue是单端队列,但是在其实现上是使用的双端队列,所以在queue的实现上多用的是deque的方法.(只要用双端队列的一端只出数据,另一端只进数据即可从功能上实现单端队列)如下图 例程 #incl ...

  6. mysql与clickhouse的字段类型对应表

  7. Spring boot 数据源配置。

    配置文件 : spring boot  配置文件 有两种形式 ,一种是properties文件.一种是yml文件.案列使用properties文件. 数据源的默认配置 : spring boot 约定 ...

  8. mybatis的dao层和service层的编码设计的配置

    /** 书写pojo类------>dao接口------>resources下建立同路径的dao.xml------>配置applicationContext.xml文件 **/ ...

  9. 1945-祖安 say hello-String

    1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include<bits/stdc++.h> 3 char str[100][40]; 4 char s[10 ...

  10. 3、Linux的Redis安装

    Linux下安装redis 1.Redis下载 [Redis官网下载地址](https://redis.io/download)    进入官网进行下载 wget https://download.r ...