rueki

A Simple Framework for Contrastive Learning of Visual Representations (SimCLR) 본문

카테고리 없음

A Simple Framework for Contrastive Learning of Visual Representations (SimCLR)

륵기 2021. 11. 27. 22:20
728x90
반응형

Self supervised learning이 인기가 높아지는 추세인 것 같다. 처음 self supervised learning을 접한 것이 Constrastive Learning인데 얼핏 들으면 생각보다 심플한 개념으로 보이긴 하는데, 보면 볼 수록 어려운 내용인 것 같다.

그래서 이참에 관련 논문을 한번 읽으며 리뷰해보려고 한다.

 

Self supervise의 장점이라 함은 labeling이 따로 필요없다는 점인것같다. 아무리 supervised learning이 성능도 잘 나오고

계속 쓰이고 있다지만, 데이터 확보 및 수집은 진짜 어려운 것 같다. 

 

본문에서 소개하는 3가지 개념은 아래와 같다.

1.  composition of data augmentations plays a critical role in defining effective predictive tasks

2.  a learnable nonlinear transformation between the representation and the contrastive loss substantially improves the quality of the learned representations

3.  contrastive learning benefits from larger batch sizes and more training steps compared to supervised learning. 

 

self-supervised learning에서 어떻게 label 없이 학습하냐가 궁금했는데, 대체적으로 pretask를 정의하고 representation learning을 하는 것 같다. 내가 본 예시로는 이미지를 augmentation해서 원본 이미지와 augmented image의 표현이 비슷한지에 대해 학습을 하는 것을 봤다. 이렇게 학습을 통해서 label이 부여되는 것으로 이해를 했다.

 

constrative learning의 기본 concept은 이미지들 중에서 비슷한 이미지는 positive pair로 보고 그 외는 negative pari로 인지하여, 두 set를 서로 점점 멀리 떨어지게하는 컨셉이다. 여기서 positive pair 구성은 하나의 이미지를 augmentation 적용하여 서로 다른 이미지로 쌍을 구성하게 된다.

 

Introduction

네트워크는 크게 generative, discriminative 두 가지로 구성이 되어 있으며, 기존에는 pixel-level로 generation을 진행했으데 이는 representation을 파악하기 충분한 방법이 아니라고 한다. 결과가 너무 heuristic하여 pretext task를 다시 정의한다. 그리고 discriminative 부분에서는 contrastive learning을 접목시켜서 높은 성능을 보인다고 한다.

SimCLR의 특징을 나타낸 것인데, pretext task로 data augementation을 여러개 적용하는 것이 더 효과적이며,

non-linear transformation이 더 좋다고한다.

 

Method

input x에 대해서 서로 다른 augmentation을 적용하고, encoder f를 통해 나온 representation vector를 projection 해서 나온 z를 이용하여 contrastive loss에 사용을 한다.

downstream task에 적용할 때는 encoder와 representation vector h만을 사용한다고 한다.

여기서 encoder는 resnet50을 사용한다. projection을 할 때 알아두어야 할 것이 위에서 말한 non-linearity인데 이는 Relu를 통해서 이루어지며, linear transformation보다 성능이 좋다고 한다.

Contrastive loss를 언급하기 앞서서, positive pair 간의 유사성을 파악하고, 비슷해요 같은 label로 인식할텐데 여기서 사용하는 유사도는 Consine similarity를 사용한다.

위의 loss를 normalized temperature scaled cross entropy loss라 하는데, 줄여서 NT-Xent라고 한다.

exp function 안에 있는 t값은 Temperature parameter이다.

위는 본문서 소개하는 학습 알고리즘인데, 요약하자면, Batch 크기 N만큼 각각 data augmentation을 두번 적용하면, 곧 데이터 개수가 2N개가 되는데 이 pair를 similarity를 계산해서 loss에 반영해서 학습을 하는 방식이다.

 

Large dataset을 사용함에 따라 memory bank가 필요하지 않게 되며, 학습에는 SGD를 optimizer로 사용했을 때는 

학습이 불안정하다. 그래서 LARS optimizer를 사용했다고 한다. 실험에서 256부터 8192까지 다양한 배치사이즈로 적용을 했다고 하는데, 자세한 내용은 실험 결과에서 보려고 한다.

 

Data Augmentation for Contrastive Representation Learning

predictive task로 data augmentation을 적용하는데, 적용하는 method는 보통 아래와 같은 방법들이 있다.

이 수많은 방법에서 본문에서는 몇 가지 방법을 사용했는데, 데이터 크기가 항상 다르기에, crop 및 resize는 들어가는 방향으로 가는데 다른 transformation과 섞어서 사용하며 1개만 사용했을때 성능이 안 좋기도 했다.

위의 사진에서 보면 각각 method를 섞어서 성능을 나타낸 것인데 제일 높게 나온 것이 color 변환과 crop을 했을 때로 나온다. color distortion을 안 하고, crop만 했을 때는, crop 이미지들에 대한 분포가 비슷한 형태를 가지고 있어서 학습에 있어서 어려움이 있지만, color distortion을 한 경우에는 representation을 더 학습할 수 있다고 한다.

그리고 downstream task에 projection 한 뒤의 z를 사용하지 않고 이전의 인코더 부분까지만 사용하는지에 대해서 설명을 해주는 표인데, representation을 표현하는 h가 효율적이라고 하는데, z = g(h)를 하게 되면서 이미 augmentation 한 결과에 대해서 학습을 하기에 이전의 augmentation을 하는 것에 대해서는 무시하게 된다고 한다. 그래서 아래의 T-sne 시각화에서도 h가 좀 더 잘 군집화 되어있는 것을 볼 수가 있다.

728x90
반응형
Comments