일반적으로 딥러닝은 학습 데이터를 통해 모델을 학습시키고
테스트 데이터를 가지고 학습된 모델을 검증한다.
머신러닝, 딥러닝에서 가장 많이 겪는 문제점은
학습 데이터에서 잘 동작하는데
테스트 데이터에서는 잘 동작하지 않는 것이다.
여러 가지 원인이 있지만
그중에서 학습 데이터와 테스트 데이터의
Domain Shift 발생 원인이 존재한다.
여기서 Domain Shift 란, 학습 데이터 (Source)와
테스트 데이터 (Target)의 분포 (Disrtibution)의 차이를 의미한다.
예를 들면 흑백의 손글씨 숫자와 실제 카메라로
잡지에서 숫자를 찍은 사진의 차이로 알 수 있다.
Domain Shift가 심할수록 테스트 정확도는
떨어지게 된다.
이처럼 도메인이 다르지만 관련이 있는
새로운 영역 (Distribution)에 기존 영역의
정보를 적응시키는 것이 바로
Domain Adaptation이다.
Domain Adaptation은 Transfer Learning의 일종으로 분류할 수 있는데,
Train data(Source domain)와 Test data(Target domain)의
분포가 다르지만 두 도메인에 같은 Task를
적용할 때 사용되는 방법론이다.
Domain Adaptation의 핵심 목표는
학습된 소스 도메인 (Source domain)의 정보를
타겟 도메인 (Target domain)에 적응시켜
성능을 높일 수 있는 확률을 올려 주는 것이다.
(Domain shift를 줄이는 것)
여러 방법론 중에서 현재 연구 중인
Unsupervised Domain Adaptation (UDA)는
타켓 도메인의 데이터가 라벨 없이도 Task를 수행할 수 있도록학습시키는 방법론이다.
UDA의 대표적인 아키텍처 논문이다.
논문의 핵심은 다른 도메인의 데이터지만
레이블 식별은 잘하면서, 두 도메인 간의 간격을 줄여
소스와 타켓 분포를 비슷하게 만드는 것이다.
모델의 가장 큰 특징은
- Target domain의 label이 없어도 학습이 가능
- 종단간 학습 (End-to-end learning)이 가능
- Gradient reversal layer 만 추가하여
Backpropagation만 조금 바뀐 단순한 구조
위 그림에서 feature extractor는 입력 이미지의
특징을 추출하여 피처맵을 추출하는 인코더이다.
label predictor는 피처맵으로부터
classification task를 수행하는 영역이고,
domain classifier는 소스 도메인과
타켓 도메인의 피처맵에 따라 두 도메인을
구별하는 분류기이다.
기존의 분류 모델에서 두 도메인의 차이를
잘 구별하지 못하도록 domain classifier를
추가함으로써 소스 이미지와 타켓 이미지에서의
피처맵이 유사하도록 만드는 방법이라고 보면 될 것 같다.
결과적으로 소스 도메인에 따른 label predictor loss와
두 도메인을 식별하는 domain classifier loss를 통해
적대적 학습 방식으로 진행된다.