논문읽기

논문읽기: Visual Instruction Tuning (LLAVA)

낭만가이 2024. 11. 26. 01:20

VLM (Vision Language Model)중 유명한 LLAVA를 발표한 논문이다. 지난 CVPR에서 저자로 참여하신 이용재 교수님이 톡을 하셨는데 뜨거운 인기를 확인할 수 있었다. 이 논문 이후로도 여러 후속 연구들이 나온 것으로 아는데, 그 시작점인 LLAVA를 한번 읽고 정리해본다.

 

GPT-assisted visual instruction data generation

COCO 데이터셋에서는 Caption과 Bounding Box가 함께 제공된다. Text-Image pair가 같이 제공된다는 점에서 긍정적이기는 하나, 대화의 형태는 아니므로, 인간의 질문에 대답하는 등의 Task를 수행하기는 쉽지 않다. 따라서 저자들은 GPT-4를 활용하여 Caption을 대화형태로 바꾸었다. 구체적으로는 GPT-4에 COCO에서 제공되는 Caption/BBox를 Input으로 놓고 아래 Table과 같이 3가지 타입의 Response를 생성하도록 하였다. (아래 그림 참조)

GPT-4는 Multimodal로 만들어져서 Image/Text를 같이 넣을 수도 있으나, Text쪽으로 더 강점이 있어 이러한 방식을 택했다고 한다. 이러한 방식으로 총 158K의 샘플을 생성하였다.

 

Visual Instruction Tuning

Architecture

모델 자체는 상당히 간단한 구조로 되어 있다.

  • 입력 이미지 Xv를 CLIP(ViT0L/14)를 통과시켜 Zv를 얻고, (Image embedding)
  • 여기에 Projection matrix W를 곱해서 이미지 토큰 Hv를 얻는다. (Projection to our training space)
  • GPT로 만든 conversation data는 아래의 형태로 구성되어 있다. 사용자의 질문, Agent의 응답이 번갈아가며 나오는 형태이다. 

  • GPT가 생성한 conversation data 를 이용하여 모델에 넣어줄 Instruction을 아래와 같이 구성한다. 많이 바뀌는 것은 아니고, 첫번째 Instruction에는 이미지와 질문을 같이 넣어주고 (순서를 랜덤하게 바꿔서 멀티모달에 더 유연하게 반응하도록 함) 그 뒤로는 질문을 그대로 사용한다.

  • 최종적인 Model training data의 형태는 다음과 같은 형태가 된다.아래에서 녹색으로 표시된 부분을 모델이 예측하도록 하였다.

  • 이렇게 구성한 Instruction data를 바탕으로 아래와 같이 Auto-regressive하게 모델을 학습시켰다. 이때 모든 t 시점에서 응답을 생성할때 이미지에 대한 조건(Xv)도 같이 들어가게 함으로써 응답이 항상 이미지의 내용을 바탕으로 하도록 하였다.

  • Language model 는 Vicuna를 사용하였다.

빠르게 Data-centric experiments를 통해 결과를 얻어내고자 이렇게 했다고 한다. 사실 가용한 데이터가 많고, Pretrained

model도 어느 정도 트레이닝이 되어 있어서 이렇게 해도 준수한 성능이 나오는 것으로 보인다.

 

Model training

학습은 2단계로 나누어서 수행하였다. 

1. Pre-training for feature alignment: 이미지 임베딩 Hv과 Word 임베딩이 어느 정도 유사해지도록 조정하기 위하여 사전학습을 진행하였다. Projection matrix W만 학습된다.

  • CC3M 데이터셋에서 일부 image-text pair 필터링 (595K)
  • 위에서 설명한 방법과 같이 GPT를 이용하여 대화 형태로 변경
  • 대화형태로 변경된 데이터 중 Xq를 임의로 하나로 추출하고, 이에 대한 정답은 원본 Caption을 활용
  • Visual Encoder (CLIP)과 LLM (Vicuna)를 모두 고정하고, 학습 진행

 

2. Fine-tuning End-to-End: 이번에는 Projection matrix W 뿐만 아니라 LLM 파트도 같이 학습시킨다. 아래 2가지 경우에 사용될 수 있다고 가정하였다.

  • Multimodal chatbot
  • Science QA: 과학시험문제 풀기

 

Experiments

모델 트레이닝은 A100 8개를 사용하였고, Pretraining에 4시간, Finetuning에 10시간 정도 소요된다고 한다. 연구실 수준에서는 이정도 갖추기도 쉽지 않은데, LLM 연구는 이런 장비에서 진입장벽이 되는 것 같다.

 

Multimodal chatbot sample

GPT-4에서 샘플로 보여줬던 이미지와 동일한 이미지를 이용하여 챗봇과 대화하는 예시를 보여주고 있다. 사진이 왜 일반적이지 않은지 상세하게 설명을 해주고 있고, 타 오픈소스 모델(BLIP-2/OpenFlamingo)보다 더 상세한 설명을 제공하고 있고, 어찌 보면 GPT-4보다 좋아보이기도 하다. 

 

Quantitative evaluation

사실 이런 연구들에서는 계량화하여 성능을 측정하는 것이 쉽지 않다. 그래서 GPT를 정답으로 보거나 심판으로 내세워서 평가를 하는 경우가 많은 것 같다. 전통적인 방법론들과 비교하면 다소 이상해 보일 수도 있는데, OpenAI의 기술력이 워낙 압도적이다 보니 이쪽 연구자들도 이런 방식을 택하게 되는 것 같다.

세부적인 평가 방법은 아래와 같다.

  • 총 3개의 인풋을 준비: 이미지, 질문, 이미지에 대한 GT text description
  • LLAVA는 이미지와 질문을 인풋으로 받아 답변 생성
  • Oracle 모델(GPT-4)는 GT text description과 질문을 인풋으로 받아 답변 생성 (Upper bound로 활용)
  • 심판 모델(GPT-4)에 위 2개의 답변을 주고, 유용성, 적절성, 정확성, 세부성의 측면에서 1~10점으로 평가하게 하였음.
  • Oracle 모델(GPT-4)의 답변에 대한 상대적인 점수로 LLAVA를 평가

평가를 위한 테스트셋은 2개를 구성하였다.

1. LLaVA-Bench(COCO): COCO val 2014에서 30개의 이미지를 선택하여 각각의 이미지에 대하 3가지 종류의 질문을 생성하였다. (Conversation, Detailed description, Complex reasoning). 이를 이용하여 평가한 결과는 아래 표와 같으며, 트레이닝 방법에 따른 성능도 같이 제시되고 있다.

 

2. LLaVA-Bench (In-the-Wild): 좀 더 어렵고 일반화된 상황에서의 성능 테스트를 위하여 24개의 이미지와 60개의 질문을 수집하였다. 이를 이용한 평가 결과는 아래와 같으며, 다른 오픈소스 모델에 비하여 좋은 성능을 보이고 있다.

 

Limitations. LLaVA-Bench (In-the-Wild)에서 LLaVA가 잘 못하는 예시들에 대해 설명하고 있다. 예를 들어 왼쪽의 라면 사진에서는 일본어로 된 레스토랑의 이름이나 반찬까지 알지는 못한다고 한다. 오른편의 냉장고 사진에서는 요거트의 브랜드를 파악하지는 못하였고, 딸기와 요거트가 각각 존재함에도 딸기맛 요거트가 있냐고 물어보면 맞다고 대답한다고 한다. 언어 모델의 태생적 한계(진짜 추론을 한다기보다는 패턴을 학습함)를 보여주는 예시라 할 수 있겠다.

 

Science QA

21k개의 멀티모달 객관식 문항으로 구성된 ScienceQA 데이터셋으로 모델의 성능 평가를 진행하였다. 기존의 SOTA 모델은 Multimodal에서 CoT 방식을 적용한 MM-CoT였다. (91.68점)

  • LLaVA만 단독으로 사용했을 경우 90.92점으로 SOTA와 거의 비슷한 정도의 성능을 보여주었다. 
  • 텍스트만 활용하는 GPT-4는 이미지나 플롯을 보지는 못하기 때문에 성능이 다소 떨어진다. (82.69점)
  • GPT-4와 LLaVA를 조합해서 활용하면 성능이 좋아진다.
    • LLaVA + GPT-4 (complement) 방식은 GPT-4가 답변을 제시하지 못하는 경우 LLaVA를 사용하는 방식으로 큰 개선은 없었다.
    • LLaVA + GPT-4 (judge) 방식은 GPT-4와 LLaVA의 답변이 다른 경우 GPT-4에게 두 답변을 참고해서 새로 답변을 하라고 하는 방식이다. 이렇게 하였을 때 92.53으로 성능이 개선되었다. 

 

 

Ablations

  • CLIP visual encoder 에서 마지막 레이어에서 추출한 Feature를 사용하면 성능이 약간 감소한다. (최종 모델은마지막 레이어 하나 이전의 레이어를 사용함) 마지막 레이어는 추상화가 많이 되어 지엽적인 디테일이 떨어져서 그런것으로 보고 있다.
  • CoT 방식으로 reasoning-first startegy를 적용해 보았으나 성능이 89.77에서 더 오르지 않았다.
  • Pretraining을 안하면 성능이 하락한다.
  • 모델 사이즈를 13B->7B로 줄이면 성능이 하락한다.

 

 

여기까지 논문 리뷰를 마치도록 하겠다. 생각보다 간단한 전략을 사용한 것 같은데도, 결과가 잘 나온 부분이 인상적이다. LLM의 시대에는 빠르게 최신 기법들 파악하고 적용하는 것이 (늘 그렇지만) 중요한 것 같다.