NeurIPS 2022 Main Conference Track
순서가 있는 라벨을 예측하는 문제를 CLIP의 language prior로 풀어보자는 논문입니다. 기존 ordinal regression은 나이 16, 17, 18세 또는 severity 0, 1, 2, 3 같은 rank를 사실상 독립 class처럼 다루는 경우가 많습니다. 그러면 “class 간 순서성”을 충분히 반영하지 못하고, rank concept을 training data에서만 학습하기 때문에 few-shot이나 distribution shift 상황에서 overfitting이 생길 수 있습니다. 논문은 이를 해결하기 위해 각 rank label을 text prompt로 바꾸고, CLIP text encoder를 통해 각 rank에 해당하는 language prototype을 만듭니다. 이후 image feature가 해당 language prototype과 잘 align되도록 contrastive learning 형태로 학습합니다.
Method
- Rank category $R={r_{j} | 0 <= j < C}$
- C: 전체 rank/class 수
- X: 배치 내 이미지 (배치사이즈는 B)
- Y: one-hot label
- $I_{i}$: Image feature
- $p_{j}$: 언어모델쪽에서나온 프로토타입
- image-text similarity: $a_{i,j}=I_{i}\cdot p_{j}^{T}$
문제 정의:
1. Language Prototype 만들기: 순위자체를 텍스트로 바꿔서 진행함. 예를 들어 age estimation이면 "a person of the age of {rj}" 이런걸로 만듬. 그러면 $r_{j}$ 에 대한 텍스트 임베딩이나오고, 이를 prototype $p_{j}$으로 씀.
2. Image-language matching으로 ordinal regression 재정의:
- $r'_{k}$: rank 프롬프트를 직접 넣는게아니라, 0단계의 프롬프트와 마지막단계의 프롬프트에 해당함 (learnable token)
- $r_{j}$: $r'_{0}$와 $r'_{k}$을 가지고 Linear interpolation해서 중간단계들을 만듬.
- $T_{k}$: rank j 의 프롬프트 전체 = {context promt embedding} + {rank prompt}
- $p_{j}$: text encoder을 통과한 임베딩
=> 초기값이 random initialization인데, 이거 잘못세팅되면 Linear interpolation이 거의 의미가없을듯.