Vision Encoder와 LLM을 섞어서 사용했다.
GPT-4 generated visual instruction tuning data를 만들었다고 한다.
그전에 여러 language-augmented foundation vision model이 있었지만, 내부적으로 특정 태스크를 위해서 설계되었다.
더 나아가, 언어는 이미지를 설명하기 위한 용도로만 활용되었다. 이건 시각적 정보를 언어로 매핑하는데 도움을 주기는 하지만.. 그런 영역에만 인터페이스가 머물도록 한다
자체 해석 : 데이터들이 전부 이미지 + 이미지를 설명하는 글로만 이루어져 있어 이런식의 태스크만 가능한 방식으로 진행되었다.
하지만 LLM은 훨씬 다양한 역할을 한다. Alpaca에서는 LLM으로 생성한 instruction-following 데이터셋을 가지고 LLM을 학습시켜서 align하기도 한다.
본 논문의 제안 : instruction-tuning을 멀티모달 스페이스에서 시도한다. = 제너럴한 목적의 visual assistant를 가능하도록 한다.
3가지 컨트리뷰션
- 한가지 중요 문제점은 vision-language instruction-following data가 모자라다는 점이다. 우리는 이미지-텍스트 페어를 GPT api를 사용해서 적절한 instruction-following 포맷으로 바꾸었다.
- 라미 멀티모달 모델 CLIP과 LLaMA를 합치고 엔드투엔드로 파인튜닝해서 큰 멀티모달 모델을 만들었다.
- 다 공개했다.
캡셔닝 데이터로 제일 간단하게 할 수 있는건
이런식으로 그냥 학습하는거다. X_q는 위의 질문들, v는 이미지, c는 캡션. 근데 이건 diversity도 부족하고 in-depth reasoning도 하지 못한다. 따라서
이 이미지에서 위의 데이터(기존)를 아래와 같은 형태(생성해냄)로 바꾸었다.
GPT api를 사용했기 때문에 이미지를 사용하진 않음. 여기서는 예시.
캡셔닝에 설명이 다 있으니까 이걸 기반으로 1) 질문-답변 데이터, 2) 디테일한 설명, 3) 복잡한 추론 데이터-위 두개는 이미지를 잘 설명하는 것에 집중하고 있기 때문에 추론 능력을 치우고자 했다. 를 생성했다.
158K 개의 유니크한 인스트럭션 데이터셋을 만들었다. 36.5%는 QA, 14.5%는 디테일한 설명, 49%는 컴플렉스 리즈닝 세트. → 그럼 이렇게 만들기 위해서 사용한 이미지-텍스트 페어 데이터는 몇개인걸까?
Visual Instruction Tuning
목표는 사전학습된 LLM과 visual model의 능력을 최대한 활용하는 것이다.
Vision Encoder로는 CLIP ViT-L/14를 사용했다.
LLM은 LLaMA를 기반으로 파인튜닝한 Vicuna를 사용했다.
이미지 피처를 워드 임베딩 스페이스와 연결하기 위해서 간단한 리니어 레이어를 도입했다.
이미지를 비전 인코더에 태워서 얻은 값을 다시 네트워크에 태워서 LLM에 사용가능한 스페이스로 보낸다. → Sequence visual token이 된다. 아주 간단한 방식(너무 대충인가 싶은 생각이 들 정도로)으로 구현했다. 더 복잡한 방식을 사용할 수도 있다 - Flamingo와 Q-former in BLIP-2, SAM 같은 곳에서는 object-level feature를 사용함. 본 논문에서는 그렇게까지 하진 않았다.
학습은 위에서 본 것처럼 그냥 이어붙여서 auto-regressive하게 학습한다. 아주 단순한 접근법으로 구성한 아키텍처. 오히려 이런 것들이 적절한 데이터와 함께 학습하면 잘먹히나보다.
두단계의 instruction-tuning을 거친다.
- Pre-training for Feature Alignment
이 단계에서는 CC3M 데이터셋을 사용하는데 위의 이 간단한 학습을 적용한다.(설명해줘-이미지-캡셔닝 이렇게만 이루어진)
visual encoder와 LLM의 가중치는 고정해둔다. 왜냐하면 이미지 피처 가 LLM의 word embedding과 align될 수 있게 하는 것이 목표이기 때문.
충분히 납득되는 이유
- End-to-End Fine-tuning
이 과정에서는 Visual Encoder 가중치는 고정해두고 LLM도 함께 업데이트한다.(1처럼 projection layer도 포함해서)
직접적으로 비교한 결과가 있다. 이 예시 하나만 가지고 전체 성능을 비교할 순 없겠지만 더 길고 복잡한 추론을 거친 답변을 하는걸 볼 수 있다. BLIP-2와 플라밍고는 이미지 자체를 잘 설명하려고 하는걸 볼 수 있다.
라바에서 사용한 데이터셋의 유니크한 이미지는 80K 정도로 아주 적다.
정량적 평가를 위해서 사용한 방법
모델이 생성한 답변을 평가하는걸 GPT4에게 맡긴다.
helpfulness, relevance, accuracy, level of detail를 각각 1에서 10점 사이로 매겨달라고 한 다음 이 점수를 사용한다. 왜 그 점수인지 설명도 함께
3가지 종류의 인스트럭션을 만들었는데, 그럴 필요가 있었는지를 체크한다.
- Conversation 데이터만 추가해도 50점이나..! 올랐다.
- 여기에 디테일 설명이랑 Complex 넣으니까 7점 더 올랐다.
- 디테일이랑 Complex만 쓰니까 1.4 더 올랐다.
- 최종적으로 지금 비율로하면 85.1로 최고점
Share article
Subscribe to our newsletter