오늘은 Lane Detection 관련 Domain Adaptation 논문을 읽다가 배운 Self-training 개념에 대해 정리해보려고 한다. 확실히 Domain 관련 분야는 학부연구생을 처음 시작했을 때 접했던 분야라 애착이 간다.
# Preface
일단 Self-training은 Domain Adaptation 분야의 태크닉 중 하나이다. Domain Adaptation 분야에 대한 설명은 여기를 참고하면 좋을 것 같다. 공통적으로 Domain shift를 해결하는 방법론이며, domain에 invariant한 feature를 뽑는 것에 목적이 있다.
2022.05.08 - [Computer Vision💖/Basic] - [CV] Test-Time Domain Adaptation의 의미와 간단 정리
2021.07.19 - [XAI] - [XAI] OpenAI CLIP 논문 리뷰[3] - Domain Generalization
# Self-training?
그렇다면 Self-training이란 어떤 방법론일까? 이름에서도 추측할 수 있다시피 "스스로 학습" 하는 알고리즘이다. 어떻게 스스로 학습하냐면, 바로 pseudo label(수도라벨, 가짜라벨)을 통해서이다! 모델의 Previous state에서 출력된 예측값을 target domain (우리가 현재 모르는 domain)에 대한 pseudo label(가짜 라벨)로 보고, 이를 GT처럼 여기며 현재 모델을 학습시키는 것이다.
어떻게 보면 준지도학습(Semi-Supervised Learning)과 유사한 방법이며, 실제로도 준지도학습에서 main 학습 방법으로 많이 사용되기도 하였다. (Samuli Laine and Timo Aila. Temporal ensembling for semisupervised learning.2016 등) 자세한 방법에 대해서는 아래 그림을 보자.
일단 Self-training을 위해서는 두개의 모델이 필요한데, 그림의 표현에 따르면 다음과 같다.
- $F_pl$ : pseudo label(가짜 라벨)을 생성하기 위한 모델. Pre-existing classifier라고 생각하면 된다. (=pseudo labeler)
- $F$ : pseudo label을 GT로 놓고 pseudo label 업데이트에 따라 network를 업데이트 해나갈 최종 모델
위 그림의 맨 왼쪽처럼, 일단 $F_pl$ pseudo labeler로 unlabeled 데이터들을 구별한다. 따라서 개와 고양이가 decision boundary로 구분된 모습이고, 이러한 모델의 prediction에 따라 임시적으로 개와 고양이의 label을 구분할 수 있을 것이다. 이렇게 구별된 "임시 라벨"을 unlabeled data의 pseudo label로 놓는 것이다.
그리고 $F$ 모델을 이러한 pseudo label을 이용해 retrain한다. 이러한 retrain 과정에서는 regulation이 굉장히 중요하다고 알려져있다고 한다. 최종적으로 이러한 과정을 통해 $F_pl$ pseudo labeler보다 좋은 성능의 $F$를 만드는 것이 목표이고, 실제로도 가짜 라벨을 사용했음에도 좋은 성능을 보인다고 한다. (Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks, 2013)
# Self-training in Domain Adaptation
그렇다면 위 Self-training 방법이 서로 domain이 다른 두 데이터의 domain difference를 완화하는데에는 어떻게 쓰일 수 있을까?
일단 Domain Adaptation 분야에서 train data (즉, 우리가 이미 알고있는 데이터)는 source domain, 그리고 우리가 inference 해야하는 데이터는 target domain이라고 부른다. 따라서 우리는 source domain과 target domain의 data distribution이 다름을 인지하고 (=domain shift 가 발생함을 인지) domain에 invariant한 feature를 추출하여 이러한 domain gap을 줄이려는게 목표인 것이다.
따라서 위 Self-training을 위한 pseudo label이 필요한 부분은 target domain이 된다. 일단 $F_pl$의 pseudo labeler를 통해 target domain에 대한 label을 임시로 추측하고, 이를 GT로 삼아 network를 학습시키는 것이다. 이러한 과정에서 사용하는 loss를 수식으로 나타내면 다음과 같다.
위 수식에서 $s$는 source domain, $t$는 target domain이 된다. 그리고 $y_s$는 source domain의 GT label, 그리고 $y_t$는 target domain의 pseudo label이 된다. 이를 GT삼아 CE(Cross Entropy)를 계산하게 된다.
이러한 self-training에는 사실 regularization이 중요한 process라고 한다. 이에 대해서는 여기를 참고하면 된다!
# References
[0] http://ai.stanford.edu/blog/understanding-self-training/
'Computer Vision💖 > Domain (DA & DG)' 카테고리의 다른 글
[CV] Test-Time Domain Adaptation의 의미와 간단 정리 (0) | 2022.05.08 |
---|---|
[DG] Deep CORAL(CORelation ALignment, 2016) 논문리뷰 (0) | 2021.08.27 |
[DG] Domain Generalization의 대표 알고리즘을 DomainBed로 알아보자 (+ Code) (0) | 2021.08.06 |