- [ICCV 2015] Unsupervised Visual Representation Learning by Context Prediction 핵심 리뷰
- [CVPR 2016] Inpainting SSL : Context Encoders: Feature Learning by Inpainting 핵심 리뷰
- [ECCV 2016] Zigsaw Puzzle SSL : Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles 핵심 리뷰
- [ICLR 2018] UNSUPERVISED REPRESENTATION LEARNING BY PREDICTING IMAGE ROTATIONS (RotNet) 핵심 리뷰
- [CVPR 2018] Unsupervised Feature Learning via Non-Parametric Instance Discrimination (NPID) 핵심 리뷰
- [ECCV 2018] Deep Clustering for Unsupervised Learning of Visual Features (DeepCluster) 핵심 리뷰
- [PMLR 2020] A Simple Framework for Contrastive Learning of Visual Representations (SimCLR) 핵심 리뷰
- [CVPR 2020] Momentum Contrast for Unsupervised Visual Representation Learning (MoCo) 핵심 리뷰
- [NIPS 2020] Supervised Contrastive Learning 핵심 리뷰
- [NIPS 2020] Bootstrap Your Own Latent A New Approach to Self-Supervised Learning (BYOL) 핵심 리뷰
- [ICLR 2021] PROTOTYPICAL CONTRASTIVE LEARNING OF UNSUPERVISED REPRESENTATIONS (PCL) 핵심 리뷰
내용 요약
기존 Constrastive Learning 방식의 한계를 보완해주는 Prototype Constrastive Learning 에 대해 설명합니다. 실험 결과를 통해 제안 방법의 우수성을 확인합니다.
1. 들어가며
이번 글에서는 2021년 ICLR에 발표된 PROTOTYPICAL CONTRASTIVE LEARNING OF UNSUPERVISED REPRESENTATIONS 논문을 리뷰합니다. 이 논문은 PCL이라고 불리며, 이번 글에서도 PCL이라고 지칭하겠습니다.
2. 기존 방법의 문제점
먼저 기존 Contrastive Learning 방식의 문제점에 대해 생각해보겠습니다. 기존에 Contrastive Learning 방식의 Self Supervised Learning 방법이 많이 존재했는데요. 대표적으로 SimCLR, MoCo 등을 들 수 있죠. 이러한 방법들은 모두 Positive Instance 는 당기고 Negative Instance 는 밀어내는 방식으로 학습합니다. 아주 간단한 아이디어로 좋은 성능을 낼 수 있었죠.
하지만 잘 생각해보면 이러한 방식에는 문제가 있는데요. 바로 Semantic Structure 를 Encoding 하기 어렵다는 점입니다. 쉽게 말해서 비슷한 의미를 갖는 이미지끼리 뭉쳐있도록 만들어주기 어렵다는 말인데요. 왜 그럴까요? 예를 들어 강아지1과 강아지2의 입장에서 생각해보겠습니다. 기존의 Contrastive Learning 방식으로는 강아지1 입장에서 봤을때 강아지2는 Negative Sample에 해당합니다. 본인의 Transformed 이미지가 아니니까요. 따라서 밀어내도록 학습하죠. 즉 동일한 의미를 갖지만 다른 Instance는 모두 밀어내도록 학습하기에 동일한 의미를 갖는 이미지들을 Encoding 하기 어렵다는 것이죠.
이번 논문의 제안 방법인 PCL은 이 부분에 대해 초점을 맞춥니다. 어떻게 하면 Contrastive Learning 방식을 보완해서 비슷한 의미를 갖는 Feature 들은 가까이 분포하도록 학습할 수 있을까요?
3. PCL
PCL의 핵심 아이디어와 학습 방법에 대해 순서대로 살펴보겠습니다.
3-1. 핵심 아이디어
위와 같은 문제를 해결하기 위한 PCL의 핵심 아이디어를 살펴보겠습니다. 먼저 말과 소 이미지가 어떻게 분포하면 좋을지 생각해보죠.
우리가 원하는 Feature 형태는 이러한 분포일 겁니다. ‘말’과 ‘소’는 각각 구분되어 분포하고요. ‘말’ 내부에서는 또다시 비슷한 의미를 갖는 Feature들 끼리 구분되어 분포하는 거죠. 예를 들어 ‘말’ 분포 내에서는 ‘누워있는 말’ 과 ‘사람을 태우고 있는 말’ 등등 다양한 분포가 존재할 겁니다.
그런데 생각해보면 이미 이렇게 비슷하게 뭉쳐있는 Feature 들끼리 구분해주는 알고리즘이 존재합니다. 바로 Clustering 이죠. 그럼 Clustering을 사용하면 위의 그림과 같이 비슷한 의미의 Feature들끼리 구분해줄 수 있겠죠? 그렇다면 다음과 같이 될겁니다.
위 그림은 Clustering 을 사용하여 ‘말’ 과 ‘새’ Feature 를 구분한 모습을 보여주고 있는데요. 말 Cluster를 조금 더 자세히 살펴볼게요. 우선 ‘말’ 이라는 큰 Cluster 가 존재하고요. 그 내부에는 다양한 세부 Cluster 가 존재할 수 있습니다. 이때 Cluster 의 중심점을 Prototype 이라고 부를건데요. Prototype 이란 ‘원형’ 이라는 뜻을 갖습니다. 즉 해당 Cluster 를 대표하는 특징점이라고 생각하면 되겠습니다.
이때 우리가 원하는건 기존 Contrastive Learning 을 보완하여 비슷한 의미의 Feature 들 끼리는 뭉쳐있도록 만드는 거잖아요? 그렇다면 Prototype 은 해당 의미를 대표하는 점이라고 했으니, Prototype을 향해서 모이도록 유도해주면 어떨까요? 이렇게 말이죠.
위 그림에서 가운데 갈색 테두리의 말 그림을 주목해 보겠습니다. 이 그림 입장에서 왼쪽 그림은 동일한 Instance의 Transformed 이미지입니다. 즉 Positive Pair 죠. 이 그림과는 가까워지도록 학습해야겠죠. 여기에 추가로 이 그림이 속한 Prototype 과도 가까워지도록 학습해주는 겁니다. 이 그림은 ‘말’의 Cluster에 속하기도 하고 ‘사람이 타고 있는 말’ Cluster에 속하기도 하잖아요? 그러니 ‘말’ Prototype, ‘사람이 타고있는 말’ Prototype 과 가까이 분포해야 하는게 맞죠. 이렇게 학습한다면 Label 정보를 사용하지 않았으니 Self Supervised Learning 이기도 하면서 기존 Contrastive Learning 방식의 한계를 보완해 줄 수 있겠죠?
3-2. 학습 방법
저자들은 EM(Expectation Maximization) 기법을 통한 학습 방법을 제안합니다. 단어가 어려워 보이지만 사실 위에서 했던 얘기와 동일한 얘기입니다.
Expectation 과정은 Clustering 을 통해서 Prototype 을 찾는 과정을 의미하고요. Maximization 과정은 이를 통해 나온 Loss를 학습하는 과정을 의미합니다. 이때의 Loss를 수식으로 표현하면 다음과 같습니다.
- c : 각 cluster의 centroid
- 𝜙 : cluster concentratio
첫 번째 항은 기존 Constrastive Loss인 Instance Contrastive Loss 항입니다. 두 번째 항은 저자들이 제안하는 Prototype Contrastive Loss입니다. 이때의 𝜙는 Cluster Concentration을 의미하는데요. 즉 해당 Cluster에 얼마나 많은 Feature가 가까이 뭉쳐서 분포하는지를 의미합니다. 수식으로는 다음과 같습니다.
- c : cluster centroid
- Z : 해당 cluster에 속하는 feature의 개수
따라서 수식을 바탕으로 Prototype Contrastive Loss를 Minimize 한다는 의미를 해석해보면 다음과 같습니다.
첫 번째로 Maximize (v * c) 는 Cluster의 Centroid로 모이라는 의미가 됩니다.
두 번째로 Minimize (𝜙) 는 더 많은 Feature를 Cluster에 속하게 하라는 의미가 됩니다.
𝜙 항이 존재함으로써 하나의 Cluster에 모든 Feature가 모여버리는 Trivial Solution을 방지하게 됩니다.
4. 실험 결과
다음은 이렇게 제안한 방법의 실험 결과를 살펴보겠습니다.
4-1. Mutual information analysis
먼저 Mutual Information Analysis입니다.
(a) 그래프는 𝜙를 적용했을 때(파란색)와 적용 안 했을 때(빨간색) Cluster의 사이즈 분포입니다. 𝜙를 적용했을 때 더 작은 사이즈의 Cluster가 더 많이 생성되는 모습입니다. 이를 통해 더 좋은 Representation을 학습했다고 생각할 수 있습니다.
(b) 그래프는 학습에 따른 Mutual Information 그래프입니다. Instance 로 학습할 때 보다 Prototype으로 학습할 때가, InfoNCE로 학습할 때 보다 ProtoNCE로 학습할 때가 더 큰 MI를 보입니다.
4-2. Low shot classification
다음은 Low Shot Classification 성능입니다.
모든 Shot에 대해 SimCLR, MoCo보다 좋은 성능을 볼 수 있습니다.
4-3. Semi supervised image classification
다음은 Semi Supervised Image Classification 성능입니다.
Under 200 epochs에서 SOTA를 기록했습니다.
4-4. Image classification with linear classifiers
다음은 Image Classification With Linear Classifiers 성능입니다.
마찬가지로 200 epochs 이하에서 SOTA를 기록했습니다.
4-5. Image classification with knn classifiers
다음은 Image Classification With knn Classifiers 성능입니다.
knn으로 테스트한다는 의미는 별다른 학습 없이 Feature 분포만을 사용하여 Classification 한다는 의미입니다. 이때 PCL은 기존 Self Supervised Learning 방법들중 가장 좋은 성능을 보입니다. 이는 PCL의 학습 방법이 가장 우수하다는 의미입니다.
4-6. Clustering evaluation
다음은 Clustering Evaluation 성능입니다.
- AMI : Adjusted Mutual Information
4-7. Object detection
다음은 Object Detection 성능입니다.
4-8. Visualization of learned representation
다음은 t-SNE를 사용한 Learned Representation 비교입니다.
MOCO랑 비교했을 때 확실히 feature 별로 잘 구분되어 있는 모습입니다.