SimCLR - A Simple Framework for Contrastive Learning of Visual Representations

ai
Author

Seil Kang

Published

May 23, 2023

Chen et. al (Google Research)이 ICML`20에 게재한 A Simple Framework for Contrastive Learning of Visual Representations 를 읽고 작성한 논문 리뷰입니다.

CODE PAPER

\[ \newcommand{\black}[1]{\color{black}{#1}} \newcommand{\red}[1]{\color{red}{#1}} \]

Abstract

이 논문은 컴퓨터 비전 분야에서 contrastive learning of visual representations 을 위한 SimCLR이라는 프레임워크를 제시합니다. 특수 아키텍처 또는 Memory Bank의 필요성을 제거하여 기존의 Contrastive learning 기반의 Self-supervised learning 알고리즘을 단순화합니다.

저자들은 다음 세 가지 topics를 강조합니다.

  1. Data augmentations의 구성(Composition)의 중요성
  2. Representation과 Contrastive loss 사이에 nonlinear transform를 도입하면 학습된 representation의 품질이 크게 향상.
  3. Contrastive learning은 Supervised learning에 비해 더 큰 batch size 와 더 많은 training step에 있어서 이점을 가지고 있음.

Abstract를 요약하면 SimCLR는 Contrastive learning of visual representation에 관한 간단한 Framework를 제공하며 이 연구는 학습된 representation의 quality를 개선하는 데 있어 Data augmentation, Learnable transformation, Batch size, Training step의 중요성을 보여줍니다.

논문의 결과는 당시 2020년 기준으로 76.5%(Learned linear classifier)로 SOTA를 달성하고 이 성능은 기존 SOTA보다 7% 향상된 성능이며 Supervised ResNet-50의 성능과 일치합니다.

또한 레이블이 지정된 데이터의 1%만 Fine-tuning을 하면 SimCLR은 85.8%의 상위 5개 정확도를 달성하여 레이블이 지정된 샘플이 100배 더 적어 AlexNet보다 성능이 뛰어납니다.

Intuition

어렸을 적에 학교에서 아래 사진과 같은 퀴즈를 풀었던 경험이 있을겁니다.

아이들은 왼쪽의 사진이 고양이라는것을 인식하고 오른쪽에 들어갈 사진으로 같은 고양이 사진을 오른쪽 사진들 중에서 찾을 것입니다.

“이 Excercise는 아이가 물체를 인식하고 다른 물체와 대조할 수 있도록 가르치는 역할을 합니다. 우리는 기계에게도 비슷한 방식으로 가르칠 수 있을까요?”

논문의 저자들은 Contrastive Learning라는 기술을 통해 가능하다는 것이 밝혀졌습니다. 이 기술은 기계에게 비슷한 것과 다른 것을 구별하는 방법을 가르치려고 시도합니다.

문제 정의

아이 대신 기계에 대해 위의 Excercise를 모델링하려면 다음 세 가지가 필요합니다.

1. 유사한 이미지와 유사하지 않은 이미지 Examples

기계 학습 모델을 교육하려면 유사한 이미지 쌍과 서로 다른 이미지 쌍이 필요합니다.

Supervised learning은 사람이 이러한 이미지 쌍을 직접 annotation으로 지정해야합니다. 이를 자동화하기 위해 우리는 Self-supervised learning을 활용할 수 있습니다. 그러나 이를 어떻게 구성해야 할까요?

2. Image represents 를 알아내는 능력

우리는 기계가 이미지를 이해하기 위해서 이미지의 representation을 얻는 mechanism이 필요합니다.

3. 두 Image가 유사하다는 것을 정량화 할 수 있는 능력

우리는 두 Image의 유사도를 계산할 수 있는 mechanism이 필요합니다.

The SimCLR Framework Approach

해당 논문은 사람의 감독 없이 시각적 representation을 학습하기 위해 “SimCLR” 프레임워크를 제안합니다. 이 프레임워크는 Contrastive Learning의 개념을 새로운 아이디어와 조합하여 self-supervised 방식으로 위의 문제를 모델링합니다.

SimCLR Framework

SimCLR 프레임워크의 아이디어는 매우 간단합니다. 이미지 하나를 선택하고, 이를 random transformations을 가해 두 가지 변형된 이미지 \(x_i\)\(x_j\)의 쌍을 생성합니다. 이 쌍 중 각 이미지는 인코더를 통과하여 representation을 얻습니다.

그런 다음 non-linear fully connected layer(비선형 완전 연결 계층)이 적용되어 representation \(z\)를 얻습니다. 이 작업의 목표는 동일한 이미지에 대해 생성된 두 representation \(z_i\)\(z_j\) 사이의 유사도를 최대화하는 것입니다.

Step by Step Example

예를 통해 SimCLR 프레임워크의 여러 구성 요소를 살펴보겠습니다. 수백만 개의 레이블이 지정되지 않은 이미지로 이루어진 훈련 corpus가 있다고 가정해봅시다.

1. Self-supervised Formulation(Data Augmentation)

첫번째로, 우리는 raw images에서 크기 N의 배치를 생성합니다. 단순함을 위해 N = 2의 배치를 가정하겟습니다. 논문에서는 대규모의 배치 크기 8192를 사용합니다.

해당 논문에서는 이미지를 가져와 random (crop + flip + color jitter + grayscale) 의 조합을 적용하는 random transformation 함수 T를 정의합니다.

이 배치의 각 이미지에 대해 random transformation 함수가 적용되어 2개의 이미지 쌍을 얻습니다. 따라서 배치 크기가 2인 경우, 총 4개의 이미지(2*N = 2*2 = 4)를 얻게 됩니다.

2. Getting Representations(Base Encoder)

Image pair 안에서 각 변형된 이미지는 인코더를 통과하여 이미지 representation을 얻습니다. 사용되는 인코더는 범용적이며 다른 구조로 대체할 수 있습니다. 아래에 표시된 두 인코더는 가중치를 공유하며, 우리는 벡터 \(h_i\)\(h_j\)를 얻게 됩니다.

이 논문에서는, 저자들은 ResNet-50을 ConvNet 인코더로 사용했습니다. Output의 출력은 2048-dimension을 가진 vector \(h\) 입니다.

3. Projection Head

두 가지 Augmented images는 Dense -> Relu -> Dense 레이어를 통과하여 비선형 변환(non-linear transformation)을 적용합니다. 그 다음 \(z_i\), \(z_j\) representation을 project 시킵니다. 이는 논문에서 \(g(.)\)로 표기되며 projection head라고 불립니다.

4. Tuning Model (Bringing similar closer)

따라서 한 batch안에서 augment 된 각 이미지에 대한 embbedding vectors \(z\)를 얻습니다.

이 embedding로 부터 앞으로 설명하게될 loss식을 구하게 됩니다.

a. Calculation of Cosine Similarity

하나의 이미지로부터 나오게 된 두 가지 augmented versions 에 대하여 cosine similarity를 계산합니다. \(x_i\)\(x_j\)의 cosine similarity는 projected representations \(z_i\), \(z_j\)에서 계산됩니다.

\[ \black{s_{i,j} = \frac{{z_{i}^{T}z_{j}} }{(\tau ||{z_{i}}|| ||{z_{j}}||)}} \]

  • \(\tau\) : 조정가능한 temperature parameter. input의 scale를 조절할 수 있고 cosine similarity의 범위를 [-1, 1]에서 확장할 수 있음.
  • \(\lVert z_{i} \rVert\) : vector의 norm.

batch 안의 각 augmented image 간의 pairwise cosine similarity는 위의 공식을 사용하여 계산됩니다. 그림에서 보여지듯이 이상적인 경우, 고양이 이미지 간의 유사도는 높을 것이며, 고양이와 코끼리 이미지 간의 유사도는 낮을 것입니다.

b. Loss Calculation

SimCLR은 “NT-Xent loss”(Normalized Temperature-Scaled Cross-Entropy Loss)라고 불리는 contrastive loss를 사용합니다. 직관적으로 어떻게 작동하는지 살펴보겠습니다.

먼저, augmented pairs in the batch를 하나씩 취합니다.

다음으로, softmax 함수를 적용하여 이 두 이미지가 유사한지에 대한 확률을 얻습니다.

이 소프트맥스 계산은 두 번째 augment된 고양이 이미지가 첫 번째 고양이 이미지와 가장 유사하다고 판단될 확률을 얻는 것과 동등합니다.

여기서 배치의 나머지 이미지는 유사하지 않은 이미지(부정적인 쌍)로 샘플링됩니다. 따라서 InstDisc, MoCo, PIRL과 같은 이전 방법에서 필요한 특수한 아키텍처, 메모리 뱅크 또는 큐가 필요하지 않습니다.

그런 다음, 위 계산의 로그에 음수를 취하여 쌍에 대한 손실을 계산합니다. 이 수식은 Noise Contrastive Estimation(NCE) Loss입니다.

\[ \black{l(i, j) = -log\frac{exp(s_{i, j})}{ \sum_{k=1}^{2N} l_{[k!= i]} exp(s_{i, k})}} \]

논문은 이미지의 위치가 interchanged 된 경우도 고려해서 동일한 쌍에 대한 손실을 두 번 계산합니다.

마지막으로, 크기가 N=2인 배치 내의 모든 쌍에 대한 손실을 계산하고 평균을 취합니다.

\[ \black{ L = \frac{1}{ 2\{N} } \sum_{k=1}^{N} \{[l(2k-1, 2k) + l(2k, 2k-1)]} } \]

loss를 기반으로 encoder와 projection head의 representation은 시간이 지남에 따라 개선되며, 얻은 representation은 유사한 이미지를 latent space상에서 더 가까이 배치합니다.

Downstream Tasks

SimCLR 모델이 contrastive learning 과제에서 훈련되면, transfer learning에 사용할 수 있습니다. 이를 위해 projection head에서 얻은 representation 대신 인코더의 representation이 사용됩니다. 이러한 representation은 ImageNet classification와 같은 downstream tasks에 사용될 수 있습니다.

Objective Results

SimCLR는 ImageNet에서 이전 SSL보다 뛰어난 성능을 보였습니다. 아래 이미지는 다른 SSL으로 학습된 representation을 사용하여 훈련된 linear classifier의 SOTA accuracy를 보여줍니다. 회색 십자가는 지도 학습된 ResNet50을 나타내며, SimCLR은 굵게 표시되었습니다.

SimCLR은 비교적 적은 수의 Parameters 수로 기존의 방법들의 성능을 상회합니다. 추가로 4x 버젼은 Supervised learning과 맞먹는 성능을 기록했습니다.

Source: SimCLR paper {: .text-center}

  • ImageNet ILSVRC-2012에서 SimCLR은 76.5%의 SOTA 정확도를 달성하였으며, 이는 이전 SOTA SSL인 Contrastive Predictive Coding보다 7% 향상된 수치이며 지도 학습된 ResNet50과 비슷한 성능을 보입니다.
  • 레이블 1%로 훈련할 때, SimCLR은 AlexNet보다 100배 적은 레이블로도 85.8%의 Top 5위 정확도를 달성하여 우수한 성능을 보였습니다.

SimCLR Code

Tensorflow(official) : by the paper authors is available on GitHub. They also provide pretrained models for 1x, 2x, and 3x variants of the ResNet50 architectures using Tensorflow Hub.

PyTorch : implementations available that have been tested on small datasets like CIFAR-10 and STL-10.

References

Reuse