[CVPR 2021] Counterfactual VQA: A Cause-Effect Look at Language Bias

안녕하세요. 이번에는 제가 준비하고 있는 논문의 시초라고 생각되는 논문을 가져와봤습니다. 저는 요즘 language bias에 굉장히 관심이 많아서요. 이 논문이 어떻게 RUBi를 확장했고 그래서 얼마나 bias를 줄였는지 차근차근 이야기해보고자 합니다.

<Introduction>

VQA (Visual Question Answering)은 앞선 연구들을 통해서 multimodal reasoning 보다는 일시적인 언어적 상관관계에 의존한다는 것을 발견하였습니다. (이 부분은 제가 예전에 리뷰한 RUBi를 참고하셔도 좋을 것 같습니다) 예를 들어서 설명해보겠습니다. 스포츠와 관련된 질문에 단순히 “tennis”라고 대답하거나 “Do you see a …”라는 질문에 “yes”라고 답하는 것만으로도 VQA v1.0 데이터셋에서는 약 40%, 90%의 정확도를 얻을 수 있습니다. 결과적으로 VQA 모델은 training data에 대해서 언어적 선험지식을 단순히 암기한다면, VQA-CP 데이터셋과 같은 training set와 test set이 다른 분포 및 선험지식을 가지는 경우, 잘 일반화하지 못할 것입니다.

그래서 이를 해결하기 위해서는 annotation을 추가하거나 데이터를 증강하여서 training data를 강화하는 방법이 해결책으로 있는데요. 방금 언급한 것처럼 시작적 및 텍스트적 설명을 추가하거나 counterfactual한 training sample을 생성하여 문제를 해결할 수 있습니다. 여기서 counterfactual라는 단어가 처음 등장하는데 이를 시작으로 논문에서는 계속해서 등장하는 단어여서 한번 짚고 넘어가고자 합니다. counterfactual은 직역하여서 ‘반사실적’이라고 이라고 말할 수 있습니다. counterfactual training sample은 반사실적 학습 샘플이라고 직역할 수 있겠네요. 그런데 반사실적이라는것이 과연 무엇을 의미하는 걸까요? counterfactual Explanations에 대해서 잘 설명해 놓은 글이 있어 가져와 봤습니다.

반사실적 설명은 “X가 발생하지 않았다면 Y가 발생하지 않았을 것”이라는 형태로 인과관계를 설명합니다. 예를 들어, “내가 이 뜨거운 커피를 한 모금 마시지 않았다면, 나는 혀를 태우지 않았을 거예요. 이벤트 Y는 제가 혀를 데었다는 것입니다. 왜냐하면 X는 뜨거운 커피를 마셨기 때문입니다. 반사실적 사고를 하는 것은 관찰된 사실들과 모순되는 가상의 현실을 상상하는 것을 요구합니다(예: 뜨거운 커피를 마시지 않은 세계). 따라서 “반사실적”이라는 이름이 필요합니다. 반사실적인 사고 능력은 우리 인간들을 다른 동물들에 비해 매우 똑똑하게 만듭니다.

위의 글을 읽고 대충 counterfactual(반사실적)이 무엇인지 감이 오셨을까요? 사실 저는 저것을 보고도 그래서 counterfactual training sample이 뭔데 라는 생각을 하였습니다. 그래서 더 직접적인 예를 가져와봤습니다.

Figure2를 보시면 좀더 직접적으로 counterfactual하다는 것이 무엇인지 이해하실 수 있습니다. V-CSS를 보시면, original에서 visual data인 image에 마스킹을 하여 사실(original)과 반대인 sample, 즉 counterfactual한 sample을 만들었습니다. Q-CSS의 경우도 마찬가지 입니다. original에서 text data인 text에 마스킹을 하여 counterfactual한 sample을 만들어냈습니다. 이렇게 사실(original)과 반대가 되는 sample을 만드는 것을 counterfactual sample generation이라고 생각하셔도 됩니다. 이제 조금 더 감이 오셨을 것이라 생각이 됩니다.

다시 돌아와서, 언어 편향을 완화하기 위한 해결책은 데이터 증강 말고도 다른 방법도 있습니다. 바로 training set에서 언어적 선험지식을 학습하기 위해서 별도의 question 전용 branch 두어서 학습을 진행하는 것인데요. 전용 branch를 이용하여 학습한 후에 test 때는 branch를 제거하여 인퍼런스 하는데요. 그런데 논문의 저자는 이러한 방법이 “bad” language bias를 제거하지만 “good” language context 또한 제거한다고 주장하였습니다. 여기서 말하는 bad language bias는 바나나가 들어오면 무조건 yellow라고 생각하도록 하는 bias를 말하고 good langiuage context 같은 경우 질문에 제대로 답하기 위해서 “what color”와 같은 정답을 유도할 수 있는 context에 집중하는 것을 말합니다.

논문의 저자는 새로운 counterfactual inference framework인 CF-VQA를 제안하여 langugae bias를 줄입니다. 아래의 그림인 Figure 1을 통해서 그 작동 원리를 파악할 수 있는데요.

Conventional VQA는 “What will answer A be, if machine hears question Q, sees image V , and extracts the multi-modal knowledge K?”를 의미하는데 일반적으로 이미지와 텍스트가 주어졌을 때 multi-modal knowledge인 K를 추출하여 답 A를 도출해내는 것을 의미합니다. Counterfactual VQA는 “What would A be, if machine hears Q, but had not extracted K or seen V ?”로 K와 V를 이용하지 않고 Q만을 이용하여 답 A를 도출해내는 것이라고 생각하면 되는데요. 간략하게 CF-VQA는 Conventional VQA에서 도출한 답에서 Counterfactual VQA에서 도출한 답을 뺸 값을 답으로 inference 하는 것을 CF-VQA라고 말할 수 있습니다. 물론 위의 말은 간단하게 설명했을 때 이렇게 말할 수 있는거고 뒤에서 더 디테일하게 설명드리도록 하겠습니다.

그리하여서 논문에서의 contribution은 아래와 같습니다.

  1. our counterfactual inference framework is the first to for- mulate language bias in VQA as causal effects.
  2. we provide a novel causality-based interpretation for recent de- biasing VQA works
  3. Third, our cause-effect look is general and suitable for different baseline VQA architec- tures and fusion strategies.

<Preliminaries>

본격적으로 method를 설명하기 전에 graph가 뭐고 notation이 뭐고를 먼저 설명드리고자 합니다. 본 논문에서는 Causal graph라는 것이 등장하는데요. 인과 관계를 그래프로 그린 것을 말하고, 방향성을 가진 비순환 그래프를 의히마는데요. G = {V, E}로 나타낼 수 있습니다. 여기서 V는 변수들의 집합을 의미하고 E는 인과 관계를 의미합니다. 이를 그림으로 보이면 아래와 같이 볼 수 있습니다.

Figure 2(a)가 3가지 변수로 구성된 causal graph를 볼 수 있습니다. 만약 변수 X가 변수 Y에 direct effect를 미쳤다면 X→Y라고 표현할 수 있습니다. 만약 변수 X가 변수 Y에 mediator M을 통해 indirect effect를 미쳤다면 X→M→Y라고 포현할 수 있습니다.

위의 그래프를 counterfactual notation을 통해서 식으로 표현할 수 있는데요. X에 x가 설정되고, M에 m이 설정되었을 때의 Y를 아래의 식으로 표현할 수 있습니다.

여기서 $m=M_x = M(X=x)$로 표현할 수 있습니다. Counterfactual가 들어온다면 $Y_x,M_{x^}$로 표현할 수 있는데 식으로 표현하면 $Y(X=x, M=M(X=x^)$가 되겠죠. Figure2(b)를 보시면 graph로 어떻게 표현될 수 있는지 확인할 수 있습니다.

논문에서는 Causal effect라는 단어를 통해서 인과적 효과를 말하는데, 인과적 효과는 두 가지 다른 treatment가 주어졌을 때 동일한 것에 대한 두가지 잠재적 결과를 비교한 것입니다. 조금 더 디테일하게 설명하도록 하겠습니다. X=x인 상황을 “under treatment condiation”이라고 가정합시다. $X=x^*$인 상황을 “under no-treatment condition”이라고 가정합시다. 이렇가 가정하는 것이 이해가 잘 가지 않으실 수도 있는데, 예를 들어서 약물이 질병에 미치는 영향을 추정한다고 해봅시다. X = x는 약물을 복용한 경우를 나타내고, $X=x^*$는 약뮬을 복용하지 않은 경우를 나타냅니다. 이 상황에서 treamtment $X=x, X=x^*$에 대해서 총 영향 즉, Total effect(TE)를 구하는 식은 아래와 같습니다.

Total effect는 natural direct effect(NDE)와 indirect effect(TIE)로 나눌 수 있는데요. NDE는 M이 차단된 상태에서 X가 Y에 미치는 효과를 나타내며 아래의 식으로 표현할 수 있습니다.

여기서 TIE는 TE와 NDE를 뺸 값으로 아래와 같이 구할 수 있습니다.

여기까지 말이 길었습니다. 이제는 위의 내용을 VQA에 어떻게 적용할 수 있는지, 그리고 TE, NDE, TIE가 VQA에서 뭘 의미하는지 보여드리고자 합니다.

<Cause-Effect Look at VQA>

위에서처럼 간단하게 notation을 하자면, A={a}는 이미지 V=v, 질문 Q=q가 주어졌을 때의 정답 후보값이라고 생각하시면 되겠습니다.

VQA의 causal graph는 Figure3(a)를 보시면 그림으로 확인할 수 있습니다. direct effect를 가지는 single modal impact는 V → A, Q → A로 표현할 수 있으며, multi-modal knowledge k를 통해 indirect effect를 가지는 multi-modal impact는 V,Q→K→A로 표현할 수 있습니다.

식(1)처럼 표시한 counterfactual notation은 아래와 같이 표현할 수 있는데요. V에 green banana와 같은 이미지 v가 들어왔을 때, Q에 “What color are the banana?”와 같은 질문 q가 들어왔을 때의 answer a의 score를 표현한 것입니다.

위를 간단히 표현하여서 $Y_{v,q} = Y(V=v, Q=q)$로 표현할 수 있습니다. 또한 K도 $K_{v,q}=K(V=v,Q=q)$로 표현할 수 있습니다.

Figure3(a)를 식으로 표현하면 아래와 같이 표현할 수 있는데요, 여기서 $ k=K_{v,q} $ 입니다.

자 그럼 Preliminaries에서 등장한 TE, NDE, TIE를 구해볼까요? A=a에 대해서 V=v, Q=q의 total effect(TE)는 식(7)을 통해서 구할 수 있습니다.

여기서 $k^=K_{v^, q^}$입니다. 여기서 $v^,q^*$는 no-treatment condition인 즉, v와 q가 주어지지 않은 상태를 의미합니다.

이를 토대로 NDE (Nature Direct Effect)를 구해볼까요? NDE는 식(8)을 통해서 구할 수 있습니다.

NDE를 자세히 보시면 앞에 q만 차이가 있고 $v^, k^$는 고정인 것을 알 수 있는데요. 나머지는 고정하고 q에 대한 변화의 차이를 확인함으로서 question, 즉 language에 대한 영향력을 측정할 수 있는 것입니다. 그러면 총 영향력에 language 영향력을 뺀 것이 저희가 구하고자 하는 값이겠네요? 이를 TIE라고 말할 수 있습니다. TIE는 앞에서 말씀드린 것처럼 TE – NDE로 구할 수 있겠죠. 식(9)를 통해 구할 수 있습니다.

TE에서 NDE를 뺀 것이 language bias를 제거한 값을 의미하기 때문에 답을 고를때는 TIE가 가장 높은 것을 고르게 됩니다.

<Implementation>

이제 위의 이론적인 부분을 어떻게 구현할 것인지 말해 봅시다. 식(6)의 Z_{q,v,k}는 neural model인 F_Q, F_V, F_{VQ}와 fusion function인 h로 파라미터화할 수 있습니다.

여기서 $F_Q$는 langugae-only branch (Q→A)를, $F_V$는 vision-only branch인 (V→Q)를, $F_{VQ}$는 vision-language branch (V,Q→K→A)를 의미합니다. 최종적으로 나온 output은 h를 통해서 최종 score인 $Z_{q,v,k}$를 얻습니다. 앞에서 $v^*,q^*$는 no-treatment condition인 즉, v와 q가 주어지지 않은 상태를 의미한다고 말씀드렸잖아요? 그래서 본 논문에서는 이를 $V=v^*=∅, Q=q^*=∅$로 표현합니다. 식으로 더 살펴보겠습니다.

데이터가 들어갔을 때, 들어가지 않았을 때를 식(11),(12),(13)으로 표현하였습니다. 여기서 c는 learnable parameter로 uniform distribution을 가지도록 설정하였습니다. 이렇게 설정한 이유는 ablation study에서 말씀드리고자 합니다.

fusion 방법 같은 경우 두가지가 있는데 Harmoic(HM), SUM 입니다. 두개 방법은 식(14)와 식(15)로 표현될 수 있습니다

학습의 경우 cross-entropy loss를 사용하여 $Z_{q,v,k}, Z_q, Z_v$의 loss를 최소화합니다. 식으로 표현하면 식(16)으로 표현할 수 있습니다.

또한 추가로 loss로 사용한 것이 Kullback-Leibler divergence 입니다. TE와 NDE의 분포를 비슷하게 맞춰주기 위해서 사용하였는데 논문의 저자는 이를 통해 안정적인 학습이 가능할 수 있다고 말하였습니다. 이는 식(17)을 통해서 확인할 수 있습니다.

여기서 $p(a|q,v,k)=softmax(Z_{q,v,k}), p(a|q,v^*,k^*)=softmax(Z_{q,v^*,k^*})$ 입니다. 그리하여 최종적인 loss는 아래와 같이 표현할 수 있습니다.

inference의 경우 TIE를 구하여 진행하는데요. TIE는 위에서 언급한 것처럼 TE – NDE로 구할 수 있습니다.

<Experiments>

Table1을 통해서 CF-VQA의 성능을 다른 SOTA 모델들과 비교하여 확인할 수 있는데요. 유명한 모델인 RUBi보다 확실히 성능이 높게 나온 것을 확인할 수 있습니다. 여기에서 굉장히 다양한 방법론들과 비교한 것을 볼 수 있는데요. 다른 CVPR 2023 VQA 논문도 이와 비슷한 형태로 리포팅한 것을 확인할 수 있었는데 정말 많은 모델과 비교하여 성능을 리포팅한다는 것을 느낄 수 있었던 Table 이었습니다.

Table 2에서는 base로 삼은 모델에 CF-VQA를 접목시켰을 때의 성능 변화를 확인한 것인데요. 모든 base모델에서 성능이 향상되었음을 확인할 수 있었습니다.

아까 c를 왜 uniform distribution으로 가져갔는지는 실험 파트에서 설명드리겠다고 말씀드렸는데 바로 이 Table 입니다. c를 random으로 가져갔을 때, prior 즉, 이미 language prior를 알고 있을 때, uniform으로 주었을 때를 비교한 것인데 확실히 uniform이 Num 외에서 성능이 높게 나온 것을 확인할 수 있습니다. 이때문에 안정적으로 성능을 가져가기 위해서 저자들은 unifrom distribution으로 가져갔다고 합니다.

이 논문에서 재미있었던 실험은 Table5인데요. 이미 language bias 제거 방법론인 RUBi에다가 또 CF-VQA를 접목해도 성능이 오른다는 것을 보여주는 것이 재미있었습니다.


이렇게 논문 리뷰를 마쳐봤습니다. 점점 멀티모달의 매력에 더 빠져드는 것 같습니다. 재밌게 읽어주셨으면 감사하겠습니다. 그럼 이만 마무리하도록 하겠습니다.

Author: 김 주연

6 thoughts on “[CVPR 2021] Counterfactual VQA: A Cause-Effect Look at Language Bias

  1. 김주연 연구원님, 좋은 리뷰 감사합니다. 세미나때도 들었지만 음.. 익숙지 않은 분야라 그런지 어렵네요. 간단한 질문 남기겠습니다. 첨부해주신 Table들의 지표는 average accuracy인것 같은데, VQA에서의 accuracy는 정확히 무엇을 의미하나요? 질문에 대한 정확한 답만을 도출해야 맞는 것으로 하는건가요? 답변 주시면 감사하겠습니다!

    1. 안녕하세요. 댓글 감사합니다.

      네 맞습니다. VQA는 일종의 answer를 맞추는 classification task라고 이해하시면 편하실 것 같습니다.

      감사합니다.

  2. 안녕하세요 김주연 연구원님 좋은 리뷰 감사합니다.

    loss 부분에서 궁금한 점이 있습니다. L_cls같은 경우에는 vqa, va, qa세 branch 각각의 CE를 합산한 것으로 구성되어 있는 것 같은데 각 branch의 가중치가 동등하게 들어가는 것인지 궁금합니다. 별도의 가중치를 적용한 실험은 없나요?

    또한 L_kl은 TE와 NDE를 유사하게 만드는 방향으로 학습되는 것으로 이해하였는데, 그렇다면 V+Q의 effect가 Q의 effect가 서로 가까워지는 방향으로 학습되는 것이며 이는 text의 effect를 증가시키게 되는 것이 아닐지 의문이 듭니다. 혹시 L_kl 유뮤에 따른 ablation은 없는지도 궁금합니다.

    감사합니다.

    1. 안녕하세요. 댓글 감사합니다.

      별도의 가중치를 적용한 실험은 없는 것으로 보입니다. 또한, TE와 NDE를 유사하게 만드는 방향으로 학습할 때 c만 update하기 때문에 V+Q의 effect 전체와 Q의 effect 전체가 서로 완전히 가까워지게 학습이 되지는 않을 것으로 생각됩니다.

      감사합니다.

  3. 안녕하세요. 김주연 연구원님 좋은 리뷰감사합니다.

    CF-VQA가 language의 분포와 vision의 분포를 맞춰줘서 두 모달리티 사이의 language bias를 줄여주는 방법론인 것으로 이해했는데요. uniform distribution을 갖도록하는 것이 분포를 균등하게해서 이상치를 줄이는 것인가요? 그리고 다른 모델에 CF-VQA를 접목시켰다는 말이 와닿지않는데 손실함수를 기존과 다르게 가져간다는 뜻인가요?

    1. 안녕하세요. 댓글 감사합니다.

      다른 모델에 CF-VQA를 접목시켰다는 말은 counterfactual reasoning을 구한 NDE를 제거하는 방식을 접목시켰다로 이해하는 것으로 하시면 좋습니다.

      감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다