Pull Requests to Tomorrow Jamie Kang's weblog on computing

Domain-Adversarial Training of Neural Networks

이번 논문은 2016년 JMLR에서 발표된 “Domain-Adversarial Training of Neural Networks”입니다.

이 논문은 training time과 test time의 data distribution이 다른 경우, domain adaptation을 효과적으로 할 수 있는 새로운 접근 방법을 제시합니다.

Domain Adaptation

Domain Adaptation (DA)은 training distribution과 test distribution 간에 차이가 있을 때 classifier 또는 predictor의 학습 문제를 다루는 연구 분야입니다. 즉, source (training time)과 target (test time) 사이의 mapping을 통해 source domain에서 학습한 classifier가 target domain에서도 효과적으로 동작하는 것을 목표로 합니다. DA는 아래 그림에서 보는 것처럼 Transfer Learning에 속하며, source domain에서만 labeled data가 존재하는 경우를 다룹니다.

Taxonomy

DA의 이론적 배경은 2006년 S. Ben-David의 논문 “Analysis of Representations for Domain Adaptation”에 기반하고 있습니다.

이 논문에서 풀려고 하는 문제는, input space $X$에서 가능한 label의 집합인 로의 classification task입니다. 이 때 source domaintarget domain을 각각 $\mathcal{D}_S$와 $\mathcal{D}_T$로 정의합니다.

이 논문에서 제안하는 알고리즘의 목표는 target domain 의 label에 대한 정보가 없더라도 target risk $R_{\mathcal{D}_T}(\eta)$가 낮도록 classifier 를 만드는 것입니다.

먼저, 두 도메인 간의 거리는 아래 식과 같이 $\mathcal{H}$-divergence로 계산할 수 있습니다.

여기서 $\mathcal{H}$가 symmetric하다고 가정하면 empirical $\mathcal{H}$-divergence는 아래 식과 같이 계산됩니다.

그런데, 일반적으로 이 값을 정확하게 계산하는 것이 어렵기 때문에 아래의 식으로 근사하고 Proxy A Distance (PAD)라고 부릅니다. 이후 이 논문의 실험들에서는 이 PAD 값을 사용합니다.

여기서 $\epsilon$은 classification error입니다. 즉, sample의 출처가 source domain인지 target domain인지 classifier가 정확히 구분할 수 있으면 $\epsilon = 0$ 입니다.

S. Ben-David의 논문에서 target risk $R_{\mathcal{D}_T}(\eta)$의 upper bound를 아래 식과 같이 계산했습니다.

복잡해 보이지만, 요약하자면 결국 target risk 을 줄이려면 source risk 와 domain 간의 distance $\hat{d}_{\mathcal{H}}(S,T)$를 모두 줄여야 하는 것을 알 수 있습니다.

Domain-Adversarial Neural Networks (DANN)

앞의 수식들의 의미를 정리하면 이렇습니다. 도메인이 달라지더라도 충분히 일반화할 수 있도록 모델을 학습하려면, source domain에서의 classifier 성능을 높이면서 한편 domain을 구분하는 성능은 낮아지게 훈련해야한다는 것입니다.

즉, 다른 말로 하면 label classifier의 loss를 minimize하면서 동시에 domain classifier의 loss를 maximize하도록 optimize하는 문제를 푸는 것이 되기 때문에 이 논문에서 adversarial이라고 표현하고 있습니다.

이 논문에서 제안하는 DANN의 구조는 다음과 같습니다.

Figure 1

그림은 크게 green 색의 feature extractorblue 색의 label predictor, red 색의 domain classifier로 구성되어 있습니다. 앞에서 설명한 것처럼 domain을 구분하는 성능을 낮추기 위해 추가된 부분이 domain classifier인데, 앞 단의 feature extractorgradient reversal layer (black)를 통해 연결되는 것을 볼 수 있습니다.

일반적인 neural network에서는 backpropagation을 통해 prediction loss를 줄이는 방향으로 gradient를 계산하는데, DANN에서는 domain classifier가 prediction을 더 못하게 하려는 것이 목적이므로 gradient reversal layer에서 negative constant를 곱해 부호를 바꿔 전달하는 것입니다.

아래는 더 보기 편하게 정리된 유재준 님의 그림입니다. Architecture 2 (그림 출처: 유재준 님의 슬라이드 “Domain-Adversarial Training of Neural Networks”)

이 구조를 간단한 SGD로 구현한 알고리즘은 다음과 같습니다.

Algorithm 1

GRAAL-Research의 GitHub “GRAAL-Research/domain_adversarial_neural_network”와 유재준 님의 GitHub “jaejun-yoo/shallow-DANN-two-moon-dataset”에 각각 pythonMATLAB으로 구현된 코드가 있으니 참고하시기 바랍니다.

Experiments

이 논문에서는 앞에서 보인 알고리즘을 inter-twinning moons 2D problem라고 하는 초승달 모양의 distribution을 가지는 dataset에 적용하고 그 결과를 보입니다.

아래 그림에서 red 색의 upper moon이 source distribution의 label 1이고, green 색의 lower moon이 source distribution의 label 0입니다. black 색의 target distribution은 source distribution을 35도 회전시키고 label을 제거해서 만들었습니다.

Figure 2

위 그림의 첫 번째 “Label Classification” 컬럼을 보면, (a) 일반 NN의 경우 target sample (특히 D 부분)을 완전히 분리하고 있지 못하지만 (b) DANN은 훨씬 잘 분리하고 있는 것을 볼 수 있습니다.

또한, 위 그림의 세 번째 “Domain Classification” 컬럼을 보면, (a) 일반 NN의 경우도 source와 target을 잘 분리하지 못하지만 (b) DANN은 훨씬 더 구분하지 못하는(이 논문에서 원하는 대로) 것을 확인할 수 있습니다.

다음은 MNIST와 SVHN 데이터셋을 사용한 실험 결과를 보여주는 그림입니다.

Figure 5

그림에서 blue 색은 source domain의 example이고, red 색의 target domain의 example을 보여줍니다. (a) DA를 거치기 전에는 두 색깔이 분리되어 있는 반면, (b) 거친 후에는 분리되지 않고 잘 섞여 있는 것을 확인할 수 있습니다.

Jamie;


References