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. eclipse上点击open Perspective找不到java EE的解决办法

    原因:没有安装java ee等插件 Help--->Install New software---->work  with中选择All Available  Sites---->  ...

  2. Kafka 集群安装部署

    2.1 安装部署 2.1.1 集群规划 192.168.1.102 192.168.1.103 192.168.1.104 zookeeper zookeeper zookeeper kafka ka ...

  3. AI作曲的一个点子

    通常的AI作曲都是通过拆分音乐为几个声道, 然后再把各个声道拆成音符去分析. 我忽然之间有个想法,是否可以继续拆分下去. 音符就是一些有规则的高低电平,这样把音符拆成电平. 一定会带来巨大的运算,但如 ...

  4. 多线程异步操作导致异步线程获取不到主线程的request信息

    org.springframework.web.context.request.RequestContextHolderorg.springframework.web.context.request. ...

  5. 【Linux】【Services】【NetFileSystem】Samba

    1. 简介 1.1. 背景:case is initiative by 某windows无良人事,需求是需要一整块4T的硬盘,由于ESXi5最大支持一块盘是2T大小,而且不可以使用windows动态卷 ...

  6. JS - 事件常用

    问:什么是事件? 答:JS创建动态页面,可以被JS侦测到的行为.网页中的每个元素都可以产生某些可以触发JS函数的事件.比如说,当用户点击按钮时,就发生一个鼠标单击(onclick)事件,需要浏览器做出 ...

  7. Apache Log4j 2 报高危漏洞,CODING 联手腾讯安全护卫软件安全

    导语 12 月 9 日晚间,Apache Log4j 2 发现了远程代码执行漏洞,恶意使用者可以通过该漏洞在目标服务器上执行任意代码,危害极大. 腾讯安全第一时间将该漏洞收录至腾讯安全漏洞特征库中,C ...

  8. podman wsl2在windows重启后出错

    1. error joining network namespace for container 如果没有先停止容器就重启windows,极大概率就会出现这个问题 解决方法 先停止停止的容器再启动已退 ...

  9. Simple iPhone Keychain Access

    Simple iPhone Keychain Access Mar 29th, 2010 9:14 pm The keychain is about the only place that an iP ...

  10. 【论文笔记】SamWalker: Social Recommendation with Informative Sampling Strategy

    SamWalker: Social Recommendation with Informative Sampling Strategy Authors: Jiawei Chen, Can Wang, ...