概
利用因果分析消除VQA(Visual Question Answering (VQA))中的language bias.
主要内容
如上图所示,
Q
Q
Q
: question;
V
V
V
: image;
K
K
K
: multi-modal knowledge;
A
A
A
: answer.
影响最后决策
A
A
A
有三种:
-
Q→
A
Q \rightarrow A
Q
→
A
, 直接受question影响, 比如模型对于所有的问图中的香蕉是什么颜色的问题均回答”黄色”, 显然是不考虑图片的影响(因为可能是绿色), 这种实际上就是language bias; -
V→
A
V \rightarrow A
V
→
A
, 直接受图片影响; -
V,
Q
→
K
→
A
V, Q \rightarrow K \rightarrow A
V
,
Q
→
K
→
A
, 这里有一个mediator K, 即部分影响兼顾了
Q,
V
Q, V
Q
,
V
.
理想的VQA模型应该舍弃1中的影响, 在因果分析里头, 这部分direct effect被称之为natural direct effect (pure direct effect实际上):
N
D
E
=
A
q
,
v
∗
,
k
∗
−
A
q
∗
,
v
∗
,
k
∗
.
NDE = A_{q, v^*, k*} – A_{q*, v^*, k^*}.
N
D
E
=
A
q
,
v
∗
,
k
∗
−
A
q
∗
,
v
∗
,
k
∗
.
余下的是TIE (total indirect effect):
T
I
E
=
T
E
−
N
D
E
=
A
q
,
v
,
k
−
A
q
,
v
∗
,
k
∗
.
TIE = TE – NDE = A_{q, v, k} – A_{q, v^*, k^*}.
T
I
E
=
T
E
−
N
D
E
=
A
q
,
v
,
k
−
A
q
,
v
∗
,
k
∗
.
作者的思路是在inference的时候找到一个
a
a
a
, 最大化TIE.
需要说明的是:
P
r
[
A
∣
d
o
(
Q
,
V
,
K
)
]
=
P
r
[
A
∣
Q
,
V
]
P
r
[
A
∣
d
o
(
Q
,
V
∗
,
K
∗
)
]
=
P
r
[
A
∣
Q
,
V
∗
,
K
∗
]
\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^*]\\
P
r
[
A
∣
d
o
(
Q
,
V
,
K
)
]
=
P
r
[
A
∣
Q
,
V
]
P
r
[
A
∣
d
o
(
Q
,
V
∗
,
K
∗
)
]
=
P
r
[
A
∣
Q
,
V
∗
,
K
∗
]
这条件成立的原因单纯是因为作者的假设中并没有confounder, 实际上个人认为应当加一个
V
→
A
V \rightarrow A
V
→
A
的 arrow, 虽然这个并不影响上面的结论.
然后作者计算TIE也并不是针对
A
A
A
, 而是
A
A
A
的score,
Z
=
Z
(
Q
=
q
,
V
=
v
,
K
=
k
)
Z=Z(Q=q, V=v, K=k)
Z
=
Z
(
Q
=
q
,
V
=
v
,
K
=
k
)
.
实现
不同以往, 这一次可以显示地设置
v
∗
,
k
∗
v^*, k^*
v
∗
,
k
∗
了:
Z
q
=
F
Q
(
q
)
,
Z
v
=
F
V
(
v
)
,
Z
k
=
F
V
Q
(
v
,
q
)
,
Z
q
,
v
,
k
=
h
(
Z
q
,
Z
v
,
Z
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).
Z
q
=
F
Q
(
q
)
,
Z
v
=
F
V
(
v
)
,
Z
k
=
F
V
Q
(
v
,
q
)
,
Z
q
,
v
,
k
=
h
(
Z
q
,
Z
v
,
Z
k
)
.
特别的, 在
q
∗
,
v
∗
,
k
∗
q^*, v^*, k^*
q
∗
,
v
∗
,
k
∗
的情况下, 作者采取了如下的策略:
Z
q
=
{
z
q
=
F
Q
(
q
)
,
i
f
Q
=
q
z
q
∗
=
c
,
i
f
Q
=
∅
.
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
q
=
{
z
q
=
F
Q
(
q
)
,
z
q
∗
=
c
,
i
f
Q
=
q
i
f
Q
=
∅
.
Z
v
=
{
z
v
=
F
V
(
v
)
,
i
f
V
=
v
z
v
∗
=
c
,
i
f
V
=
∅
.
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
v
=
{
z
v
=
F
V
(
v
)
,
z
v
∗
=
c
,
i
f
V
=
v
i
f
V
=
∅
.
Z
q
=
{
z
k
=
F
V
Q
(
v
,
q
)
,
i
f
V
=
v
,
Q
=
q
z
k
∗
=
c
,
i
f
V
=
∅
o
r
Q
=
∅
.
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 .
Z
q
=
{
z
k
=
F
V
Q
(
v
,
q
)
,
z
k
∗
=
c
,
i
f
V
=
v
,
Q
=
q
i
f
V
=
∅
o
r
Q
=
∅
.
这里
c
c
c
为可学习的变量.
注: 作者在代码中给出,
c
c
c
为一scalar, 也就是说实际上是:
z
∗
=
c
⋅
1
z
.
z_* = c \cdot \mathbb{1}_{z}.
z
∗
=
c
⋅
1
z
.
作者也在文中指出, 这是为了一个Uniform的假设.
注: 看起来, 似乎应该对不同的
Z
∗
Z_*
Z
∗
指定不同的
c
c
c
, 但是实际上, 是不影响的. 这一点是因为在下面HM和SUM的处理方式中, 无论是
c
1
⋅
c
2
⋅
c
3
c_1\cdot c_2\cdot c_3
c
1
⋅
c
2
⋅
c
3
还是
c
1
+
c
2
+
c
3
c_1 + c_2 + c_3
c
1
+
c
2
+
c
3
都等价于
c
c
c
(这里要感谢作者的答复).
有了上面的准备, 下面是
h
h
h
的构造, 因为我们需要把不同的特征融合起来, 作者给出了两种方案:
-
Harmonic (HM):
h(
Z
q
,
Z
v
,
Z
k
)
=
log
Z
H
M
1
+
Z
H
M
,
Z
H
M
=
σ
(
Z
q
)
⋅
σ
(
Z
v
)
⋅
σ
(
Z
k
)
.
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).
h
(
Z
q
,
Z
v
,
Z
k
)
=
lo
g
1
+
Z
H
M
Z
H
M
,
Z
H
M
=
σ
(
Z
q
)
⋅
σ
(
Z
v
)
⋅
σ
(
Z
k
)
.
-
SUM:
h(
Z
q
,
Z
v
,
Z
k
)
=
log
σ
(
Z
S
U
M
)
,
Z
S
U
M
=
Z
q
+
Z
v
+
Z
k
.
h(Z_q, Z_v, Z_k) = \log \sigma(Z_{SUM}), Z_{SUM} = Z_q + Z_v + Z_k.
h
(
Z
q
,
Z
v
,
Z
k
)
=
lo
g
σ
(
Z
S
U
M
)
,
Z
S
U
M
=
Z
q
+
Z
v
+
Z
k
.
在训练的时候, 用的是如下的损失:
L
c
l
s
=
L
V
Q
A
(
v
,
q
,
a
)
+
L
Q
A
(
q
,
a
)
+
L
V
A
(
v
,
a
)
.
\mathcal{L}_{cls} = \mathcal{L}_{VQA}(v, q, a)+ \mathcal{L}_{QA}(q, a) + \mathcal{L}_{VA}(v, a).
L
c
l
s
=
L
V
Q
A
(
v
,
q
,
a
)
+
L
Q
A
(
q
,
a
)
+
L
V
A
(
v
,
a
)
.
以及, 为了训练
c
c
c
(且仅用于训练c),
L
k
l
=
1
∣
A
∣
∑
a
∈
A
−
p
(
a
∣
q
,
v
,
k
)
log
p
(
a
∣
q
,
v
∗
,
k
∗
)
,
\mathcal{L}_{kl} = \frac{1}{|A|}\sum_{a\in \mathcal{A}}-p(a|q,v,k)\log p(a|q, v^*,k^*),
L
k
l
=
∣
A
∣
1
a
∈
A
∑
−
p
(
a
∣
q
,
v
,
k
)
lo
g
p
(
a
∣
q
,
v
∗
,
k
∗
)
,
其中
p
(
a
∣
q
,
v
,
k
)
=
s
o
f
t
m
a
x
(
Z
q
,
v
,
k
)
p(a|q,v,k)=softmax(Z_{q,v, k})
p
(
a
∣
q
,
v
,
k
)
=
s
o
f
t
m
a
x
(
Z
q
,
v
,
k
)
.
虽然感觉可以直接通过最大化TIE来训练c比较合理, 但是正如作者在附录中给出的解释一下, 这种情况明显会导致
c
→
0
c \rightarrow 0
c
→
0
并导致
Z
q
,
v
∗
,
k
∗
→
−
∞
Z_{q, v^*, k^*}\rightarrow -\infty
Z
q
,
v
∗
,
k
∗
→
−
∞
.
代码