CLIP에서 contrastive learning
거대한 batch를 사용한 단순구조의 정렬
독립적인 image encoder와 text encoder를 사용
- 한 배치 안에 N개의 image-text 쌍이 있다고 가정
- 모든 이미지와 텍스트를 embedding 공간으로 보낸 후 N×N 크기의 similiarity matrix를 cosine similiarity 방식으로 계산
- Positive pair: 대각선 쌍에 있는(i==j) N개의 ground truth pair의 유사도는 최대화
- Negative pair: 그 외에 위치한 잘못된 pair의 유사도는 최소화
- Loss function: image → text, text → image 모두에 대해 CE Loss를 적용하는 Symmetric Loss를 사용한다.
ALBEF의 contrastive learning
CLIP의 방식을 유지하되 noisy data에 대한 robustness와 efficiency를 위해 두 가지 모듈을 추가함
Momentum Queue
- 현재 batch의 data 뿐 아니라, 이전 배치들에서 계산했던 embedding들을 Queue에 저장해두고 이를 Negative sample로 이용한다.
- 이를 통해 batch size를 늘리지 않고도 수만 개의 negative sample들로 학습 비교군을 만들 수 있다.
Momentum Distillation (Soft targets)
예를 들어 '고양이 사진'에 '귀여운 동물'이라는 text가 연결 돼 있다고 한다. 이때 다른 사진의 text인 '코리안 숏헤어'라는 text가 연결돼도 맞는 설명 일 수 있다.
- CLIP : 무조건 기존 data 상에서 짝지어진 것만 연결되어야 한다. 이에 따라 0, 1로 학습한다. (one-hot encoding)
- ALBEF: Momentum encoder가 예측한 similiarity를 Soft label(정답)으로 참고한다. 즉, 원래 내 짝이 아니더라도 의미상 유사하다고 판단되면 일정 점수를 주는 것을 허용하여 noisy dataset에서도 유연하게 학습한다.
→ 즉, CLIP의 비교 대상은 현재 batch안의 image-text 쌍이지만, ALBEF는 현재 batch 와 momentum queue안의 sample들 까지 포함한다.
- 또한 추가적으로, CLIP과 ALBEF 모두 dot product 기반의 similiarity를 학습하지만, ALBEF는 256 차원의 저차원으로 mapping하는 embedding이 하나 더 존재한다는 차이가 있다.