VQA는 주어진 이미지에서 답을 찾는다
KB VQA는 이미지 외부의 추가적인 지식을 사용하여 질문에 답하는 것
KB VQA 문제
GPT-3의 사용
GPT-3의 한계
GPT-3의 한계 극복 방법: Answer Heuristics
기존 방식: 캡션과 질문을 GPT-3에 직접 프롬프트로 제공 → 정보 불충분
새로운 방식: GPT-3에 Answer Heuristics 정보를 추가적으로 제공
Autoregressive Langauge Model: GPT-3는 시퀀스를 순차적으로 예측하는 언어 모델. 즉, 이전 단어들을 바탕으로 다음 단어를 예측
Testing Input (x): 모델에 제공되는 테스트 입력
Target (y): 모델이 예측해야 하는 목표
Prompt Head (h): 작업을 설명하는 지시문. 예를 들어, “질문에 답하세요”
In-context Examples (E): n개의 맥락 내 예제. 각각의 예제는 입력과 그에 대한 정답 쌍(ei = (xi,yi))
I번째 토큰 yl 예측 방법
Prompt 방법
Prompt Head: Please answer the following questions based on the provided context.
---
Context: A man is riding a bicycle. \n Question: What is he doing? \n Answer: Riding a bicycle.
---
Context: A woman is cooking in the kitchen. \n Question: What is she doing? \n Answer: Cooking.
---
Context: A group of people are walking in a park. \n Question: What are they doing? \n Answer:
Vanilla VQA Model은 backbone(Mb)와 classification head (Mh)로 구성되어있다
Answer Vocabulary (W): 학습 데이터셋에서 가장 빈번하게 등장하는 정답들로 구성된 어휘 (S개의 답변 wj)
backbone의 역할: 입력값인 v와 q를 fusion해서 z (feature)를 추출
classification head의 역할: z를 통해 W 중에서 하나를 선택(linear + sigmoid)
cf. softmax가 아닌 sigmoid를 사용하는 이유는 하나의 질문에 대해 여러개의 정답이 있을 수 있기 때문이다. 즉 각 클래스에 대해 독립적인 확률 값을 출력(softmax는 확률의 합이 1)
최종 결과 (y): confidence score for answer wi
Answer candidates
Top k를 이용해서 y중에서 k개를 선택
최종 형태는 위와 같이 answer candidate와 confidence score로 구성
Answer-aware examples
위에서 나온 feature(z)를 코사인 유사도를 분석해서 유사한 예제를 추출
Top N를 이용해서 z중에서 N개를 선택
최종 형태는 위와 같이 모든 세트가 들어가야한다
위와 같은 형태로 GPT-3에 입력값을 넣고, 이를 통해 최종 Answer를 도출
emsemble strategy
여러 번의 프롬프트를 통해 얻은 답변을 종합하여 최종 답변을 결정
N개의 답변 예제와 T번의 병렬 프롬프트를 생성
OK-VQA: 일반적으로 사용되는 지식 기반 VQA 데이터 세트
A-OKVQA: 가장 큰 지식 기반 VQA 데이터 세트
Context: A man is riding a bicycle. \n Question: What is he doing? \n Choices: [riding, running, walking, swimming] \n Answer: riding.
MCAN-large(Modular Co-Attention Network): Vanilla vqa 모델로 선택
Pretraining
VQAv2와 Visual Genome를 이용한 사전학습을 진행
Prompting stage
OSCAR+: PICa와 동일하게 캡션 모델로 사용
2-stage를 external KB를 이용한 MAVEx 모델과 비교
비교를 위해 ViLBERT로 다시 학습
4가지 VQA model을 사용해서 성능을 비교
결과: 1단계에서 성능이 높아지면 더 좋은 answer heuristics를 제공하기때문에 최종 성능이 좋았다
CLIP의 시각적 특징이 대규모 사전학습으로 인해 더 풍부한 시각적 지식을 포함하고 있기 때문에 성능이 더 좋은것으로 추정
top-1: confidence가 가장 높은 것
top-2: confidence가 2,3번째로 가장 높은 것
beyond top-k: confidence가 k+1번째로 가장 높은 것부터 사용
결론적으로 어려운 샘플일수록 Prophet에서 더 나은 답변 제시
Stage1에서 생성하는 답변 후보가 많아질 수록 성능이 증가
0에서 1로 변경함으로서 성능이 기하급수적으로 증가 → answer candidate가 중요하다!
예제를 설정하는 방법을 5가지 적용함으로서 성능을 비교
예제와 Prompt 횟수를 증가할수록 성능이 증가
b: 프롬프트 헤드 제거
c: confidence score 삭제
d: 이미지 캡션 제거
e: 외부 모델에서 예측 태그 추가
결론