ML,DL

Self-Supervised Learning

BKM 2025. 6. 15. 17:20

Self-Supervised Learning에 대해 막연하게는 알고 있지만, 가끔 헷갈리고 모호한 부분이 아직 존재하는 것 같아서 정리해보려한다.

What is Self-Supervised Learning?

ML/DL에는 전통적으로 크게 두가지의 학습 방식이 존재하는데, Supervised/Unsupervised, 지도/비지도 학습 방식이다.

 

Supervised Learning(지도 학습)

Supervised Learning이란, 말 그대로 모델에게 직접 지도를 해주면서 학습을 시키는 방식이다.

 

우리가 ML/DL에서 가장 흔하게 접하는 (학습 Data, 정답 Label)의 형태로 모델에게 주면서 모델이 Data를 Input으로 받았을 때, 이를 활용하고 분석해서 주어진 Label을 예측할 수 있도록 유도하는 학습 방식이며, 대표적인 예로는, Regression, Classification 등의 Task가 존재한다.

 

문제와 정답을 모두 주고 이에 맞춰서 학습을 하도록 하는 방식이기 때문에, 일반적으로 가장 성능이 좋고, 학습 방식 또한 직관적이고 간단하다는 장점이 존재한다.

 

하지만, 모델의 Train/Validation (+Test)에 사용되는 모든 데이터에 대해서 Label이 꼭 필요하기 때문에, Real World에서 바로 수집할 수 있는 데이터의 형태와는 다소 거리가 있는 편이고, 수집한 데이터를 활용하기 위해서는 Labeling 작업이 필수적이기 때문에 이를 위한 비용이 높고, 그만큼 많은 데이터를 사용하기는 쉽지 않은 편이다.

Unsupervised Learning(비지도 학습)

반대로, unsupervised learning은 데이터에 대한 Label이 주어지지 않은 상태로, supervised learning에서 사용하던 (x,y)의 Pair에서 x만을 제시하고, 모델이 x라는 데이터를 적절히 활용해 주어진 Task를 수행할 수 있도록 훈련시키는 것이며, 대표적인 Unsupervised Learning의 예로는 Data Space내에서 주어진 Data가 어떤 group에 속하는지를 예측하는 Clustering(군집화) task가 존재한다. 

 

Unsupervised learning은 데이터에 대한 labeling 작업이 필요하지 않기 때문에 더 많은 데이터를 쉽게 사용할 수 있다는 장점이 있고, 반대로 supervised learning에 비해 일반적으로 높은 예측 성능을 기대하기는 어렵다는 단점이 존재한다.

Self-Supervised Learning

그렇다면, Self-supervised Learning은 무엇일까? 이름을 보고 직관적으로 생각해보면, 모델이 제공받은 학습 데이터를 보고 스스로 생각해 학습하는 정도의 느낌으로 예상해볼 수 있을 것 같다.

 

Self-supervised Learning은 위에서 정리한 supervised learning과 unsupervised learning을 결합한 방식으로 생각할 수 있다.

Self-supervised Learning을 High-level에서 바라본 Pipeline은 다음과 같다.

  1. 주어진 데이터에 대한 latent factor(즉, 데이터 자체에 대한 특징)을 모델이 학습
    • 데이터 자체에 대한 특징이란, 예를 들어, 강아지에 대한 이미지를 모델이 학습한다고 할때 강아지라는 종의 전반적인 외형적 특징을 의미한다.
    • 이를 학습하는 과정에서, 모델이 이를 잘 학습할수 있도록 하는 Pretext(Auxiliary) Task를 부여하게 되는데, 이는 어떠한 학습 방식을 사용하는지에 따라 여러가지 방법이 존재한다.
  2. Latent Factor에 대해 학습된 모델의 Weight를 가지고 Downstream Task를 수행
    • 1번의 과정을 통해, 모델은 입력값으로 들어오는 데이터의 특징을 파악할 수 있게 되고. 이를 Main task의 수행을 위한 모델의 하나의 Layer로 사용하면서 Downstream(Main) Task를 수행하도록 한다.
      • 이 과정을 Transfer Learning이라고 한다.
    • Downstream Task는 그 목적에 따라, Supervised Learning이 될수도 있고 Unsupervised Learning이 될수도 있다.

Learing based on Pretext Task

A Survey on Self-supervised Learning: Algorithms, Applications, and Future Trends의 survey paper에서는 Pretext Task를 크게 4가지로 분류하고 있다.

 

  1. Context-Based Learning
    • 주어진 데이터의 내재적인 특성을 학습하도록 하는 방식
    • Data Augmentation을 통한 방식(Rotation, Colorization, Jigsaw, inpaint, patch prediction 등)
    • Augmented Data에 대해 설정한 임의의 label을 통해 모델이 데이터가 변형되었더라도, 원형 데이터에 대해 변형된 것임을 인지할 수 있도록 학습시킴
  2. Constrastive Learning
    • 입력된 데이터에서 Augmented Data를 생성
    • 같은 원본에서 나온 Augmented Data와 원본 간에는 Positive Pair가 생성됨
    • 원본의 Source가 다른 augmented data간에는 Negative Pair가 생성됨
    • Score(Positive Pair) > Score(Negative Pair)가 되도록 학습
      • Cosine Similarity
      • Triplet Loss = L(Origin, Positive, Negative)
      • InfoNCE Loss : L(Origin, One Positive, Multiple Negative)
  3. Generative Learning
  4. Constrastive & Generative Learning