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. ceph安装部署

    环境准备 测试环境是4台虚拟机,所有机器都是刚刚安装好系统(minimal),只配置完网卡和主机名的centos7.7,每个osd增加一块磁盘,/dev/sdb ceph-admin ---- adm ...

  2. 【转载】HBase基本数据操作详解【完整版,绝对精品】

    转载自: http://blog.csdn.net/u010967382/article/details/37878701 概述 对于建表,和RDBMS类似,HBase也有namespace的概念,可 ...

  3. Angular @Input讲解及用法

    1.什么是@input @input的作用是定义模块输入,是用来让父级组件向子组件传递内容. 2.@input用法 首先在子组件中将需要传递给父组件的变量用@input()修饰 需要在子组件ts文件i ...

  4. k8s StatefulSet控制器-独立存储

    k8s-StatefulSet控制器-独立存储 1. StatefulSet控制器-独立存储 独享存储:StatefulSet的存储卷使用VolumeClaimTemplate创建,称为卷申请模板,当 ...

  5. 【XSS】再谈CSP内容安全策略

    再谈CSP内容安全策略 之前每次都是想的很浅,或者只是个理论派,事实证明就是得动手实践 参考 CSP的用法 官方文档 通过设置属性来告诉浏览器允许加载的资源数据来源.可通过Response响应头来设置 ...

  6. 如何在Swagger2或Swagger3中增加Json Web Token

    1. 前言 Swagger 3.0已经发布有一段时间了,作为一个非常有用的文档工具已经越来越多的项目在使用它.而JWT也是目前前后端分离最常用的安全技术.那么如何在Swagger 3.0 中添加JWT ...

  7. 哪里可以下载支付宝demo或者sdk

    http://club.alipay.com/read-htm-tid-9976972.html 这里有所有的demo和sdk包括移动产品的demo.在他的论坛里面呢 真心恶心啊.不放到主页.

  8. HTML样式 背景

    当浏览器读到一个样式表,就会按照这个格式表来对文档进行格式化.有以下三种方式来插入样式表: 1.外部样式表 当样式需要用到很多页面的时候,外部样式是理想的选择.使用外部样式表,就可以听过更改一个文件来 ...

  9. CountDownLatch原理

    正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行.在Java并发中,countdownlatch的概念是一 ...

  10. 【Linux】【Services】【Docker】网络

    容器的网络模型: closed container: 仅有一个接口:loopback 不参与网络通信,仅适用于无须网络通信的应用场景,例如备份.程序调试等: --net none bridged co ...