일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Pix2Pix
- cifar100-c
- semi supervised learnin 가정
- WGAN
- shrinkmatch
- ConMatch
- 백준 알고리즘
- 최린컴퓨터구조
- mme paper
- adamatch paper
- tent paper
- mocov3
- simclrv2
- SSL
- conjugate pseudo label paper
- 컴퓨터구조
- Meta Pseudo Labels
- CycleGAN
- remixmatch paper
- CoMatch
- CGAN
- Entropy Minimization
- UnderstandingDeepLearning
- 딥러닝손실함수
- BYOL
- Pseudo Label
- shrinkmatch paper
- dann paper
- GAN
- dcgan
- Today
- Total
Hello Computer Vision
Contrastive Learning 에 대한 이해 본문
이번에 SSL도 공부하면서 흥미가 생긴 few-shot learning, zero-shot learning 등 많은 곳에서 유사도를 훈련하는 contrastive 를 활용하는 것들이 많이 나오길래 한번 짚고 넘어가보려고 한다. 본 포스팅은 논문을 보지 않고 여러 글들을 참고하여 개인적인 이해를 담았습니다. 참조한 글들은 아래 남겨두었습니다.
Contrastive Learning(이하 CLR)이란 무엇인가?
self-supervised learning(이하 SSL)의 일종으로 데이터에서 서로 두 데이터간의 특징들의 비교를 통해 학습하는 방법
SSL은 별도의 라벨링을 하지 않고 기존의 feature들을 이용하는 것이므로 SSL의 방법 중 하나라고 할 수 있다. 기존의 SSL이 무엇인가에 대한 글에서 사람과 컴퓨터의 사물을 인식하는 방법에서 큰 차이가 있다고 말을 했는데, CLR역시 이미지의 특징을 파악하기 위해 고안되었다.
이렇게 기본 이미지에서 데이터 증강을 활용하더라도 기본 base는 같으므로 positive pair로 간주한다.
그러나 이 강아지들은 기본 base가 다르므로 negative pair로 간주되는데 이러한 것들을 거리를 정의하여(loss) 학습을 진행한다. 즉 각각의 데이터들에 대해 label을 따로 주지 않아도 고양이들만의 특징, 강아지들만의 특징을 학습하여 실제 데이터들의 unseen 데이터들에 대해서도 잘 작동한다.
CLR의 구조
이를 잘 설명해주는 구조는 다음과 같을 수 있다. (비전 분야)
각 이미지에 대하여 여러가지의 데이터 증강을 활용하고 encoder 에 넣는다(여기서 encoder는 CNN이 될 수 있고 Transformer도 될 수 있다). Encoder를 통해서 나온 벡터들에 대하여(이미지의 여러가지 특징을 담고 있다) Projection head에서는 일정차원으로 차원을 줄여준다(ex. 2048 -> 128). 그리고 이렇게 차원이 줄여진 embedding들에 대하여 각 증강 이미지들끼리는 positive pair이므로 가깝게, 다른 이미지에서 나온 것들은 negative pair이므로 멀게 하도록 한다. 그리고 이러한 loss를 contrastive loss라고 한다.(유클라디안 거리가 될 수 있고 cross entropy가 될 수 있다)
CLR 학습과정
전체적인 학습과정을 보여주는 이미지이다. pretext task에서 이미지들의 representation들을 학습하기 때문에 downstream task에서 fine tuning을 진행하는 과정에서 좋은 성능을 낼 수 있다.
유의점
데이터 증강을 활용하여 유사도를 계산하는 방법이다 보니 어떤 데이터증강을 사용하는지에 따라 성능이 많이 다르다 -> 학습이 불안정하다. 이에 대해 어떠한 증강 방법들이 성능이 좋은지도 나와있는 논문이 있는걸로 알고 있습니다(SimCLR인지..? 그러나 컴퓨터 성능만 된다면 가능한한 많은 증강을 활용하면 더 성능이 좋을 거 같다고 생각은 합니다).
앞으로의 이해를 위해 가볍게 정리해보았고 혹시라도 틀린 내용 있다면 지적 감사히 받겠습니다.
Reference
https://daebaq27.tistory.com/97
https://towardsdatascience.com/understanding-contrastive-learning-d5b19fd96607
https://iambeginnerdeveloper.tistory.com/198
'Self,Semi-supervised learning' 카테고리의 다른 글
비전공생의 Distilating the Knowledge in a Neural Network(2015) 리뷰 (0) | 2023.04.30 |
---|---|
비전공생의 BERT(2019) 논문 리뷰 (1) | 2023.04.25 |
비전공생의 SimCLR(2020) 논문 리뷰 (2) | 2023.04.12 |
비전공생의 MoCo(2020) 논문 리뷰 (0) | 2023.04.11 |
비전공자의 Self-Supervised Learning에 대해 이해해보기 (0) | 2023.03.14 |