Counterfactual VQA: A Cause-Effect Look at Language Bias

  • Post author:
  • Post category:其他



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

Q






Q





: question;




V

V






V





: image;




K

K






K





: multi-modal knowledge;




A

A






A





: answer.

影响最后决策



A

A






A





有三种:




  1. Q

    A

    Q \rightarrow A






    Q













    A





    , 直接受question影响, 比如模型对于所有的问图中的香蕉是什么颜色的问题均回答”黄色”, 显然是不考虑图片的影响(因为可能是绿色), 这种实际上就是language bias;




  2. V

    A

    V \rightarrow A






    V













    A





    , 直接受图片影响;




  3. 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


)





.



实现

image-20210409085129305

不同以往, 这一次可以显示地设置



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





的构造, 因为我们需要把不同的特征融合起来, 作者给出了两种方案:

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


















    )


    .





  2. 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

























































.



代码


原文代码



版权声明:本文为MTandHJ原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。