3줄 요약
- down-stream task에서 CLIP의 domain-gap을 줄이는 ReCLIP을 제안한다. 이는 target data나 그 어떤 소스도 필요 없이 adaptation을 진행한다.
- text vector SVD를 진행하여 vision vector를 text vector의 basis가 span하는 space에 projection 시킨다.
- text vector에 PCA를 진행한 후 첫번째 column에 해당하는 성분이 모든 임베딩 벡터가 비슷하게 보이게 만드는 성분이기에 해당 column을 제거한다. 이후 남은 metrix가 span하는 space에 원래 벡터들을 projection 시킨다.
Limitation of Previous Studies
기존의 CLIP은 Imagenet Zero-shot classification task에서 정확도 76.3을 기록할 정도로 좋은 zero-shot 성능을 보였다. 그러나, 다운스트림 테스트에서 domain gap이 발생한다.
ReCLIP은 image text의 projection space와 임시 label에 대해 학습한다. 이는 두 모델의 misalignment를 완화한다.
또한 cross modality self training을 위에서 언급한 임시 label로 학습한다.
domain gap in clip
CLIP은 높은 zero-shot 성능을 보인다. down-stream task에서는 image-text misalignment로 인해 domain gap이 발생한다. CLIP의 misalignment는 text model에 의해 발생하는 경향이 높다. pretrained 된 CLIP이 있다고 가정하자. vision model은 해당 사진을 보고 적절한 vision embedding 만들 수 있을 것이다. 그러나 해당 데이터의 label은 고유명사로 해당 새의 종을 지칭한다. 이는 직관적으로 CLIP이 적절한 text 임베딩을 만들 수 없을 것이라는 생각이 든다.
논문에서는 fine-grained된 데이터에서 CLIP의 text model로 인해 domain gap이 발생한다고 한다. 이는 큰 범주에서는 같은 카테고리(새)이지만, 큰 카테고리를 작은 카테고리로 세분화 했을 때 text model이 적절한 임베딩 벡터를 만들지 못하게 된다.
이런 fine-grained 데이터를 제외하고도 대부분의 데이터에서 misalignment가 확인되었다. 이 말을 듣고 필자는 AlignCLIP 논문이 먼저 떠올랐다. (https://simmons.tistory.com/188 , Mitigate the Gap: Improving Cross-Modal Alignment in CLIP, 저번에 읽고 정리한 논문을 링크로 첨부한다.)
Observations & Motivations
reason of misalignment
논문 저자는 CLIP의 misalignment가 다음의 두 이유에서 발생한다고 "믿는다"고 한다.
1. text embedding redundancy :
CLIP에서 embedding vector를 살펴보자. 여기서 몇 개의 차원만 실질적인 정보를 제공하고 나머지는 중복된 결과로 남는다. 옛날에 contrastive learning을 배웠을 때 필자가 들었던 예시를 기반으로 설명을 첨언하면 다음과 같다. 백인과 황인이 있다고 가정하자. 그리고 이를 텍스트 임베딩 시켰다고 가정하자. 모델이 생성한 벡터의 일정 부분은 색상에 대한 정보이고, 또 일정 부분은 사람이라는 정보라 가정하자. 그런데 두 클래스 모두 사람이다. 그렇다면 모델이 출력하는 벡터에서 사람을 나타내는 벡터는 중복 벡터로서 작용한다.
하지만 유사도를 계산할 때는 feature vector를 모두 사용한다. 그럼 중복 벡터가 유사도에 관여하여 유사도가 높게 나올 수 있다.
2. vision embedding vector에 foreground 정보 외에 background 정보가 섞임 :
foreground외에 배경 정보, 밝기 등등의 정보가 섞여있기에 vision vector가 오염된다.
이에 adaptation을 통한 CLIP의 re-alignment는 성능 향상을 기대할 수 있다.
realignment using adaptation
기존의 domain adaptation은 target domain data의 label이 직접적으로 필요로 한다. 해당 논문에서는 label이 없는 data로 부터 adaptation을 진행한다.
기존의 방법으로는 POUF 방식이 있는데 해당 논문은 데이터를 하나씩 보고 서로의 연관성은 완전히 없다고 가정하고 학습한다.
또한 다중 template를 사용하지 못한다. <<- 해당 논문을 읽어봐야겠다.
Method
1. 비전 모델을 freeze 시키고 text 모델을 훈련시킨다. 이 때 text vector를 비전 벡터와 가까워지게 훈련된다. 이때 text vector에 임시 라벨을 만든다.
2. text vector를 fine tune 시킨다. 같은 임시 라벨에 있는 vision vector는 더 가까워지게 한다.
Projection Space to Align Visual and Text
1. Remove class-agnostic information from visual embeddings : SVD
- text vector -> singular value decomposition -> U, S, V : text vector에 SVD를 적용한다. 느낌이 LSA(latent semantic allocation)랑 비슷하여 직관적으로 와닫는다.
- vision vector를 text vector가 span하는 space에 projection 시킨다. 해당 프로젝션 벡터는 UUT이다.
- 추가 설명으로는 orthonormal vector는 projection metrix가 Ax^ = QQT b 이런 형식이기에 UUT를 사용한다.
필자가 이해한 내용을 풀어서 설명하면, U vector가 row-space의 orthogonal basis니까 U가 span하는 space에 projection 시키는 것 같다. 예시로 설명하자면 다음과 같다.
vision vector = "고양이 모습" + "배경 모습" + "질감" + ... class-agnostic-feature
text vector = "고양이"
그럼 text vector는 [[ 0.23, 0.234, 0.123, ... ]] 이런 row vector 니까 text vector의 SVD 결과에서 U는 row-space의 basis이다.
vision vector를 text vector의 row-space basis에 projection 시키면
vision vector = "고양이 모습" 이렇게 된다는 것이다.
2. Remove redundant information from text embeddings : PCA
- PCA를 적용하여 [e1, e2 ...] 이런 벡터를 얻었다 가정하자. 엄밀히 말하자면, 원래 벡터는 2차원의 text vector이고 shape은 [10,768] 이라 가정하자. PCA 결과로는 [10, 768]의 벡터를 얻었다고 가정하자(차원 축소는 하지 않음)
- 여기서 첫번째 column vector가 모든 데이터에 걸쳐서 공통으로 나타나는 feature이다.
- 해당 element를 제거한다. 해당 벡터를 U'으로 부른다.
- U'U'T를 통해 텍스트 벡터와 비전 벡터를 projection 시킨다.
Pseudo Label Generation for VLM
- 텍스트 벡터와 비전 벡터를 모아두고 내적을 수행한다. 사실 이걸 코사인 유사도로 봐도 무방하다고 생각하는데 벡터의 크기로 나눠주지 않았기 때문에 논문에서는 관계 행렬이라 부른다. 해당 작업을 수행하면, 어떤 스칼라 값 만큼 얼마나 유사한지를 나타낸다.
- 음 수식으로는 설명이 어려워서 간단하게 label propagation 과정을 거친다고 말하고 사진을 첨부하겠다.
해당 과정이 뭘 하기 위해서 하는지는 직관적으로 알겠다. 그러나 왜 이런 방식을 쓰는지, 어떤 기하학적 의미를 가지고 있는지 그 의의를 아직 모르겠다. label propagation 논문을 봐야함을 느낀다.
정리
- text encoder train, vision frozen
- pseudo label과 image-text vector랑 contrastive learning을 한다. clip처럼.
- vision encoder train, text frozen
- vision embedding의 centroid-ision vector랑 label propagation의 벡터와 contrastive learning.
Experiments
main result
특정 데이터에 adaptation 시키고 동일한 데이터로 평가를 진행함. 이를 Transductive 방식이라고 함.
Comparison on Pseudo Label Generations
이게 정말 궁금했다. 왜 knn이라는 쉬운 방법을 냅두고 label propagation을 사용했을까?
실험적으로 확인했다고 한다. P0 P1에서는 knn이 좋았지만, P2에서는 label propagation을 사용했을 때 눈에 띄는 성능 향상을 보였다.
Pros & Cons
Pros
- 기존 CLIP 대비 domain-gap의 완화로 평균 69.83% acc에서 74.94%로 성능을 향상시켰다.
Cons
- adaptation 과정이 너무 복잡함.
- label propagation에서 class가 많아질수록 불안정한 결과를 도출함.