본문 바로가기

Review/Reading

Semi-supervised learning (준지도학습): 개념과 방법론 톺아보기

Semi-supervised learning overview 논문 [14-16] 및 여러 방법론 관련 논문들 [1-13] 읽으며 얻은 지식을 바탕으로 글로 정리해보려고 한다. 오랜만에 쓰는 기술글이라 설렌다!! 나도 처음 공부하는 분야이기 때문에 부족한 부분도 있겠지만, 틀린 부분이나 덧붙여 설명이 필요한 부분이 있다면 댓글에 남겨주시면 더 풍부한 글이 될 것 같다. 그럼 시작!

Supervised learning 의 한계

딥러닝의 가장 대표적인 방법론은 supervised learning (지도학습)이다. 하지만 supservised learning은 어쩌면 학습 데이터의 패턴을 외우는 학습법에 불과하다. 그러므로 한번도 보지 않은 데이터에 대해서는 맞추기 쉽지 않다. 일반화가 잘되기 위해서는 필연적으로 더 많은 labeled data가 요구된다. 성공적으로 딥러닝을 도입한 이미지 분야의 경우도 역시 대용량 labeled 이미지를 확보했기 때문에 좋은 성능을 얻을 수 있었다고 볼 수 있다. 하지만 labeled data를 확보하기 어려운 분야들도 존재한다. labeling에 전문성이 필요하거나 labeling에 걸리는 프로세스가 긴 분야의 경우 대용량의 labeled data를 얻기 힘들 수 있다. labeled data가 적은 경우에는 labeled data의 분포가 진짜 데이터의 분포 전체를 커버하지 못할 수도 있기 때문에 학습데이터에는 없는 새로운 테스트 데이터가 들어왔을 때 잘 맞추지 못할 가능성이 크다.

Semi-supervised learning 이란?

적은 labeled data가 있으면서 추가로 활용할 수 있는 대용량의 unlabeled data가 있다면 semi-supervised learning을 고려할 수 있다. Semi-supervised learning (준지도학습)은 소량의 labeled data에는 supervised learning을 적용하고 대용량 unlabeled data에는 unsupervised learning을 적용해 추가적인 성능향상을 목표로 하는 방법론이다. 이런 방법론에 내재되는 믿음은 label을 맞추는 모델에서 벗어나 데이터 자체의 본질적인 특성이 모델링 된다면 소량의 labeled data를 통한 약간의 가이드로 일반화 성능을 끌어올릴 수 있다는 것이다. (아래의 그림에서도 확인할 수 있듯이 왼쪽에 supervised learning과 오른쪽 semi-supervised learning을 비교해보면 supervised learning의 decision boundary는 사실상 optimal하지 않다. unlabeled data를 활용하여 데이터 자체의 분포를 잘 모델링하면 오른쪽 semi-supervised learning 그림처럼 더 좋은 decision boundary를 얻을 수 있다.)

 

supervised learning과 semi-supervised learning의 decision boundary 비교

 

Semi-supervised learning의 목적함수는 supervised loss \( \textit{L}_{s} \) 와 unsupervised loss \( \textit{L}_{u} \) 의 합을 최소화하는 것으로 표현할 수 있다. 그 말인즉슨 supervised, unsupervised를 1-stage로 한큐에 학습한다. 이것이 2-stage로 이루어지는 self-supervised learning, transfer learning 등과의 차이점이다.

$$ \textit{Loss} = \textit{L}_{s} + \textit{L}_{u}  $$

소량의 labeled data에 적용하는 supervised loss의 경우 target이 discrete value인지 continuous value인지에 따라 classification loss/regression loss를 선택하여 학습하면 된다. 그리고 대용량 unlabeled data는 unsupervised loss를 주어 데이터의 특성에 대해 학습하게 된다. 여기서 unlabeled data에 주는 unsupervised task를 어떻게 정할 것이냐에 따라 방법론이 나뉘게 된다. 이는 semi-supervised learning의 일반적인 가정을 먼저 살펴본 후에 자세히 설명하도록 하겠다.

Semi-supervised learning 의 가정

The smoothness assumption

"만약 데이터 포인트 \( {x}_{1} \) 과 \( {x}_{2} \)가 고밀도 지역에서 가까이 위치하다면, 해당하는 출력 \( {y}_{1} \) 과 \( {y}_{2} \) 도 가까워야한다."

이는 같은 class에 속하고 같은 cluster인 두 입력이 입력공간 상에서 고밀도 지역에 위치하고 있다면, 해당하는 출력도 가까워야한다는 것을 의미한다. 반대도 역시 성립하는데, 만약 두 데이터포인트가 저밀도지역에서 멀리 위치한다면, 해당하는 출력도 역시 멀어야 한다. 이러한 가정은 classification엔 도움이 되는 가정이지만 regression에선 별로 도움이 안된다.

The cluster assumption

"만약에 데이터 포인트들이 같은 cluster에 있다면, 그들은 같은 class일 것이다."

이 가정이 성립한다면 하나의 cluster는 하나의 class를 나타낼 것이고 이를 통해 decision boundary는 저밀도지역을 통과해야만 한다라고 말할 수 있다. 

The manifold assumption

"고차원의 데이터를 저차원 manifold로 보낼 수 있다."

고차원의 공간상에서 generative task를 위한 진짜 data distribution은 추정하기 어렵다. 또한 discriminative task에서도 고차원에서는 class간의 distance가 거의 유사하기 때문에 classification이 어렵다. 그러나 만약 data를 더 낮은 차원으로 보낼 수 있다면 우리는 unlabeled data를 사용해서 저차원 표현을 얻을 수 있고 labeled data를 사용해 더 간단한 task를 풀 수 있다.

Semi-supervised learning 방법론들

대용량 unlabeled data를 어떻게 학습에 사용할 것이냐의 관점에서 다양한 semi-supervised learning의 방법론들이 등장하였다. 대부분 이미지 데이터(CIFA-100, ImageNet 등)의 classification task에 적용하여 supervised learning 대비 성능을 많이 향상시켰다는 결과를 확인할 수 있다. 최근 몇 년간 다양한 semi-supervised learning 방법론들이 쏟아졌는데 몇가지 카테고리로 분류해보고 세부내용을 알아보자.

 

semi-supervised learning 방법들의 decision boundary 비교

Entropy minimization [1]

Entropy minimization는 'decision boundary는 데이터의 저밀도 지역에서 형성될 것'이라는 가정에 기초해서 unlabeled data output의 entropy를 minimization하는 기법이다. 간단히 말하면 애매하게 굴지 말고 확실히 해라..이런 느낌이다. 예를 들어 개와 고양이를 분류하려고 할 때, 개 0.6, 고양이 0.4가 나오는 것보다 개 0.9 고양이 0.1 이 나오는 것이 entropy가 더 낮고 이런 방향으로 학습이 되어야한다는 것이다.(=decision boundary 근처에 있는 애매한 애들을 확실하게 구별할 수 있도록) 이 방법은 단일기법으로 사용했을 시 성능이 그리 좋지 못하지만 최신 방법들에 약간의 꼼수(?)로 사용할 때 효과가 좋다. 예를 들면 MixMatch, UDA, ReMixMatch 는 temperature sharpening을 통해 entropy minimization을 간접적으로 사용하고 FixMatch의 경우 pseudo-label을 이용하기 때문에 이또한 간접적 entropy minimization이다. pseudo-label은 왜 entropy minimization이냐 라고 할 수 있는데 pseudo-label을 달 때, argmax()를 통해 one-hot vector로 mapping 시키는 과정이 들어가기 때문이다.

 

Temerature sharpening과 pseudo label을 통한 entropy minimization

Proxy-label method [2-3]

Proxy-label기법은 labeled set으로 학습된 모델을 이용해 unlabeled data point들에 label을 달아주는 기법이다. 간단한 기법으로 classification, regression에 모두 사용할 수 있다는 장점이 있다. 만약 labeled set의 분포를 벗어나는 샘플들에는 제대로된 label을 달아주기 어렵기 때문에 성능향상에 한계가 있다는 단점이 있다. 그래도 labeled set 분포 내의 샘플들에 대해 interpolation하는 효과가 있기때문에 아직도 많이 사용되는 기법이다. 여러 변형도 가능한데, pseudo-label의 confidence가 높은 샘플들만 이용해 성능을 향상시키는 여러 논문들도 나오고 있고 (confidence를 측정할 수 있는 uncertainty 모델링 등) pseudo-label set을 점점 늘려간다던가 더 큰 모델을 사용한다던가 다양한 방법으로 고도화 가능하다. 유명한 모델로는 self-training (pseudo-label, meta pseudo-label, noisy student), multi-view training (Co-training) 등이 있다.

 

Pseudo label 알고리즘

Generative models [4-5]

Generative model은 label이 없이도 원본 데이터를 생성(복원)할 수 있는 feature를 뽑아내는 reconstruction task를 수행한다. reconstruction task 역시 label이 없이 입력만 있다면 수행할 수 있기 때문에 semi-supervised learning에서 unlabeled data에 주는 unsupervised task로 적합하다. [4] 에 따르면 VAE를 활용한 semi-supervised learning은 크게 M1 model 과 M2 model로 나눌 수 있다고 한다. 첫번째로 M1 model은 pre-trained, fine tuning 방식을 띈다. 먼저 labeled, unlabeled data를 모두 활용하여 VAE를 학습시킨다. 이렇게 했을 때 그냥 바로 labeled task를 진행하는 것보다 더 유용한 정보를 뽑을 것으로 기대할 수 있다. 이후 pre-trained된 encoder에 classifier/regressor를 달아서 labeled data를 이용한 labeled task에 specific하게 파라미터를 조정한다. 두번째로 M2 model은 2가지 과정을 거치지 않고 한번에 학습되는데 encoder의 output인 latent z에 예측된 label y를 concatenate해서 decoder에 태우게 된다.  마지막 세번째로는 M1, M2를 합쳐서 쓰는 방법이 있는데 M1에 M2를 stack하는 것이다. 이 경우에는 M1 model에서 나온 latent z를 M2 model의 입력으로 사용한다. 결과를 보면 M1+M2로 사용하는 것이 성능이 훨씬 좋다. 이외에 AAE나 GAN도 semi-supervised learning으로 확장하여 많이 연구되고 있다. 하지만 대부분 labeled task의 supervised learning성능을 끌어올리는 것보다 conditional generation에 label을 활용하는 것이 목적이 되는 경우가 많다.

 

(+ 추가: generative model기반 semi-supervised learning  pytorch 코드 여기에 매우 잘 정리되어 있다.)

 

M2 model

Consistency regularization (Consistency training) [6-9]

이 방법은 unlabeled data point에 작은 perturbation을 주어도 예측의 결과에는 일관성이 있을 것이다라는 가정에서 출발한다. unlabeled data는 예측결과를 알 수 없기 때문에 data augmentation을 통해 class가 바뀌지 않을 정도의 변화를 줬을 때, 원 데이터와의 예측결과가 같아지도록 unsupervised loss를 주어 학습하게 된다. 이를 통해 약간 헷갈리는 샘플들에 대해 class를 유연하게 예측할 수 있도록 해준다. 성능이 좋은 semi-supervised learning 모델들은 대체로 consistency regularization을 사용하고 있다. 가장 유명한 모델으로는 \( \Pi \)-model, Temporal Ensemble, Mean Teacher, Virtual Adversarial Training (VAT), unsupervised data augmentation (UDA) 등이 있다. 이미지 분야의 경우 많은 연구들을 통해 class가 바뀌지 않을 정도의 data augmentation 기법들이 많이 연구되었지만 그 외의 도메인에서는 도메인 지식없이는 제대로된 data augmentation을 적용하기 어려워 적용에 한계가 있다.

 

\( \Pi \) -model 의 loss 계산

Holistic methods [10-12]

MixMatch, ReMixMatch, FixMatch가 대표적인 논문으로 SOTA semi-supervised learning 방법론이라고 할 수 있다. 여러 semi-supervised learning 기법들을 통합하고 Mixup data augmentation을 적용하여 성능을 더 끌어올렸다. 앞선 방법들만 잘 이해했다면 holistic methods를 보는 것이 수월할 것이라 믿는다.

 

FixMatch 알고리즘

Graph-based methods [13]

Graph-based semi-supervised learning은 unlabeled data의 label을 알고싶다는 것에서 출발한다. 이는 앞선 방법들이 unlabeled data로 labeled data의 예측성능을 올리고 싶다는 것과는 다른 목표를 가진다. 대표적인 방법으로는 graph의 노드로 {labeled, unlabeled} 데이터를 표현하고 노드들 사이의 유사도를 기준으로 유사도 가중치가 높은 이웃으로 건너 건너 label을 추정하는 label propagation이 있다.

 

manifold에서의 label propagation

결론

필자는 이미지가 아닌 다른 도메인에 특히 classification이 아닌 regression에 semi-supervised learning을 적용하고 있다보니 앞서 설명한 기법들을 활용하는데 많은 제약을 느끼고 있다. 대부분의 SSL기법들이 image도메인에서의 SOTA augmentation에 의존하고 있기 때문이다. 또한 labeled set 자체가 적다보니 validation set 자체의 크기도 작아 대표성을 가진 모델을 찾는데 어려움이 있었고, supervised 와 unsupervised loss의 가중치를 어떻게 잘 조율할 것이냐 등 여러 이슈들을 경험하게 되었다. semi-supervised learning을 이용해서 supervised learning 그 이상의 성능을 보여주는 다수의 논문들이 있으나 사실 label set과 unlabel set의 target distribution의 mismatch가 있다면 오히려 성능이 하락하는 경우도 더러 있다. 아직도 대량의 unlabeled data를 어떻게 활용할 수 있는지에 대해서는 해결해야할 문제가 많은 것 같다. semi-supervised learning 성능이 생각에 못미쳐 실망하고 있다면 본인의 잘못이 아니니 너무 낙담하지 마시라. 또한 해결해야할 문제가 많다는 것은 연구할 수 있는 가능성이 많다고 볼 수도 있다.

Reference

[1] Entropy minimization

[2] Pseudo label

[3] Noisy student

[4] Semi-supervised learing with deep generative models

[5] Adversarial autoencoder

[6] Consistency regularization

[7] Temporal ensemble

[8] Virtual Adversarial Training (VAT)

[9] Unsupervised data augmentation (UDA)

[10] MixMatch

[11] ReMixMatch

[12] FixMatch

[13] Label propagation

 

Overview 논문들

[14] An Overview of Deep Semi-Supervised Learning 

[15] Realistic Evaluation of Deep Semi-Supervised Learning Algorithms

[16] Semi-supervised learning for regression : A recent review