CLIP 모델에 대해서 이해해보자.
지금까지 어렴풋이 알고 있던 내용은 이미지와 텍스트를 동일 공간 상에 배치하여 서로 의미를 공유하도록 정렬시키는 모델.
이게 어떻게 가능하지? 그 표현 공간은 정확한가? 공간에 대한 신뢰도를 측정할 수 있는 방법에는 무엇이 있을까?
하나씩 문제를 풀어가보려고 한다.

CLIP의 학습 구조이다.
배치 구성
미니배치마다 N개의 (이미지, 텍스트) 쌍을 뽑습니다. 예를 들어 배치 크기가 32,768일 때 (논문 기준), 32,768개의 이미지-텍스트 쌍이 준비된다.
이미지와 텍스트가 각자 인코더를 통해 임베딩된 상태로 코사인 유사도 행렬을 구성한다.
인코더마다 매핑되는 공간의 결과도 달라질 듯 한데,,
해당 행렬은 대각성분에만 정답 쌍을 갖고, 나머지는 오답 쌍을 갖도록 구성된다.
대칭 교차 엔트로피 손실을 이용하여 두 방향으로 동시에 학습을 진행한다.
손실 함수: L = (L_image + L_text) / 2
목표는 대각선의 유사도는 높이고, 나머지 N²-N개 오답 쌍의 유사도는 낮추는 것
핵심 설계 포인트
온도 파라미터 (τ, temperature)
유사도 행렬에 exp(similarity / τ)를 적용할 때 쓰이는 학습 가능한 스케일 파라미터. τ가 작을수록 정답/오답 경계가 날카로워진다고 한다.
이렇게만 보니 대충만 파악이 된 거 같다. 실제로 어떻게 동작하는지 예를 들어 살펴보자.

1단계 (픽셀): 224×224 이미지는 결국 150,528개의 0~255 정수로 이루어진 배열. 이걸 0.0~1.0으로 나누어 정규화하면 신경망이 받을 준비.


2~3단계 (이미지 인코더): ViT는 이미지를 16×16 패치로 잘라 각각을 벡터로 만들고, Transformer 레이어들이 패치끼리 attention으로 관계를 학습. 최종적으로 [CLS] 토큰이 이미지 전체를 요약한 512차원 벡터가 된다. 이 벡터가 "이미지의 의미 좌표".

4단계 (텍스트): "a photo of a cat"은 BPE 토크나이저를 통해 정수 ID 배열로 바뀌게 됨. 흥미로운 점은 "cat"과 "dog" 텍스트는 마지막 토큰 하나만 다르다는 것(2368 vs 1929).

5단계 (유사도): 이미지 임베딩과 텍스트 임베딩의 내적(코사인 유사도)을 구함. I_cat · T_cat = 0.89, I_cat · T_dog = 0.31, I_cat · T_car = 0.04처럼 정답 쌍이 가장 높게 나오게 된다. Softmax를 취하면 확률이 되고, 이걸로 zero-shot 분류가 완성.