Vision-Flan: Scaling Human-Labeled Tasks in Visual Instruction Tuning
- ACL Findings, 2024
- Virginia Tech, Washington U, Michigan U, 홍콩과기대, meta
https://github.com/VT-NLP/Vision-Flan
Abstract
- VLM 발전, 여전히 두가지 큰 문제가 있음
- task 다양성 부족 - pretraining, instruction tuning 모두 특정 task에 치우침
- gpt-4 synthetic data의 오류/편향
- 자동 생성 데이터라서 noisy, bias 존재
→ 일반화 약함, hallucination 발생, catastrophic forgetting (기존 능력 망가짐)
- 해결방법
- 데이터셋: vision-flan 데이터셋 구축
- 약 187개 task, 166만 샘플, human-curated instruction
- 학습방식 - 두 단계 학습
- stage 1: vision-flan으로 학습 → capability learning / 개념 이해
- stage 2: gpt-4 데이터로 추가학습 → format alignment / 표현을 다듬기
- 데이터셋: vision-flan 데이터셋 구축
- gpt 데이터는 vlm 능력을 키우기 보다는 출력 스타일을 사람처럼 맞춤 → alignment 용도
- gpt 데이터는 많이 필요 없음, 1000개 정도면 충분
- instruction tuning의 핵심은 llm이 이미지 피처를 이해하게 만드는 것
Introduction
- 기존 VLM 구성 요소
- bridging module (이미지 인코더 ↔ llm 연결)
- 대규모 이미지-텍스트 데이터 → 사전학습용
- GPT-4 기반 instruction 데이터 → instruction tuning용
- 사람이 원하는 스타일로 답하도록 alignment
- 구조
- 입력 → encoder → bridging → llm → 답변
- **문제 1: pretraining 데이터가 너무 단순함**
- 이미지 캡셔닝 중심 - 다양성 부족
- → 다른 task에 대한 일반화가 약함
- ex. llava의 경우 ocr 성능이 낮은데, text detection 학습 안함
- 이 문제를 해결하기 위해서 instruction tuning으로 task의 다양성을 개선하려고 시도한 연구들
- 하지만 여전히 task의 coverage가 부족함..
- **문제 2: gpt 기반 데이터의 구조적 한계**
- 합성 데이터라서 생기는 문제점
- gpt 데이터 만드는 방식은 주로
- 기존 캡션을 gpt로 변형 (대화, vqa, 설명..)
- 문제점
- task의 다양성이 부족함 → 결국 같은 source에서 변형한 것들
- spurious pattern * object들이 함께 나오는 패턴이 있음
- cup - 테이블이 항상 같이 나오는 패턴
- long-form output 문제
- 쓸데없이 길고 비슷한 패턴
→ hallucination 증가, catastrophic forgetting 발생 (기본 task 성능 감소)
해결방법
“GPT로 데이터 만들지 말고 진짜 task를 모아라”
- Vision-FLAN이라는 데이터 제시함
- 가장 다양한 유형을 포함한 academic dataset 기반 visual instruction dataset임
- 187개 task
- 여러 유형 포함
- perception
- domain-specific
- reasoning
→ 진짜 task 다양성 확보하기 위함
- 기존 데이터셋은 caption을 gpt로 변형한것에 그쳤다면, vision-flan은 처음부터 다양한 task를 고려함 + expert-written instruction임
- 2단계 학습 구조
- **stage 1: 능력 학습**
- LLaVA 모델을 vision-flan으로 finetuning함 → Vision-FLAN Base
- 정확하지만 답이 짧고 딱딱함
- **stage 2: 스타일 정렬**
- Vision-FLAN Base를 gpt-4로 만든 소량의 데이터를 사용해서 Vision-FLAN Chat을 만듦
- 사람처럼 자연스럽게 답하도록 조정
- **stage 1: 능력 학습**
- 결과
- hallucination, catastrophic forgetting 위험은 적고 성능은 높임
- key insights
- human-labeled task 수가 올라갈 수록 성능은 높아짐
- gpt 데이터는 성능을 거의 올리지 않음 → 능력 향상에는 별 도움 안됌
- gpt 데이터는 조금만 필요함 (약 1000개), 너무 많으면 hallucination랑 bias 증가함
- instruction tuning의 본질은 llm이 visual feature를 이해하게 만드는 것
- bridging 모듈은 거의 사전학습 단계에서 다 학습 → instruction tuning은 이해 능력을 강화하는 것이 목적임
- Vision-FLAN이라는 데이터 제시함
Vision-FLAN
2.1. Collection pipeline
- annotator 선정: 21명 중 2번의 training-test 과정을 거쳐 7명의 컴퓨터공학 대학원생이 선정됨
- 기존 데이터셋 수집 및 전처리
- 두 연구자가 고품질 vision-language 데이터셋 선정
예시
1
2
3
4
5
6
7
8
9
10
11
12
- 7명의 annotator들에게 분배해서 각각 다운로드하고 전처리함
- 각 데이터 샘플 구조: image, instruction, text input (필요시), target output 2. **새로운 task 생성**
- 여러 annotation 결합: 캡션 + 지식 → 합친 output
- task 단순화: object detection → 이 이미지에 나타난 object 선택 문제
- 새로운 task에 대해서 20개의 샘플을 사람이 직접 풀어보고, 정답과 일치하면 taks를 유효하다고 판단함 3. **instruction 및 output template 개선**
- 기존에 있던 task는 annotator가 instruction 작성
- 새로운 task는 annotator와 연구자가 함께 작성함
- 연구자가 랜덤으로 할당되어 검토, 피드백 후 반복 수정 4. **task 품질 검증**
- 두 명의 연구자가 instruction이 자연스럽고 명확한지, 다른 task와 중복되지 않는지 품질 검증함 - 결과적으로,
- 총 187개의 task
- 각 task 당 최대 10,000개의 샘플
- <u>_총 1,664,261개 데이터 구성_</u>
2.2. Comparison with Existing Datasets
Vision-FLAN이 기존 데이터 대비 무엇이 더 나은가?
- 기존 데이터 (대부분 GPT 기반 생성 데이터)
- task의 다양성이 좁고, 대부분 합성 데이터 중심
- VL-Qwen: 사람이 만든 데이터셋, 하지만 비공개
- MultiInstruct: 공개 데이터기반, task 수가 29개고 특정 task에 치우침
- visual grounding 중심임
- 일부 정보가 부족 - region-specific 정보 없음
- 하지만 Vision-FLAN은,
- task 수가 엄청 많음- multiinstruct 대비 약 3배
- task 종류가 다양함
- figure 2를 보면..
- 우선 vision-flan은 크게 3가지 종류로 나뉘어짐
- question-answering, generation, classification
- classification의 경우 general / vehicle model… → 단순 vs 세밀함 모두 있음
- 우선 vision-flan은 크게 3가지 종류로 나뉘어짐
Vision-FLAN Finetuning
- 모델 구조
- llava와 동일한 구조 사용
- vision encoder, llm, 2개의 mlp
- 두 단계 visual instruction tuning
- stage 1: 능력 학습
- 데이터: vision-flan (187개 task 전체)
- 학습 대상 모듈: mlps, llm
- instruction tuning 안 된 LLaVA 모델을 initial 모델로 사용함
- 학습 결과 모델: Vision-FLAN-Base
- 목적: 다양한 task 수행 능력 확보
- academic dataset이라서 출력이 짧고 단순함
- stage 2: 출력 정렬
- 데이터: 소량의 gpt-4 생성 데이터
- 학습 대상 모듈: mlps, llm
- Vision-FLAN-Base에서 finetuning
- 목적: 사람 선호 형태로 답변 생성
- stage 1: 능력 학습
- implementation details
- 구조: llava
- vicuna-13b v1.5, clip vit-l (336px), mlp 2 layers
- stage 1: lr 2e-5, bs 16, epoch 1
- stage 2: lr 1e-5, bs 8, steps 128
- **llava dataset에서 1000개 랜덤 샘플링함**
- 구조: llava
Experimental Setup
- 평가 데이터셋
- 객관식 - MMbench, MME, MMMU
- 자유 생성 - MM-Vet, LLaVA-Bench
- hallucination 평가 - POPE
- catastrophic forgetting 평가 - CIFAR-10, CIFAR-100, MNIST, miniImageNet
- 평가 방식
- 공식 벤치마크인 MMbench, MME, MM-Vet, LLaVA-Bench, POPE, MMMU
- 공식 평가 코드 사용
- 아닌 경우
- CIFAR-10, CIFAR-100, MNIST, miniImageNet
- Vicuna 1.5 13B를 사용해 평가 수행
- 4개 데이터셋 평균 성능을 CF 컬럼으로 보고
- 공식 벤치마크인 MMbench, MME, MM-Vet, LLaVA-Bench, POPE, MMMU
- 베이스라인 모델
- BLIP-2, InstructBLIP, Shikra, LLaVA, Qwen-VL, Qwen-VL-Chat, LLaVA 1.5
Results and Analysis
메인 실험 결과
- VISION-FLAN BASE 성능
- mm-bench 등에서 sota 달성
- llava-bench에서 성능이 낮음 → academic 데이터로 학습해서 모델이 짧게 답하는 경향을 학습, 사람 선호 스타일과 불일치
- VISION-FLAN CHAT 성능
- llava-bench에서 성능 크게 향상
- 동시에 hallucination, forgetting 낮음
- chat 데이터에서는 성능이 향상되었지만 일부 벤치마크 성능은 떨어짐
- gpt 데이터가 bias를 유입하고, hallucination이 증가해서 그렇다고 함… 이후 study에서 보여줄 것
- VISION-FLAN BASE 성능
- Human-labeled and GPT-4 합성 데이터의 효과
- task 수 증가 vs 성능
- instance 수 고정, task 수만 변화
⇒ 데이터 양 < task 다양성이 더 중요함
gpt-4 생성 데이터가 성능을 올리는지 분석
- mme, mm-bench와 같은 comprehensive benchmark 점수 비교
- vision-flan base는 gpt 데이터를 추가 학습했더니 조금 떨어짐
- llava는 초기 성능은 좀 상승하나 추가 성능 향상 없음
→ gpt4는 모델의 능력을 향상시키지는 않음 / 답변 형식만 바꿈
- mme, mm-bench와 같은 comprehensive benchmark 점수 비교
gpt-4 생성 데이터의 양이 human preference에 미치는 영향
- llava-bench에 대해서 평가
- 1000개 만으로도 큰 향상
→ 소량 gpt 데이터만으로도 사람 선호 alignment 충분히 가능함
- 오히려 양이 너무 많아지면 성능 감소
gpt 데이터 양이 hallucination과 bias에 미치는 영향
- gpt 데이터가 많아질수록 모델이 yes를 더 자주 선택함
- hallucination도 높아짐
→ gpt 데이터가 많아질수록 bias와 hallucination을 증가시킴
- 단일 stage를 mixed 데이터로 학습 vs two-stage 학습
새로 만든 task의 효과 분석
- 전체 task 사용 vs 기존 task 사용
- 전체 task 사용하는 것이 (즉 새로운 task 포함하는 것이) 더 좋음
- 각기 다른 task group에서 온 task들의 기여
- vision-flan은 크게 3가지의 큰 그룹으로 나뉨
⇒ 3가지 task는 각각 다른 능력을 담당하며, 모두 함께 있어야 최상의 성능이 나옴
visual instruction tuning이 adapter와 llm 중 어떤 성능을 올리는가
- mlp만 학습 → 성능 낮음
- llm만 학습 → 성능 많이 개선
- mlp & llm 학습 → 최고 성능
- llm만 학습해도 거의 최고 성능에 근접하게 나옴
- mlp의 역할: pretraining 단게에서 이미 충분히 학습됨
→ instruction tuning 단계는 llm이 visual feature를 충분히 잘 “이해하도록” 만드는 과정임
- instruction tuning된 mlp를 제거하고 pretraining mlp로 교체함
- 성능이 90% 이상 유지됨 → 큰 차이는 아님
→ visual instruction tuning의 본질은 mlp가 아니라 llm이 visual feature를 이해하게 만드는 것임
Related Work
- instruction tuning
- nlp에서 시작 → vision-language로 확장
- multiInstruct
- 최초의 human-labeled 멀티모달 instruction 데이터
- llava
- 이후 확장 연구 - 3d, multi-image, video로 확장
- 혼합 데이터 방식
- 성능 개선을 위한 여러 시도들
- 데이터 생성 다양화
- bias/robustness 개선
- visual grounding 강화
- ocr 관련 개선
- scaling 연구
- gpt-4”v” 활용
- 본 연구의 차별점: human-labeled task 확장에 집중 / task 다양성을 늘림
Conclusion
- VISION-FLAN 구축
- 187개 task, 166만개 데이터, 모두 academic 기반 + expert instruction
- two-stage 적용 시 여러 벤치마크에서 sota 달성함
- human-labeled data vs gpt 데이터의 역할을 분석함
Limitations
- 모든 task가 영어
- 모든 task가 단일 이미지 기반
- gpt-4 기반 데이터하고만 비교하고, 더 최신 gpt-4v 데이터는 고려 안함
- 모델 구조 제한 - llava만 사용해 봄












