SupCon(2020), Supervised Contrastive Learning
[저자] Prannay Khosla(Google Reasearch), Piotr Teterwak(Boston University), Chen Wang(Snap Inc.), Aaron Sarna(Google Reasearch), Yonglong Tian(MIT), Phillip Isola(MIT), Aaron Maschinot(Google Reasearch), Ce Liu(Google Reasearch), Dilip Krishnan(Google Reasearch)
[인용수] 528회인용 (구글 스칼라 검색 기준)
[버전] 5개 [v1] 23 Apr 2020 , [v2] 29 Oct 2020 , [v3] 13 Nov 2020, [v4] 10 Dec 2020, [v5] 10 Mar 2021
[요약] 구글리서치, MIT에서 기존의 Cross-entropy 대신 새로운 'Supervised contrastive loss' 제안
: 기본 손실함수인 크로스엔트로피(cross-entropy) 대신 'Supervised contrastive loss'를 통해 신경망을 지도학습 방식으로 학습시킨 후(pre-train) ImageNet(벤치마크 데이터셋)에 맞게 파인튜닝하여 SOTA를 달성함
01 Warm-up |
1.1 한 눈으로 확인하는 결과
<01> SupCon vs SupCrossEntropy(with Augmentation)
- 'Supervised Contrastive(SupCon)Loss'가 크로스엔트로피 손실함수(SubCrossEntropy)보다 더 좋은 성능 기록!
- 여러가지 데이터 증강 기법(AutoAugment, RandAugment, CutMix)과 결합한 크로스엔트로피 함수의 성능과 비교
- CutMix : 이미지의 부분을 다른 이미지 부분으로 대체
<02> SupCon vs SupCrossEntropy vs SimCLR>
1.2 그림으로 이해하는 원리
1) 'Contrastive loss', 새로운 손실함수?
- 손실함수를 바꿔서 SOTA를 기록했기 때문에,
"뭔가 새로운 대단한 손실함수인가보다!!!🤓" 할 수 있지만,
- 사실, Contrastive Learning(Loss)은 이 논문에서 처음 제시한 개념이 아닙니다😮.
- 여기서 new loss라고 하는 것은,
기존의 비지도학습(Unsupervised/ Self-supervised) 방식에서
지도학습방식(Supervised)을 사용했기 때문입니다(사실 아주 특별하진 않죠..🤐🤐)
- 그래서 이 논문의 컨트리뷰션은, 사실 새로운 손실함수를 제시했다기보다는
"분류를 위한 새로운 사전학습 방법을 제시했다는 것"에 입니다.(by Yannic Kilcher)
- 그렇다면, 기존 Contrastive와 무엇이 다른지
(Old) Self Supervised Contrastive vs (New)Supervised Contrastive를 살펴보겠습니다
(Old) Self Supervised Contrastive vs (New)Supervised Contrastive |
||
(Old) Self Supervised Contrastive |
- ' 레이블이 없는 대량의 데이터를 어떻게 잘 학습시킬 수 있을까?' 라는 질문에 대한 답으로 등장한 기법으로, 레이블이 없이 의미있는 표현(representation)을 학습한다는 장점이 있습니다! - '레이블이 없는데 어떻게 학습시킬까?' -> 하나의 기준 이미지(anchor)을 두고, 이에 대한 다양한 증강(뒤집기(flip),자르기(crop) 등) 으로 유사 이미지(positive)를 생성한 후, -> 나머지 이미지를 negative 클래스로 설정하여, positive와 negative의 표현(representation)이 임베딩 공간에서 분리되도록 학습하는 방식입니다. - 여기서의 문제는, negative의 기준이 다른 클래스가 아니라 다른 이미지 라는 것이죠. 즉, 같은 강아지 사진도 negative로 분류가 됩니다. 😱😱😱 - 이렇게 사전학습한 모델을 가지고, 강아지/고양이를 분류하는 문제에 파인튜닝을 한다고 했을때, 이미 멀어진 두 강아지 샘플(강아지1, 강아지2)을 쉽게 분류할 수 없을 겁니다 -> 결론적으로, 기존의 Self Supervised Contrastive는 이후의 학습을 더 어렵게 만듭니다😱😱😱 |
|
(New) Supervised Contrastive |
- 하지만, 레이블이 있다면 굳이 비지도학습 방법으로 할 필요가 없겠죠! - 따라서, 기존의 비지도학습의 장점이었던, 데이터 증강(Data augmentation)은 그대로 사용하되, 레이블을 가지고, 같은 클래스끼리는 유사한(가까운) 표현을 얻도록 학습합니다! (클래스끼리 그들만의 클러스터를 만들게 됩니다) - 이는 이후에 크로스엔트로피 함수를 사용한 분류기를 위해 좋은 시작점(=좋은 표현)을 제공합니다. |
2) 크로스엔트로피보다 SupCon이 뭐가 더 좋은걸까?
✅ [Old] 크로스엔트로피를 통한 학습 (Supervised Cross Entropy)
- 일반적인 이미지 분류 딥러닝 학습에서는,
☝ 1차적으로 이미지에 대한 좋은 표현(representation)을 얻도록 모델을 학습하고,
(모델은 더 정확히 말하면 Encoder 입니다)
☝☝ 2차적으로 표현에 대한 좋은 결정 경계선(decesion boundary)를 얻도록 분류기를 학습합니다.
그리고, 이 두가지는 동시에👐 이루어집니다.
"근데, 꼭 동시에 학습되어야할까요?"
-> 좋은 표현을 먼저 학습하고, 그리고 결정경계를 학습하면 안될까요?🤔🤔
이것이 바로 이 논문에서 제안하는 Supervised Contrastive Learning입니다!
✅✅ [New] 논문의 Supervised Contrastive Learning
- 이 논문에서는 위와 같이 표현과 결정경계를 동시에 학습하지않고,
📎 (Stage1) 먼저 모델을 좋은 표현을 얻도록 훈련하고, 모델을 Freeze한뒤,
📎📎 (Stage2) 그 다음 분류기가 좋은 결정 경계선을 얻도록 훈련하는
-> 두 단계에 걸쳐서 학습을 하는 방식으로 진행합니다.
02 Deep-dive |
좀더 깊게 이해하기 위해,
손실함수의 수식을 함께 비교해보면서 살펴보겠습니다.
2.1 Loss
✅ Self-Supervised Contrastive Loss
- 기존의 Self-Supervised Contrastive loss부터 먼저 차근차근 보면서,
위 논문에서는 어떻게 확장해가는지 살펴 보겠습니다.
(But, 예상한것과 같이 둘의 식은 크게 다르지 않습니다!)
So, 기본 Contrastive loss를 이해하는 시간을 갖겠습니다🌝
- 아래 식은 Self-Supervised Contrastive Loss로 이미 선행 연구들에서 정의한 식입니다.
- 여기서 Loss를 최소화하기 위한 방향으로 학습된다면,
-> -log() 내부의 항은 최대화되도록 학습이 될 것입니다.
다시 말하면, 아래와 같이 정리할수 있습니다.
☝ 분자는 크게!
-> positive 샘플간의 내적값은 커지도록,
== "positive 샘플은 가까워지도록"
(positive : 1개 샘플에 대한 augmented들)
☝☝ 분모는 작게!
-> negative 샘플간의 내적값은 작아도록,
== "negative 샘플은 멀어지도록"
✅✅ Supervised Contrastive Loss
- 위의 기존의 Self Supervised Contrastive loss에서 추가된것은,
아래 파랑과 녹색 부분입니다 (😯😯❓❓)
- 요약하자면 레이블 데이터를 가지고 지도학습을 한다는 의미입니다.
2.2 Gradient
1) Supervised Contrastive Loss
- 다음으로는, 미분값인 Gradient가 어떤식으로 작동하는지 살펴보면서,
기존의 Triplet Loss보다 어떤 점이 더 우수한지 비교해보겠습니다!🌝
- 아래 식을 보면,
graidnet를 positive와 negative로 나눌 수 있는데
각각의 식에 대당하는 부분은 positive, negative 와 같습니다.
positive만 예로 설명해보겠습니다.
<positive>
1. easy positive (구분하기 쉬운 positive 들)
i) 두 표현(zi, zj)가 유사하기 때문에 내적값이 1에 가까워짐
ii) 쉽게 구분 가능하기 때문에 Pij도 높음
👉 ∴ gradient ≈ 0
2. hard positive(구분하기 어려운 positive들)
i) 두 표현(zi, zj)가 유사하지 않기 때문에 내적값이 0에 가까워짐
ii) 쉽게 구분 가능하기 때문에 Pij도 높지 않음(moderate)
👉 ∴ gradient > 0
위의 식을보면, easy positive의 gradient는 0으로 수렴하고,
반면에 hard positive는 0보다 큰 값을 갖게 되기 때문에
👉👉 결론적으로 hard positive에 집중한다는 것을 의미합니다.
(negative에 대해서도 같은 맥락입니다)
2) Triplet Loss
- Triplet Loss도 Contrastive loss와 마찬가지로,
Supervised representation learning에서
크로스엔트로피의 대안으로 일반적으로 사용되는 loss입니다.
- Triplet Loss에서는 hard negative mining이 중요한 기술이고,
이를 위해 연산 비용이 요구됩니다.
- 하지만, Supervised Contrastive Loss의 Gradient에서도 확인했듯이
hard 샘플에 자동으로 집중하는 특성을 갖고 있습니다.
[참고 자료]
https://www.youtube.com/watch?v=MpdbFLXOOIw
댓글