Bootstrap Vision-Language Representation Learning from a Frozen Image Encoder
-> 이전 포스팅 된 3가지 학습 목표에 대하여 추가 설명
1. Image-Text contrastive Learning : 이미지 - 텍스트 대비 학습
- 목적 : 이미지, 텍스트 표현 정렬 (정보 최대화 - 표현 살짝 이해 안감)
- 양성 쌍의 이미지 - 텍스트 유사도를 음성 쌍들과 대비
- 이미지 트랜스포머의 쿼리 출력 z와 텍스트 트랜스포머의 [CLS] 토큰 출력 t를 정렬
- 여러 쿼리 출력 중 텍스트와 가장 높은 유사도를 가진 것을 선택
- 쿼리 출력 중 텍스트와 유사도가 높다?
- 쿼리 = 이미지 정보 / 텍스트
- 이미지 정보와 유사도가 높은 텍스트를 고른다
- 실제 구현
- 배치 내에 이미지 - 텍스트 쌍을 넣어서 In-batch negative로 contrastive leaerning(유사도 최대화/최소화)
- ????
2. Image-grounded Text Generation
- 목적 : 이미지 기반 텍스트 생성
- 쿼리 임베딩이 이미지 정보를 요약
- 텍스트 토큰들이 쿼리와 이전 토큰 정보만 보게 함
- 이전 토큰만 본다 (텍스트 생성 과정)
- 쿼리 (이미지 정보)
- 이미지 인코더 -> 쿼리 임베딩 -> self-attention 흐름으로 텍스트로 정보가 감
- 실제 구현 시,
- [CLS] 대시 [DEC] 토큰을 첫 텍스트로 넣어, 이제 생성 시작이라는 표현 전달
3. Image-Text Matching
- 목적 : 이미지 - 텍스트 쌍이 진짜 서로 짝인지 분류 (positive / negative)
- 쿼리 임베딩, 텍스트 임베딩이 서로 자유롭게 정보 교환
- 쿼리의 출력값을 2-class linear classifier에 넣고, 전체 쿼리별 logit을 평균내서 매칭 점수 산출
- 마스킹
- 쿼리, 텍스트 서로 접근 가능 (bi-directional mask)
- 하드 네거티브 마이닝도 사용
이미지 -> 자연어 파이프라인 2가지 방법
공통 절차
- Input Image
- Image Encoder : 사전 학습된 vit
- Q-Former
- 학습 가능 쿼리 임베딩을 이용하여 이미지 특징 요약
- 출력을 통해 이미지에서 언어 정보로 전달
- Fully connected Layer
- Q-Former의 출력을 LLM에서 요구하는 임베딩 차원으로 변환
- 이후 사용 모델에 따라 분기
상단
- Decoder based LLM 방식
- Fully Connected Layer에서 변환된 쿼리 임베딩을 LLM의 입력 프롬프트처럼 앞에 붙임
- 일반적인 언어 생성 학습
하단 (약간 힌트주는 느낌?)
- Encoder Decoder Based LLM 방식
- LLM이 인코더 디코더 구조
- Fully connected layer에서 변환된 쿼리 임베딩과 텍스트의 일부 (프리픽스)를 LLM 인코더에 함께 넣음
- LLM Decoder는 인코더에서 전달된 정보를 바탕으로 나머지 텍스트를 생성
- Prefix language modeling loss 로 학습
Bootstrap Vision to Language Generative learning from frozen llm
- Q-Former의 출력 쿼리 임베딩(z)을 완전연결레이어를 통해 LLM의 임베딩 차원 맞게 변환
- 변환 쿼리 임베딩을 soft visual prompt로 LLM앞에 붙여줌 (텍스트 임베딩 앞) -> prefix느낌
- 이 쿼리 임베딩이 이미지 -> 텍스트 생성 필요한 정보만 요약해주는 지점
- LLM이 이미지를 직접 이해 노력 x, Q-Former가 뽑아준 중요한 정보만 사용
Model pre-training
(데이터셋 선정을 어떤 기준으로 할 지 궁금하다)
- BLIP(1)와 동일: COCO, Visual Genome, CC3M, CC12M, SBU, LAION400M 등 1억 2900만 장 이상데이터 셋\
- 캡션 품질 향상:
- 웹 이미지에는 BLIPlarge 모델로 10개 캡션 생성
- CLIP ViT-L/14로 이미지-텍스트 유사도 기반 top-2만 사용 (품질 좋은 캡션만)
사전 학습 모델 선정
- Frozen Image Encoder:
- CLIP ViT-L/14, EVA-CLIP ViT-g/14
- 마지막 레이어 대신, 두 번째 레이어 결과 사용(성능 더 좋음)
- Frozen LLM:
- OPT(디코더), FlanT5(인코더-디코더)
학습 설정
- 1단계(비전-언어 표현 학습): 25만 스텝
- 2단계(생성적 프리트레인): 8만 스텝
- 대형 배치 사이즈, FP16/ BF16 사용(자원 효율성)
- 데이터 증강: 224x224, 랜덤 crop, 좌우 플립
- Optimizer: AdamW, 코사인 러닝레이트 디케이, warmup 등
- 하드웨어 효율성 덕분에 16xA100(40G)에서 9일 이내로 프리트레인 가능 - ? (wow)