[study] DA(Domain Adaptation)알아보기 기본편
- 참고자료
- Github page: https://github.com/zhaoxin94/awesome-domain-adaptation (Category마다 paper를 확인할수 있음)
- Survey paper : https://arxiv.org/pdf/1802.03601.pdf(Visual Domain Adaption의 전반적인 내용 확인 가능)
- Tutorial : https://europe.naverlabs.com/eccv-2020-domain-adaptation-tutorial/ (총 4편에 걸쳐서 DA를 설명, 개론부터 응용까지 훑어볼수 있음)
본 글은 위의 참고자료를 참고하여 작성한 자료임을 밝힙니다.
오늘은 Domain Adaption에 대해서 공부해보도록 하겠습니다. 내용을 세부적으로 모두 파악하기에는 굉장히 많은 시간이 소비되기 때문에 기본편, 심화편으로 나눠서 작성해보겠습니다. 기본 편에서는 DA의 문제 정의, Traditional Method들과 데이터셋 구성에 따른 method 분류에 대해서 살펴보겠습니다.
먼저 Domain Adaptation의 문제 정의부터 짚어보겠습니다.
Machine learning, Deep learning에서 항상 문제가 되는 것은 무엇일까요? 단순하게 말하면 학습 데이터에서는 잘 동작하는데 테스트 데이터에서는 잘 동작하지 않는 문제가 아마 가장 많을 것 같습니다. 원인은 학습 데이터가 다양하기 때문이기도 하고 model의 over-fitting 때문일 수도 있습니다. 또 하나 다른 이유는 학습 데이터와 테스트 데이터의 Domain-shift가 일어났기 때문입니다.
Domain Shift는 학습 데이터 (Source)와 테스트 데이터 (Target) 의 Distribution의 차이를 의미합니다. 예를 들면 같은 컵을 카메라로 찍었을 때와 캐리커쳐처럼 손으로 그렸을 때의 차이입니다. 물론 Shift가 작은 경우엔 고화질의 DSLR과 Webcam의 이미지도 Domain shift로 볼 수도 있겠습니다. 이 Domain shift가 심할수록 test data의 정확도는 떨어지게 됩니다.
다른 Domain Adaptation의 예로는 Synthetic data를 이용해서 Real data를 대비하여 학습하는 경우입니다. 요즘 게임 그래픽이 굉장히 좋아지면서 해당 데이터를 학습함으로써 실제 영상에 적용했을 때도 성능 향상이 이루어지는 경우가 많습니다. 하지만 이 경우에도 같은 양의 Real data를 사용했을 때의 성능보다는 떨어질 수 있습니다.
Traditional Domain Adaptation 방식은 크게 3가지로 나뉠 수 있습니다.
- Metric Learning (Adapting Visual Category Models to New Domains , Metric Learning: Asymmetric Transformations )
- Subspace Representation
- Matching Distribution (MMD, Sample Reweighting / Selection, Transform Learning (TCA, DIP) , Hellinger Distance, SIE )
첫 번째로, Metric Learning은 거리 기반으로 Domain adaptation을 진행합니다. 가장 기본적인 기본적인 생각으로 Source domain과 Target domain이 같은 클래스면 가깝게 만들고 다른 클래스면 멀게 만드는 것입니다. 직관적이며 확실한 방법이지만 이를 위해선 Source와 Target 모두 label이 필요합니다. Saenko et al., Adapting Visual Category Models to New Domains, ECCV 2010 논문으로 살펴보겠습니다.
좌측의 수식이 Xs (Source domain)과 Xt(Target domain)의 거리를 구하는 공식이며 W는 X에서 Y로 가는 Transform function을 가정합니다. 우측의 수식은 source와 target의 label yi와 yj가 같은 경우에는 distance가 u보다 작도록 학습하고 (거리가 가깝도록 학습) 다른 경우에는 l보다 커지도록 학습합니다. (거리가 멀도록 학습).
두 번째, Subspace Representation는 Source와 Target은 다른 subspace에 놓여져 있고 이 둘의 subspace를 alignment하면 문제를 해결할 수 있다고 생각합니다. 따라서 Source subspace와 Target subspace 사이의 가능한 subspace를 sampling 혹은 Integration하여 Alignment하는 방식들이 있습니다.
마지막으로 Matching Distribution은 Domain Shift로 인한 Distribution 차이를 직접적으로 해결하는데 초점을 맞춥니다.
위 그림은 Maximum Mean Discrepancy (MMD)를 설명하는 그림입니다. MMD는 두 개의 Distribution의 불일치성을 표현하는 수식으로써 Source와 Target을 Hilbert space로 mapping한 다음 distribution 차이를 계산합니다. 이 계산을 위해서는 두 번째 식과 같이 Xs와 Xt 각각 Intra-class간의 distribution의 차이는 적어야 하고 Inter-class간의 distribution의 차이는 커야 한다 (-가 곱해진 형태)
MMD를 조금 변형하여 그림의 좌측처럼 source sample에 Weight를 학습하거나 우측처럼 아예 re-sampling하는 방식도 있습니다.
하지만 source distribution과 target distribution이 차이가 많이나는 경우엔 Re-weighting 혹은 Re-sampling이 충분하지 않을수 있습니다. 이를 해결하기 위해서 distribution이 비슷한 latent space로 mapping하는 function을 학습하는 Transformation Learning 방식이 나타납니다.
위 그림은 Transfer Component Analysis 방식으로써, 먼저 Feature space에서 Hilbert space로 옮긴다음 다시 latent space로 mapping하는 W를 학습합니다.
위 그림은 Domain Invariant Projection 방식이며, TCA와 순서만 다릅니다. 먼저 latent space로 mapping한 다음에 Hilbert space로 옮긴 다음 MMD를 minimize하도록 학습합니다. 수식은 아래와 같습니다. 기존의 MMD 수식에서 Weight를 곱하는 부분 (latent space로 mapping)하는 부분만 달라졌습니다.
위 방식 이외에도 CORAL (2016), SIE (2014)등 distribution alignment를 개선하기 위해서 Sampling 방식을 개선하거나 distance 측정 방식을 MMD가 아닌 Hellinger Distance를 사용하는 등의 시도들이 이루어졌습니다. 하지만 Transformation Matrix인 W는 Linear Embedding에 그쳤습니다.
Traditional DA 방식은 Deep learning 방식과 접목하게 되면서 성능 향상이 크게 이루어졌습니다.
먼저 Deep Domain Confusion 논문에서는 Source domain에서는 labeled data로 Lc(X, y)를 최적화함과 동시에 Target의 unlabeled data는 학습된 fc8 layer의 feature vector를 추출하여 Source와 Target data의 MMD를 계산하여 minimize합니다. 실제로 Target의 label이 있는 경우에는 Interclass와 Intraclass를 분리하여 loss를 계산할 수 있을 것입니다.
그리고 가장 유명한 Domain-Adversarial Training of Neural Networks 논문입니다. 위 논문에서는 다음 두 가지의 목적을 가지고 loss를 디자인하였습니다.
- Source domain에서 classification 성능이 높아야함.
- Source domain과 target domain을 구별하지 못해야함
초록색의 Feature extraction을 위한 Embedding model을 두고 파란색의 source domain classification loss를 줄임과 동시에 빨간색의 domain classifier는 해당 데이터가 Source의 데이터인지 Target의 데이터인지 구분하는 역할을 합니다. 다만 domain을 구분하지 못하도록 학습하기 위해서 gradient를 바꿔서 backward 해줍니다.
물론 위의 방식 이후에 수많은 Deep learning 방식의 DA 솔루션이 소개되었으나 이번 기본편에서는 여기까지만 짚고 넘어가도록 하겠습니다.
DA의 기법을 labeled Source data와 Train data의 양을 기준으로 구분해보면 아래의 그림과 같습니다.
그림에 굉장히 많은 것들이 표시되어 있는데, 이중에서 대표적인 방식 4가지만 여기서 짚고 넘어가도록 하겠습니다.
가장 기본적인 방식인 Transfer learning은 source 데이터로 미리 pre-training하고 target 데이터로 fine-tunning하는 solution인데Transfer 과정만 보면 ‘pre-trained model과 target data’만 있으면 되기 때문에 오른쪽 하단에 위치하는 걸로 이해하면 되겠습니다.
두 번째로 대표적인 방식은 semi-supervised DA이며 labeled source data와 labeled target data를 같이 활용합니다. Unified Deep Supervised Domain Adaptation and Generalization (ICCV 2017)에서 와 같이 Domain과 상관없이 Class가 동일한 Intra-class loss는 작아지도록 학습하고 Class가 다른 Inter-class loss는 어느 정도까지 (보통 margin을 설정) 커지도록 학습합니다.
세 번째로 Transductive Unsupervised DA이며 Transductive learing 이라는 단어의 의미는 보통 labeled source source data와 Unlabeld target data를 사용하여 학습하는 것이며 반대로 Inductive learning는 labeled source data만 가지고 supervised learning을 뜻합니다.
네 번째로 Self-Supervised Learning은 라벨 없이 학습가능한 self-learning을 위한 task를 만들고 이를 통해서 라벨 없이 학습합니다. 예를 들면 아래 그림과 같이 말의 사진을 jigsaw puzzle 처럼 쪼깨어 섞은 다음에 원래의 순서를 학습할 수 있습니다. 이 기법은 사실 만약에 source data나 target data의 유무에 따라서 다른 기법들과 같이 사용 가능합니다. 만약에 target data가 많다면 Transfer learning과 같이 사용 가능하며, labeled source data이 있다면 Unsupervised DA 방식도 가능합니다.
오늘은 간략하게 DA의 개념과 Traditional DA method 그리고 데이터셋 구성에 따른 DA 기법 분류에 대해서 알아보았습니다.
다음 시간에는 실제로 적용해볼만한 DL기반의 method들과 성능 분석 위주로 심화편을 작성하도록 하겠습니다.
감사합니다.