안녕하세요.

이번 글에서는 contrastive learning에 대해서 설명하도록 하겠습니다.

 

Contrast라는 용어를 정의하면 아래와 같습니다.

 

"A contrast is a great difference between two or more things which is clear when you compare them."

 

그렇다면, contrastive learning이라는 것은 대상들의 차이를 좀 더 명확하게 보여줄 수 있도록 학습 한다는 뜻이 되겠죠?

 

'대상들의 차이'라는 말에서 중점적으로 봐야 할 것은 '차이'라는 용어입니다. 보통 어떤 '기준'으로 인해 '차이'가 발생합니다. 

 

예를 들어, 어떤 이미지들이 서로 유사하다고 판단하게 하기 위해서는 어떤 기준들이 적용되어야 할까요? 즉, 어떤 '기준'을 적용하면 이미지들이 비슷한지, 비슷하지 않은지에 대한 '차이'를 만들어 낼 수 있을까요?

 

고양이라는 이미지가 있다고 가정해보겠습니다. 고양이 이미지에 augmentation을 주게 되도 그 이미지는 고양이 일 것입니다. 즉, 원본 고양이 이미지와 augmentation이 적용된 고양이 이미지서로 유사(=positive pair)하다고 할 수 있죠.

 

 

누군가(제3자)가 augmented image에 굳이 'similar'라고 labeling 해줄 필요 없이 input data 자기 자신(self)에 의해 파생된 라벨링(supervised ex: augmented image) 데이터로 학습(learning)하기 때문에 self-supervlsed learning이라고 할 수 있습니다.   

 

"하지만 'similar' 정의는 어떤 기준을 삼느냐에 따라 굉장히 달라 질 수 있습니다."

 

물론, similar를 찾는 방법도 굉장히 다양하겠죠. 지금부터 이에 대해서 천천히 알아보도록 하겠습니다.

 

 

 

 

 

1. Similarity learning 

앞서 언급한 내용 중에 가장 핵심적이고 자주 등장하는 용어가 'similar'입니다. 그렇다면, contrastive learning과 similarity learning은 어떤 관계가 있을까요? 먼저, similarity learning정의부터 살펴보겠습니다.

 

"Similarity learning is closely related to regression and classification, but the goal is to learn a similarity function that measures how similar or related two objects are."

 

결국, contrastive learningsimilarity learning 모두 다 어떤 객체들에 대한 유사도와 관련이 있다는걸 알 수 있습니다.

 

<그림 출처: https://www.youtube.com/watch?v=OkcS4qE4Zsg>

 

 

좀 더 similarity learning을 알아볼까요?

먼저, similarity learning의 3가지 종류들에 대해서 알아보도록 하겠습니다.

 

(↓↓참고 자료↓)

https://en.wikipedia.org/wiki/Similarity_learning

 

Similarity learning - Wikipedia

Similarity learning is an area of supervised machine learning in artificial intelligence. It is closely related to regression and classification, but the goal is to learn a similarity function that measures how similar or related two objects are. It has ap

en.wikipedia.org

 

 

1-1. Regression similarity learning

 

      • 두 객체(ex: 이미지)간의 유사도를 알고 있다는 전제하에 supervised learning 학습을 시키는 것
      • 유사도는 어떤 기준(pre-defined)에 의해 설정되는데, 이 기준에 의해 모델이 학습됨
        • 위의 y유사도를 나타내 주는 → 즉, 유사도가 높으면 y 값이 높게 설정 됨
      • 앞서 설정한 유사도에 따라 모델이 학습되면, 학습된 모델에 test 데이터인 두 객체(ex:이미지)가 입력 될 때 pre-defined 기준에 따라 유사도를 결정
        • Ex) 강아지 이미지 데이터들 간에는 모두 강한 유사도를 주고강아지 이미지 데이터와 고양이 이미지 데이터들의 유사도는 굉장히 낮은 값으로 설정해주어 학습 시키면학습 한 모델은 강아지 이미지들끼리에 대해서 높은 유사도 값을 regression할 것 입니다.
    • 하지만이러한 유사도(y)를 미리 알고 어떻게 할당해줄 것인지는 굉장히 어려운 문제

 

 

 

1-2. Classification similarity learning

 

[앞선 "Regression similarity learning" 방식과 다른 점]

  • Regression: y∈R
    • 유사도(=y) 값의 범위는 실수 (ex: 0~1) → 유사도의 정도를 파악할 수 있음
    • 이때, R값의 범위를 어떻게 설정하고, 어떤 y값을 해줘야 하는지 어려움 (soften label 개념정도로 봐도 될 듯)
  • Classification: y{0,1}
    • 두 객체가 유사한지 아닌지만 알려주기 때문에 입력으로 들어오는 두 객체(ex:이미지)가 어느 정도로 유사한지는 알 수 없음

 

 

 

1-3. Ranking similarity learning

[앞선 두 가지 방식("regression or classification similarity learning")과 다른 점]

  • 앞선 두 가지 방식과 다른 부분은 "세 가지 입력 데이터 (triplets of objects)"를 필요로 한다는 점입니다.
  • 일반적인 데이터 "x"와 "x와 유사한 x+", "x와 유사하지 않은 x-" 데이터가 입력으로 들어갑니다.
  • 이런식으로 유사한 데이터들 간의 유사도와 유사하지 않은 데이터들 간의 유사도 차이를 위와 같이 설정하여 학습하게 됩니다. 

 

결국 contrastive learning과 similarity learning 모두 데이터들 간의 similarity를 알아내는 것이 목적입니다. 

 

"Contrastive learning is an approach to formulate the task of finding similar and dissimilar things for an ML model."

 

"The main idea of contrastive learning is to learn representations such that similar samples stay close to each other, while dissimilar ones are far apart."

 

<이미지 출처 논문: Deep Metric Learning via Lifted Structured Feature Embedding>

 

 

"Similarity learning is closely related to distance metric learning." 

 

데이터들끼리 유사도가 높다는 것을 거리(distance)관점에서 해석해볼 수 도 있습니다. 예를 들어, 유사한 데이터 끼리는 거리가 가깝다는 식으로 해석해 볼 수 있는 것이죠. 그래서, similarity learning, contrastive learning을 배우다 보면 distance metric learning이라는 용어가 자주 등장합니다. 

 

 

 

 

 

2. (Distance) Metric learning

유사도판단하는데 있어서는 굉장히 다양한 기준이 적용될 수 있습니다.  유사도 판단하는 한 가지 방법은 거리관점에서 해석하는 것입니다. 

 

보통 거리라는 개념을 단순히 점과 점 사이의 최단 거리로만 이해하는 경우가 있지만, 거리를 측정하는 방식에는 다양한 방법이 존재 합니다. 즉, "거리"라는 개념을 어떻게 해석하느냐가 굉장히 중요한 문제라고 볼 수 있습니다.

 

결국, 두 객체간의 거리를 측정할 수 있는 방법이 다양하기 때문에 두 객체간의 유사도를 적용할 수 있는 기준이 다양하다고 할 수 있습니다.

 

"Similarity learning is closely related to distance metric learning. Metric learning is the task of learning a distance function over objects."

 

 

위의 정의에 따라 metric learning객체간의 거리를 학습하는 방법들에 대해 연구하는 분야라고 할 수 있습니다.

 

그렇다면, metric이라는 개념부터 정의해볼까요? 

 

"A Metric is a function that quantifies a “distance” between every pair of elements in a set, thus inducing a measure of similarity."

 

 

객체(데이터)들 간의 거리(or 유사도)를 수량화 하는 방법여러가지가 있습니다. (결국, 우리가 배우는 contrastive learning 기법에서도 아래와 같은 metric들 중에 어느 것을 사용하느냐에 따라 다양한 연구가 진행 될 수 있겠죠.)

 

<그림 출처:  https://slazebni.cs.illinois.edu/spring17/lec09_similarity.pdf>

 

 

Metric learning에서 중요한 개념은 '거리'입니다. 그렇기 때문에, metric learning에서 정의한 4가지 속성도 '거리'의 속성을 그대로 반영하고 있죠.

 

"A metric or distance function must obey four axioms"

 

  1. Non-negativity: f(x,y)≥0
    • x, y 두 데이터 간의 거리는 음수가 될 수 없다.
  2. Identity of Discernible: f(x,y)=0 <=> x=y
    • x, y 두 데이터 간의 거리가 0이라면, x와 y 데이터는 동일하다.
  3. Symmetry: f(x,y) = f(y,x)
    • "x,y" 간의 거리나, "y,x" 간의 거리는 같다 
  4. Triangle Inequality: f(x,z)≤f(x,y)+f(y,z)
    • "x,z"간의 거리는 "x,y" 간의 거리와 "y,z"간의 거리를 합한 것보다 클 수 없다.

 

 

 

2-1. Metric  of Two types

거리를 측정하는 metric 방식에도 크게 두 가지 종류가 있습니다.

 

  1. Pre-defined Metrics
    • 단순히 데이터들을 정의 된 metric 공식에 입력하고 '거리' 값을 도출하여 유사도 비교 
  2. Learned metrics
    • 데이터들로 부터 추정할 수 있는 다른 지표들을 metric 공식에 적용하여 '거리' 값을 도출 

 

<그림 출처: https://slazebni.cs.illinois.edu/spring17/lec09_similarity.pdf>

 

 

'Learned metrics' 방식의 대표주자라고 할 수 있는 것은 딥러닝을 이용한 deep metric learning 방식입니다. 그럼 지금부터 deep metric learning에 대해 좀 더 알아보도록 하겠습니다.

 

 

 

2-2. Deep Metric Learning (Feat. Contrastive loss)

객체(데이터)들이 만약 고차원이라면 서로 간의 유사도비교하는건 굉장히 어려운 문제가 될 수 있습니다.

 

예를 들어, 의미적으로 가깝다고 생각되는 고차원 공간에서의 두 샘플(A,B)간의 실제 Euclidean distance는 먼 경우가 많습니다.그 이유는 “curse of dimension”으로 인해 의미 있는 manifold를 찾지 못했기 때문이죠. 

 

[추후에 Auto-Encoder 관련 글이 완성되면 manifold에 대한 보충 설명 글로써 링크를 걸어두도록 하겠습니다]

 

<그림 출처:  https://slidetodoc.com/image-manifolds-a-a-efros-16-721-learningbased/>

 

 

실제 Euclidean distance는 manifold 상에서 구해야 하기 때문에, manifold를 잘 찾는 것이 두 데이터간 유의미한 similarity를 구하는데 결정적인 역할을 할 수 있겠죠.

 

<그림 출처:  https://slidetodoc.com/image-manifolds-a-a-efros-16-721-learningbased/>

 

 

결국, 유의미한 manifold를 찾기 위해서는 dimension reduction 방식이 필요한데, 그것이 오늘날 자주 사용되는 deep neural network이죠.  

 

<그림 출처: http://daddynkidsmakers.blogspot.com/2021/05/>

 

 

결국, 특정 metric(ex: Euclidean distance)을 기준으로 한 유사도를 찾기 위해 deep learning model의 parameter들이 학습된다면, 이는 해당 meteric을 찾기 위한 manifold를 찾는 과정이라고 볼 수 있고, 이 과정 자체가 "estimated from the data"를 의미하기 때문에, learned metrics라고 볼 수 있는 것입니다.

<그림 출처:  https://tyami.github.io/deep%20learning/Siamese-neural-networks/>

 

다시 말해, deep metric learning이란 deep neural network를 이용하여 적절한 manifold를 찾아 metric learning을 연구하는 분야라고 정리할 수 있습니다. 

 

 

UIUC 대학의 SVETLANA LAZEBNIK 교수similarity learning ppt자료를 살펴보면 deep neural network를 이용하여 metric learening을 하는 것을 확인해 볼 수 있습니다.

 

<그림 출처:  https://slazebni.cs.illinois.edu/spring17/lec09_similarity.pdf>

 

 

[deep metric learning의 예시]

먼저, 유사한 이미지를 한 쌍으로 한 positive pair 끼리는 Euclidian Loss가 최소화가 되도록 학습 시키면, deep neural network는 고차원 원본 데이터 positive pair끼리 거리가 가깝도록 low dimension으로 dimension reduction(or embedding) 할 것입니다. 즉, positive pair끼리는 Euclidian loss가 최소화 되게 parameter들이 학습된 것인데, 이것을 원본 데이터로 부터 추정(estimation)되었다고 볼 수 있기 때문에 learned metric이라고 한 것이죠.

 

 

또한, negative pair 끼리는 Euclidan distance 값이 커지도록 설정해줄 수 있습니다. 아래 수식을 보면, margin (m) 이라는 개념이 도입되는데, margin은 negative pair간의 최소한의 거리를 의미합니다. 예를 들어, 우리는 loss 값이 최소가 되기를 바라는데, negative pair (xn, xq) 의 거리가 m 보다 작다면 계속해서 loss 값을 생성해낼 것 입니다.  그런데, 만약 학습을 통해 negative pair 간의 거리가 m 보다 크게 되면 loss 값을 0으로 수렴시킬 수 있게되죠. 

 

 

 

위에서 언급한 두 수식을 결합한 loss를 contrastive loss라고 합니다.

 

 

쉽게, contrastive loss를 통해 학습을 한다는 것은 두 데이터가 negative pair일 때, margin 이상의 거리를 갖게 하도록 학습하는 것과 동일하다고 할 수 있습니다.

<그림 출처: https://pizpaz.github.io/paper/ml/Ranked-List-Loss-for-Deep-Metric-Learning/>

 

 

Pytorch에서는 negative pair 뿐만 아니라, positive pair에 대한 margin 값도 설정해놓고 있습니다. (참고로 아래 LpDistance는 Euclidean distance를 의미합니다)

 

<그림 출처: https://www.semanticscholar.org/paper/The-General-Pair-based-Weighting-Loss-for-Deep-Liu-Cheng/6c55bcc205b24c7aaf39680d71716e598a3cc536>

 

(↓↓↓ Pytorch metric learning loss ↓↓↓)

https://kevinmusgrave.github.io/pytorch-metric-learning/losses/#contrastiveloss

 

Losses - PyTorch Metric Learning

Losses All loss functions are used as follows: from pytorch_metric_learning import losses loss_func = losses.SomeLoss() loss = loss_func(embeddings, labels) # in your training for-loop Or if you are using a loss in conjunction with a miner: from pytorch_me

kevinmusgrave.github.io

 

 

참고로, margin이라는 개념이용하게 되면 경우에 따라 negative pairs의 관계를 크게 3가지로 나눌 수 있습니다.

  • d: distance를 구하는 함수
  • a: positive, negative pair의 기준이 되는 데이터
  • Hard Negative Mining: positive pair에 해당하는 margin 안에 negative sample이 포함되어 있는 경우
  • Semi-Hard Negative Mining: positive pair margin 범위 안에 속하진 않지만, negative pair margin 범위 안에도 속하지 않는 경우
  • Easy Negative Mining: negative pair margin 범위에 속하는 경우

<그림 출처: https://www.mdpi.com/2073-8994/11/9/1066/htm>

 

 

 

 

결국, contrastive loss를 이용하여 deep metric learning을 하게 되면 아래 그림 같이, 유사한 데이터들끼리 clustering이 될 것 입니다.

<그림 출처: https://www.sciencedirect.com/science/article/abs/pii/S0925231219306800>

 

 

사실, contrastive loss라는 용어와 개념은 "Dimensionality Reduction by Learning an Invariant Mapping"이라는 논문에서 기원했습니다. 아래 논문의 저자로 우리가 익히 알고 있는 'Yann LeCun' 교수님도 있으시네요.

 

“Contrastive loss (Chopra et al. 2005) is one of the earliest training objectives used for deep metric learning in a contrastive fashion.”

 

 

 

앞서, 소개한 contrastive loss는 contrastive learning의 한 종류입니다.

 

즉, contrastive learning 이라는 것은 데이터들 간의 특정한 기준에 의해 유사도를 측정하는 방식인데, contrastive loss는 positive pair와 negative pair 간의 유사도를 Euclidean distance 또는 cosine similairty를 이용해 측정하여, positive pair 끼리는 가깝게, negative pair 끼리는 멀게 하도록 하는 deep metric learning (or learned metric) 이라고 정리할 수 있습니다.

 

(참고로, contrastive learning을 굳이 deep neural network로 하지 않아도 되지만, deep neural network의 강력한 효용성 때문에 deep neural network를 기반으로한 deep metric learning 방식인 contrastive learning을 하려고 하는 것이 죠.)

 

Positive pair 끼리는 가깝게, negative pair 끼리는 멀게 하도록 하는 deep metric learning (or learned metric) 기반의 contrastive learning 종류는 굉장히 다양합니다. 즉, 유사도측정하는 방식 다양하죠. 예를 들어, infoNCEmutual information이라는 개념기반으로 유사도를 측정합니다. (Triplet loss는 이미 similarity learning에서 간단히 설명한 바 있습니다).  (Mutual information 관련 설명은 다음 글에서 하도록 하겠습니다).

 

 

 

지금까지의 설명을 기반으로 봤을 때 deep metric learning 기반의 contrastive learning이라는 분야를 다룰 때 중요하게 다루어야 하는 개념 두 가지가 있습니다.

 

  1. Similarity Measure (Metric)
    • Contrastive learning은 positive pair 끼리는 가깝게, negative pair 끼리는 멀게 하도록 해주는 것이 목적입니다.
    • 이 때, positive pair라는 것을 상징하는 유사도 값의 종류는 굉장히 다양합니다.
      • ex1) Euclidean distance → Contrastive loss
      • ex2) Mutual information → infoNCE
  2. Dimension Reduction (deep neural network; Nonlinear dimension reduction)
    • Contrastive learning 즉, 데이터들 간의 유사도를 비교하는데 있어서 굳이 deep neural network를 사용할 필요는 없습니다.
    • 하지만, 고차원 데이터들 간의 유사도를 비교하는 것은 쉬운일이 아닙니다.
    • 그래서, 유사도 기준에 알맞도록 고차원 데이터를 저차원으로 dimension reduction 하는 방법이 중요합니다.
    • Deep neural network는 이미지와 같은 고차원 데이터를 저차원 feature로 embedding 할 수 있는 강력한 dimension reduction 기능을 갖고 있습니다. 

(↓↓↓ 딥러닝 외 nonlinear dimensionality reduction 방식 ↓↓↓)

 

 

 

개인적으로는, contrastive learning연구하기 위해서는 두 가지 key word 인, "Metric learning", "Deep Neural Network"에 초점을 맞추는게 중요하다고 생각합니다.

 

 

 

지금까지 Contrasitve learning에 대해 간단히 정리해봤습니다.

이번 contrastive learning에서는 유사도 Euclidean distance를 기준으로 한 contrasitve loss를 소개했습니다.

 

다음 글에서는 contrastive learning 중에 mutual information을 유사도의 기준으로 삼은 다양한 loss에 대해 소개해 보도록하겠습니다. 

 

감사합니다. 

 

 

 

[Reference site]

https://lilianweng.github.io/lil-log/2021/05/31/contrastive-representation-learning.html#contrastive-loss

 

Contrastive Representation Learning

The main idea of contrastive learning is to learn representations such that similar samples stay close to each other, while dissimilar ones are far apart. Contrastive learning can be applied to both supervised and unsupervised data and has been shown to ac

lilianweng.github.io

 

https://slazebni.cs.illinois.edu/spring17/lec09_similarity.pdf

 

 

'Self-Supervised Learning > Contrastive learning (2018~)' 카테고리의 다른 글

1. Mutual information  (0) 2021.10.04

안녕하세요.

이번 글에서는 self-supervised learning이 무엇인지 설명해보려고 합니다.

 

Self-supervised learning는 개념이 어떻게 해서 탄생하게 됐고, 현재 어떠한 방향으로 학습이 되고 있는지 간단히 살펴보겠습니다. 

 

 

 

 

1. Unsupervised learning

Unsupervised learninglabel(정답)이 없는 데이터로 학습하는 모든 방법론을 일컫습니다.

 

<그림 출처:  https://machinelearningknowledge.ai/supervised-vs-unsupervised-learning/>

 

 

라벨이 없이 학습 할 수 있는 사례는 아래와 같이 다양 합니다.

 

 

<그림 출처:  https://www.researchgate.net/figure/Taxonomy-of-Unsupervised-Learning-Techniques_fig1_319952798>

 

 

 

위의 taxonomy에서 "Unsupervised Learning Techniquess" → "Hierarchical learning" → "Deep learning"의 대표적인 사례는 Generative model 중 하나인 GAN이라고 볼 수 있습니다.

 

(↓↓↓GAN 관련 정리된 글↓↓↓)

https://89douner.tistory.com/329

 

5-1. GAN (Part1. GAN architecture)

안녕하세요. 이번 글에서는 최초의 GAN 논문인 "Generative Adversarial Nets"을 리뷰하려고 합니다. 우선, GAN이라는 모델이 설명할 내용이 많다고 판단하여 파트를 두 개로 나누었습니다. Part1에서는 GAN a

89douner.tistory.com

 

 

딥러닝 외에도 기존dimension reduction task에서도 다양한 unsupervied learning 모델들이 사용 됐는데, 그 중에 대표적으로 알고 있는 것들은 t-SNE, auto-encoder 같은 것들이 있습니다. T-SNE, auto-encoder 모두 라벨 없이 데이터의 latent space를 찾는 dimension reduction 기법이라 할 수 있습니다. (auto-encoder는 애초에 처음에 dimension reduction 방식으로 제안이 되었죠)

 

(T-SNE의 embeding 결과 예시↓)

 

 

 

(↓Auto-Encoder의 embedding 결과 예시↓)

<그림 출처:  https://www.youtube.com/watch?v=rNh2CrTFpm4>

 

 

 

 

최초의 CNN 모델인 LeNet(1998)의 창시자 Yann LeCun 교수 또한 평소에 unsupervised learning 방식을 매우 강조해왔습니다. Yann LeCun 교수는 NIPS 2016 Key Note에서는 아래 PPT 내용을 발표하였고,

 

<그림 출처:  https://medium.com/syncedreview/yann-lecun-cake-analogy-2-0-a361da560dae>

 

 

 

같은 해(2016) CMU에서 특히 이를 강조하기도 했죠.

 

 

 

<그림 출처:  https://twitter.com/mldcmu/status/1046869963347283973>

 

 

 

 

 

2. Yann Lecun & Self-Supervised Learning

[2-1. 2018]

2018.09.12 Samsung AI Forum (SAIF) 에서 Yan Lecun 교수 self-supervised learning이라는 용어사용하게 됩니다. (물론 이전에도 사용해 왔을 수 도 있습니다) Yan Lecun은 supervised learning의 단점, reinforcement learning의 단점을 통해 self-supervised learning의 필요성을 주장했습니다.

 

  • Supervised learning의 단점
    • "레이블" 데이터가 많아야 함
    • 학습되지 않은 데이터가 튀어나오면 예측 불가능
  • Reinforcement learning의 단점
    • 실패해도 다시 시도하면 되는 게임에선 가능
    • 현실 세계에서는 실패 자체가 치명적일 수 있어서 적용하기 힘듬
  • Self-supervised learning의 필요성
    • 주변 상황과 조건을 고려해 예측해야 함
    • 실패하기 전에 사고가 난다는 것을 예측해야 함

 

 

(↓↓↓ Yan Lecun이 self-supervised learning을 언급했다는 내용↓↓↓)

https://news.samsung.com/kr/%EC%84%B8%EA%B3%84-%EC%84%9D%ED%95%99%EB%93%A4%EC%9D%98-%EB%88%88%EC%9C%BC%EB%A1%9C-%EB%B3%B8-ai%EC%9D%98-%EB%AF%B8%EB%9E%98%EC%82%BC%EC%84%B1-ai-%ED%8F%AC%EB%9F%BC-2018

 

세계 석학들의 눈으로 본 AI의 미래…‘삼성 AI 포럼 2018’

인공지능(AI)과 딥러닝(Deep Learning) 분야 최고 권위자들이 한국을 찾았다. 9월 12~13일 이틀에 걸쳐 열린 ‘삼성 AI 포럼 2018’에 연사로 나서기 위해서다. 이들은 AI의 고도화된 학습기법인 ‘자기지

news.samsung.com

 

https://www.sait.samsung.co.kr/saithome/event/saif2018.do

 

Samsung AI Forum 2018 | Samsung Advanced Institute of Technology

Samsung AI Forum 2018 | Samsung Advanced Institute of Technology

www.sait.samsung.co.kr

 

 

[2-2. 2019]

2018년도 까지만 해도 self-supervised learning과 관련된 연구들이 진행되고 있었지만, unsupervised learning이라는 용어와 별도로 분리해서 사용하지 않는 등 “self-supervised learning” 용어가 보편화 되지 않았던 것 같습니다.

 

하지만, Yann LeCun 교수는 self-supervised learning이라는 개념이 unsupervised learning 용어와 분별하여 사용할 필요성을 느끼고 2019 트위터에 “self-supervised learning”이라는 개념구체화 하기 시작합니다.

 

 

 

 

(↓↓↓Representation learning용어는 뒤에서도 나옴↓↓↓)

<그림 출처: https://chowdera.com/2021/01/20210109003603375e.html>

 

 

 

 

[2-3. 2020]

2020.11.05 Samsung AI Forum (SAIF) 에서 Yann LeCun 교수 다시 self-supervised learning강조했습니다. 좀 더 구체적인 내용들을 토대로 연설을 시작하면서 왜 self-supervised learning이 필요한지 설명했습니다.

 

<그림 출처: [SAIF 2020] Day 1: Energy-Based Models for Self-Supervised Learning - Yann LeCun | Samsung>

 

 

 

 

3. Self-Supervised Learning (SSL) Motivation

Self-Supervised Learnig을 배우는 이유는 다양하겠지만, 이번 글에서는 대표적인 한 가지 이유에 대해서만 말씀드리겠습니다.

 

Vision 분야에서 딥러닝을 가장 흔하게 사용하는 방법 중 하나는 pre-trained model을 transfer learning 하여 사용하는 것입니다. Transfer learning을 하는 이유는 ImageNet과 같이 방대한 양의 데이터를 미리 학습하여 다양한 이미지들에 대한 feature를 잘 뽑을 수 있게 filter들을 학습시키고, 특정 task에 적용하는 것이죠.

 

보통 초기 layer들은 edge와 같은 특징들을 뽑아낼 수 있게 학습이 될텐데, edge feature를 뽑아 줄 수 있는 filter들을 형성하는데 있어서 이미지 종류는 크게 상관이 없을 확률이 높습니다. 왜냐하면, 강아지의 edge 특징이나 자동차의 edge 특징이나 거기서 거기일 가능성이 크기 때문이죠. 하지만, 마지막 layer에서 추출할 수 있는 semantic 정보이미지 종류마다 다를 수 있습니다. 그래서, 우리가 최종적으로 분류할 task의 이미지 종류가 pre-training 시에 사용됐던 이미지 종류와 다르다면 마지막 layer 부분을 다시 학습(by transfer learning or fine-tuning)하여 최종 task 이미지의 semantic 정보를 적절하게 추출할 수 있도록 setting 해주는 것이죠. 

 

 

여기서 중요하게 알고 넘어가야할 용어가 있습니다. 바로 "upstream task""downstream task"입니다.

 

upstream taskpre-training 단계에서 진행하는 학습 task를 의미하고, downstream tasktransfer learning 시에 적용하고자 하는 target task를 의미합니다.

 

그렇다면, transfer learning 관점에서 왜 self-supervised learning이 필요할까요? 이 질문에 답을 하기 위해서는 기존의 방식들에 대한 의문을 먼저 던져봐야합니다.

 

 

“Why should we use supervised learning method for pre-training model?”

 

  1. Supervised learning 학습 방식이 downstream task에 효과적인 feature를 학습하는데 도움이 되는가?
  2. Pre-trained model을 학습하는데 대용량의 label 정보가 필요한가?

 

사실 위의 두 질문에서 첫 번째 질문에 대한 답이 "supervised learning 방식은 좋지않다"라면 2번에 대한 답은 자연스럽게 "필요없다"가 됩니다. 즉, 우리는 첫 번째 질문에 대한 고찰만 하면 되는 것이죠.

 

그렇다면, 1번 질문을 집중적으로 살펴보면서 self-supervised learnin이 필요한 이유에 대해서 살펴보도록 하겠습니다.

 

"Supervised learning 학습 방식이 downstream task에 효과적인 feature를 학습하는데 도움이 되는가?"

 

 

Mon May 3rd through Fri the 7th

2021 ICLR Keynote

Alexei A. Efros (UC Berkely)

 

(↓↓↓ 위의 슬라이드 자료 ↓↓↓)

https://iclr.cc/media/iclr-2021/Slides/3720.pdf

 

(↓↓↓ 위의 슬라이드 발표영상 ↓↓↓)

 

 

위의 발표내용 중에 제가 문제라고 봤던 부분을 정리해서 설명해보도록 하겠습니다. 여기서 부터는 주관적인 해석이 많이 들어가 있으니 참고해서 봐주시고, 잘 못 됐거나 다른 관점이 있으신 분들은 댓글 남겨주시면 감사하겠습니다.

 

 

기존CNNsupervised learning으로 학습하는 방식에 대해 살펴보겠습니다. CNN 분류 학습의 가장 큰 목표라고 할 수 있는 것은 아래 다양한 의자들을 모두 동일한 클래스인 "의자"라고 분류하는 것 입니다. 즉, 의자의 다양한 형태에 robust하게 분류 할 줄 알아야 하는데, 이를 위해선 의자의 공통적인 feature를 잘 뽑아낼 수 있도록 Conv filter학습되어야 합니다. 그래서, 학습 시 아래 다양한 의자들을 모두 동일한 label로 설정하게 되는 것이죠. 

 

 

 

그런데, 잘 생각해보면 사람들이 유아기 때 저 의자를 구분할 수 있었던 이유는 '누군가가 저 모든 형태 하나 하나씩 의자라고 알려주었기 때문'이 아니라 '먼저 각각의 의자의 특성들을 잘 파악하고 서로 유사한지 아닌지 비교해나가기 때문'인 것을 알 수 있습니다.

 

 

“People don’t rely on abstract definitions/lists of shared properties”

 

 

즉, 애초에 저 '다양한 의자들을 모두 같은 것'이라고 가정하고 출발하는게 '인간이 학습하는 방식'에 맞지 않다고 보는 것이죠.

 

 

 

위와 같은 문제를 해결하기 위해 딥러닝 모델도 먼저 각각의 의자 이미지들에 대한 특성을 잘 파악할 수 있게 학습시키는게 먼저라고 봤습니다.

 

"즉, 해당 이미지들이 무엇인지를 학습하는 것이 아닌 해당 이미지들이 무엇과 유사한지를 살펴보도록 하는게 인간의 학습관점에 더 맞다고 판단한 것이죠."

 

 

 

 

또한, 다양한 의자의 feature들을 잘 표현(representation)해줄 수 있도록 Conv filter가 학습(learning)되는게, downstream task를 위한 representation learning 관점에서 더 좋을 수 있다고 봤습니다.

 

 

 

 

 

4. 앞으로 볼 내용 

Self-Supervised Learning은 아래의 순서대로 발전해 왔습니다.

그렇기 때문에 앞으로 Self-Supervised Learning 카테고리에서는 Pretext task, Contrastive learning, New approach 이렇게 세 가지 서브 카테고리로 나눠서 설명하도록 하겠습니다.

 

<그림 출처:  https://www.youtube.com/watch?v=5BCQ7T2Rw1w>

 

 

+ Recent posts