머신 러닝은 영상 처리나 자연어 처리등의 문제를 쉽게 해결하는 강력한 기법이지만, 학습에 충분한 데이터가 존재하는 문제에서만 성능을 낼 수 있다는 단점이 있습니다. 특히, 딥 러닝을 적용하는 경우에는 더 많은 데이터를 필요로 합니다.  일반적인 학습 환경에서 데이터는 input과 label의 쌍으로 이루어져있죠. 모든 문제에서 ImageNet같이 큰 표준 dataset이 존재한다면 좋겠지만, 현실에서는 데이터 부족에 시달리는 경우가 많습니다.

Label이 부족한 경우에는, ImageNet 등에서 pre-trained 된 모델을 베이스로 해서 transfer learning을 시행하는 것이 가장 일반적인 접근법입니다. 그러나 어떤 문제들에서는 transfer learning에 필요한 만큼의 데이터를 구하는 것도 어려울 때가 있습니다. Sample의 label을 얻는 작업은 항상 지루한 data notation 및 refinement 과정을 거쳐야 하고, 심지어 어떤 task들의 경우에는 label이 아예 구할 수 없거나 극소량의 input sample들만 존재하는 경우도 있기 때문이죠.

Domain Adaptation

이쯤되면 머신 러닝으로는 풀 수 없으니 포기해야 되지 않나 싶기도 한데, 머신 러닝 연구자들은 이런 힘든 상황에서도 포기하지 않고 어떻게든 답을 찾는 방식을 제안 하였습니다. Domain adaptation 기법(이하 DA)이 바로 이 때 고려할 수 있는 방법들 중 하나입니다. 예를 들어 target domain에 정답이 아예 없고 입력 영상들만 있다고 가정하면, 일반적인 transfer learning은 아예 적용할 수 없습니다. 그러나 DA는 어떻게든 이전 task에서 배운 지식을 사용해 (정답이 없는) 새로운 상황에서도 맞출 확률을 올려주는 것을 목표로 합니다.

먼저 DA의 기본 notation부터 살펴 보겠습니다. 모든 classifier  \eta 는 input space  \mathcal{X} 에서 label space  \mathcal{Y} 로 mapping해주는 함수로 정의합니다.

 \eta : \mathcal{X} \rightarrow \mathcal{Y}

 

이 때 Source domain  \mathcal{D}_S \subset \mathcal{X} \times \mathcal{Y} 는 random variable  X^S 로부터 sampling한 sample  x_i^S \in \mathcal{X} 와  y_i^S \in \mathcal{Y} 들의 set으로 정의합니다.

 \mathcal{D}_S = \lbrace (x_i^S, y_i^S) \rbrace_{i=1}^{N}
마찬가지로, target domain  \mathcal{D}_T \subset \mathcal{X} \times \mathcal{Y} 는 random variable  X^T 로부터 sampling한 input 및 target sample들을 의미합니다. 이 때,  \mathcal{D}_T^X 는 target domain의 input domain, 즉 입력 영상을 의미합니다. 즉,

 \mathcal{D}_T^X = \lbrace x_i^T \rbrace_{i=1}^{M}

 

이 됩니다. 그러면 DA task는 target domain에 대한 risk function  R_{\mathcal{D}_T}(\eta) 이 최소화되는 classifier  \eta 를 찾는 것이 목표입니다.

 R_{\mathcal{D}_T}(\eta)=\Pr_{(x,y)\sim\mathcal{D}_T}\left( \eta(x) \neq y \right)

 

얼핏 생각하면, 가능할 것 같지 않은 일인데 어떻게 이 값을 최적화할 수 있을까요? 결론부터 이야기하면 target domain  \mathcal{D}_T 와 source domain  \mathcal{D}_S 를 최대한 구별 할 수 없게 하는 방식으로 training하면 risk를 낮출 수 있습니다. 이 아이디어를 조금 더 구체화하기 위해서는 두 가지 개념이 필요합니다. 첫 번째는  \mathcal{H} -divergence이고 두 번째는 Vapnik–Chervonenkis dimension입니다.

H-divergence

먼저  \mathcal{H} -divergence는 두 domain이 얼마나 다른지를 수치화한 값입니다. 여기서  \mathcal{H} 는 보통 hypothesis라고 하는데요, 여기서는 classifier  \eta 들의 집합을 의미합니다. 즉,  \eta \in \mathcal{H} 입니다. 이 때,  \mathcal{H} -divergence는 다음과 같은 식으로 정의됩니다.

 d_{\mathcal{H}}(\mathcal{D}_S^X,\mathcal{D}_T^X) = 2\sup_{\eta\in\mathcal{H}}\left| \Pr_{x\sim \mathcal{D}_S^X}\left[ \eta(x)=1\right] - \Pr_{x\sim \mathcal{D}_T^X}\left[ \eta(x)=1\right]\right|

 

참고로  \mathcal{H} 는 수식의 편의를 위해 binary classifier들의 집합이라고 가정합니다.

식만 보면 어떤 값을 의미하는지 쉽게 눈에 들어오진 않는데요, 차근 차근 설명해 드리도록 하겠습니다. 기본적으로,  \mathcal{H} -divergence는 두 data distribution  \mathcal{D}_S^X ,  \mathcal{D}_T^X 를 변수로 하는 값입니다. 수식의 정의대로라면 만약 어떤 classifier  \eta 가 존재해서, 두 domain을 잘 구별할 수 있다면  \mathcal{H} -divergence는 큰 값을 가지게 되겠죠. 

여기서 또 한 가지 중요한 점은  \mathcal{H} -divergence는 이름과 같이  \mathcal{H} 에도 영향을 받는 값이라는 점입니다. 즉  \mathcal{H} 를 어떻게 지정하느냐에 따라서 같은 domain이라도  \mathcal{H} -divergence의 값이 달라질 수 있습니다. 실제로  \mathcal{H} 의 값이  \mathcal{H} -divergence에 어떤 영향을 주는지, 예시와 함께 설명드리도록 하겠습니다.

제목 없는 프레젠테이션 (1)

먼저 source domain과 target domain이 다음과 같이 이루어져 있다고 가정합시다.

제목 없는 프레젠테이션 (2)

이 경우  \mathcal{H} 가 간단한 linear classifier의 set이라고만 가정해도,  \mathcal{H} -divergence의 값을 max로 만들어낼 수 있습니다. 여기서 주의할 점은,  \mathcal{H} 가 고려하는 classfier들은 여기서 실제 label을 어떻게 구별하는지는 고려하지 않는다는 점입니다. 중요한 점은 실제 classification의 성능이 어떻든 간에  \mathcal{H} 안에 저런 일을 할 수 있는 classfier  \eta 가 존재하기만 하면 된다는 것입니다.

제목 없는 프레젠테이션 (3)

이제 domain이 좀 더 중앙 쪽으로 움직여서 구별하기 어려운 경우를 가정합시다. 위 그림과 같이 말이죠. 이 경우 linear classifier들의 set인  \mathcal{H} 로는 어떤 classifier를 꺼내더라도  \mathcal{H} -divergence를 max로 만들어 낼 수 없습니다.

제목 없는 프레젠테이션 (4)

그러나  \mathcal{H} 의 범위를 고차함수로 늘리면 domain을 잘 나눌 수 있는  \eta 가 존재하게 됩니다. 즉  \mathcal{H} 의 범위를 더 크게 잡음으로서  \mathcal{H} -divergence의 값을 키울 수 있습니다.

제목 없는 프레젠테이션 (5)

이제 조금 더 극단적인 경우를 가정합니다. 두 도메인이 거의 일치하는 경우입니다. 이제 polynomal classifier들의 집합  \mathcal{H} 로도  \mathcal{H} -divergence를 max로 만드는  나눌 수 없게 되었습니다. 그래서 두 domain을 나누기 위해서는 조금 특별한 classifier가 필요합니다.

제목 없는 프레젠테이션

모든 가능한  \mathcal{H} 를 동원했더니 다음과 같은 classifier로 나눌 수 있었습니다. 즉  \mathcal{H} 가 set of arbitrary classifier일 때는 두 도메인의 차이가 조금이라도 존재하는 이상 항상  \mathcal{H} 를 max로 나눌 수 있습니다.

Vapnik-Chervonenkis dimension

일반적으로 classifier가 위의 그림과 같이 복잡하면 generalization에 좋지 않다고 알려져 있습니다. 그렇다면  \mathcal{H} 가 얼마나 복잡한지를 알려주는 measure가 존재할까요? Vapnik-Chervonenkis dimension(이하 VC dimension)이 이러한 정보를 가르쳐 줍니다.  \mathcal{H} 와 마찬가지로 VC dimension 역시 hypothesis  \mathcal{H} 에 대해서 정의되는데요,  VC(\mathcal{H}) 는 어떤 classifier들의 집합  \mathcal{H} 가 정확히 나눌 수 있는 training point의 개수로 정의할 수 있습니다. 여기서는 자세한 수학적 설명은 생략하겠습니다. VC dimension 및 PAC 분석법에 대한 더 자세한 설명은 천상혁님의 블로그에 좋은 글이 있으니 참조하세요.

딥 러닝에서 VC dimension은 기하학적으로 계산이 가능한 값입니다. 여러 가지 이론이 있지만, 제일 기본적으로 VC dimension의 upper bound는 네트워크의 node 및 edge 개수에 비례한다고 생각하시면 됩니다.

Domain adaptation

H-divergence와 VC dimension에 대한 가장 기본적인 개념을 이해하면, domain adaptation의 기본 정리를 볼 차례입니다.

(Ben-David et. al., 2006) Let  \mathcal{H}  is a hypothesis class of VC dimension d. With probability  1 - \delta  over the choice of samples  S \sim (D_S)^n and  S \sim (D_T^X)^n , for every  \eta \in \mathcal{H} :

 R_{\mathcal{D}_T}(\eta) \leq R_{S}(\eta) + \sqrt{\frac{4}{m}(d\log\frac{2em}{d}+\log\frac{4}{\delta})} + \hat{d}_{\mathcal{H}}(S,T) + 4 \sqrt{\frac{1}{m}( d\log\frac{2m}{d}+\log{4}{\delta})} + \beta

with  \beta \geq \inf_{\eta^*\in\mathcal{H}}\left[ R_{\mathbb{D}_S}(\eta^*) + R_{\mathbb{D}_T}(\eta^*) \right] , and

 R_{S}(\eta) = \frac{1}{m}\sum_{i=1}^m I\left[ \eta(x_i) \neq y_i \right]

is the empirical source risk.

이 식의 유도에 대한 자세한 설명은 유재준님이 블로그에 아주 좋은 설명을 해 주셨습니다! 여기서는 이 식이 딥 러닝에서 의미하는 바만 간단히 살펴보도록 하겠습니다.

먼저 VC-dimension d는 network 구조에 dependent한 값이기 때문에 우리가 어떤 network를 사용할 지를 결정한 상태에서, parameter만 training하면 바뀌지 않는다고 가정할 수 있습니다. 따라서 d를 상수항으로 놓고, target domain에서의 risk에 영향을 주는 요인들을 살펴보면,

  1. Source의 risk function  R_S(\eta)
  2. Source와 target의  \mathcal{H} -divergence \hat{d}_{\mathcal{H}}(S,T)
  3.  \beta

먼저  \beta 의 값은 H의 범위를 조절함으로써 바꿀 수 있습니다. H를 크게 잡아서 eta*가 포함되도록 한다면 beta의 값을 최소한으로 내릴 수 있겠죠. 그렇다면 H를 엄청 general하게 잡으면 어떤 일이 일어날까요? 앞서 보신 바와 같이 H-divergence(2번)의 값이 커지게 됩니다. 결국 우리가 원하는 target risk는 줄일 수 없죠. 마찬가지로 우리가 training시킨 모델이 source domain에서 잘 작동하지 않아도 target domain에서의 risk는 커지게 됩니다.

결론적으로, domain adaptation을 잘 수행하기 위해서 우리는 적절한 모델을 학습시켜서

  1. Source domain에서 classification 성능이 높고
  2. Source domain과 target domain을 구별하지 못하는

모델을 만들어야 합니다. 여기서 H-divergence를 낮추기 위해서 사용하는 loss를 confusion alignment loss라 부릅니다. domain adaptation의 경우, 딥 러닝이 적용되기 이전부터 많은 방법들이 제안되었는데요, 여기서는 DANN(domain-adversarial training of neural network)를 살펴보겠습니다. GAN에 익숙하시다면 방법은 정말 간단합니다. 이 그림 한 장으로 설명할 수 있습니다.

2017-06-05-domain-adversarial-training-of-neural-networks-fig1

먼저 위쪽 path는 source domain에 대해서 구별을 잘 되게 해주는 class label입니다. 그리고 아래쪽 path는 domain을 구별할 수 없게 만들어주는 confusion alignment loss입니다. Conofusion alignment loss는 최대한 두 domain을 구별할 수 없어야 하므로, domain label을 사용하여 두 domain을 구별하도록 forward한 후, gradient를 바꿔서 backward 해줍니다.

Supervised domain adaptation

자, 이제 target domain에 label이 있는 경우를 생각해봅시다. 만약에 충분한 sample이 존재해서 transfer learning을 적용할 수 있다면, transfer learning을 시행하면 되지만 그렇지 않은 경우도 있습니다. 이 때, 적용할 수 있는 방법이 supervised domain adaptation입니다.

우리가 갖고 있는 target domain의 label들을 어떻게 사용해야 귀중하게 사용할 수 있을까요? Label들을 잘 활용하면, domain adaptation이 해결해주지 못하는 경우를 해결 할 수 있습니다. 아래 그림을 보시죠.

제목 없는 프레젠테이션 (6)

각 원은 feature space에서의 domain이라고 생각하실 수 있습니다. 주의할 점은 input domain이 아닙니다. input image에서 CNN 등을 사용해 만든 feature vector를 visualization했을 때, 저런 domain으로 나타났다고 생각하시면 됩니다. (Unsupervised) Domain adaptation 기법에서는, target domain의 label이 존재하지 않으므로, 여기서 세 개의 집합만 가지고 있습니다. 위 그림에서는 (Target, pos)와 (Target, neg)가 합쳐서 하나의 원으로 그려야 되겠죠. 하지만 우리가 풀고자 하는 supervised domain adaptation에서는 는 target domain의 label 역시 알고 있기 때문에 4개의 원으로 표현하였습니다.

이제 unsupervised domain adaptation 기법의 알고리즘을 그대로 적용해서 위의 문제를 해결한다고 생각해봅시다. 우리의 목표는 source domain과 target domain 모두에 대해서 잘 작동하는 에서는 알고 있는 원이 3개밖에 없으므로 classification loss와 confusion alignment loss를 독립적으로 최적화할 수 밖에 없습니다. 그러면 classification loss에 의해 움직이는 feature의 성분과 confusion alignment loss에 의해 움직이는 성분을 화살표로 나타내면

와 같이 움직이게 되는 문제가 발생하게 됩니다. 이렇게 되면 classifier가 복잡한 곡선이 되어 generalization이 잘 되지 않는 문제가 발생하겠죠. 따라서 supervised 상황을 해결할 수 있는 어떤 regularizer가 필요하다는 것을 알 수 있죠.

Deep supervised domain adaptation

서론이 길었는데, 이제 제가 소개하고자 하는 논문인 “Unified Deep Supervised Domain Adaptation and Generalization”을 설명할 준비가 끝났습니다.  딥 러닝에서 흔히 classifier는 feature extractor  g 와 feature를 사용한 classifier  h 로 분해할 수 있습니다.

 f = h \circ g

 

이 논문에서 저자는 confusion alignment loss를 domain에 따라 분해해서 두 가지 loss로 만들었습니다. 첫 번째 loss는 semantic alignment loss입니다.

 \mathcal{L}_{SA}(g) =\sum_{a=1}^{C} d(pr(g(X_a^S)), pr(g(X_a^T)))

 

여기서 C는 class 개수를 의미하고, a는 각 class를 의미합니다. DANN에서의 confusion alignment loss와 다른 점은, 각 domain을 구별하지 못하게 하는 일을 같은 class에서만 시행한다는 것입니다. 위의 그림에서 (Source, pos)와 (Target, neg)를 구별하지 못하도록 하는 일은 방해가 될 수 있으니 빼고, (Source, pos)와 (Target, pos) 그리고 (Source, neg)와 (Target, neg)만 구별하지 못하면 된다는 것입니다.

두 번째 loss는 separation loss입니다.

 \mathcal{L}_{S}(g) =\sum_{a, b |a \neq b} k(pr(g(X_a^S)), pr(g(X_b^T)))

 

여기서의 K는 feature vector에서 1 – (L2-distance)를 의미합니다. 즉, 다른 class의 경우에는 아예 domain이 더 잘 구별되어버리도록 loss를 주는 것이죠. 이렇게 confusion alignment loss를 바꿈으로써 supervised 상황에서 domain adaptation의 성능을 높일 수 있습니다.

그러면 실제로 어떤 방식으로 저 loss들을 적용할까요? 이 논문에서는 각 source domain sample과 target domain sample을 1:1 비교 하는 방식을 사용했습니다.

각각의 source domain sample과 target domain sample들에 대해서, semantic alignment loss에 해당하는 metric d는

 d(pr(g(x_i^S)), pr(g(x_j^T))) = \frac{1}{2} \lVert g(x_i^S) - g(x_j^T) \rVert^2

 

가 되고, separation loss에 해당하는 metric k는

 d(pr(g(x_i^S)), pr(g(x_j^T))) = \frac{1}{2} max( 0, m - \lVert g(x_i^S) - g(x_j^T) \rVert^2)

 

가 됩니다.

Experiments

위 실험에서 저자는 두 가지 데이터셋이서 결과를 증명했는데요, 첫 번째 dataset은 office dataset입니다. 이 데이터셋은 31개의 class와 3개의 domain으로 구성되어 있습니다. Domain에는 Amazon / Webcam / DSLR이 있고, 각각은 Amazon 제품 카탈로그, 웹캠 찰영, DSLR 촬영으로 얻은 사진입니다. 이런 방식으로 총 4,652장의 이미지가 존재합니다.

각 class별로 source domain으로는 (20, 8, 8)장의 사진을 적용하였고, target domain으로는 (3, 3, 3)장의 sample을 사용했습니다. 딥 러닝을 적용하기에는 영상 개수가 너무 작은 것 같지만, 우리는 domain adaptation의 문제를 다루고 있으므로 이런 상황은 흔하게 발생합니다.  네트워크는 VGG-16 network를 사용했으며 ImageNet으로 pre-trained 된 모델을 사용하였습니다.

Office dataset에 대한 실험 결과는 다음과 같습니다.

무제.png

CCSA가 저자가 제안하는 방식입니다. 논문에서 저자는 Webcam에서 DSLR로 바뀔 때나 DSLR에서 Webcam으로 바뀔 때는 domain이 거의 비슷한데, 나머지 경우에는 domain이 크게 다르기 때문에 CCSA 방식이 효율적이라고 설명합니다.

두 번째 dataset은 MNIST <-> USPS 데이터셋입니다. MNIST 데이터셋은 아마 익숙하실텐데요, USPS 데이터셋도 MNIST 데이터셋과 마찬가지로 손글씨 숫자 데이터셋입니다. 이 상황에서의 domain adaptation 결과는 다음과 같습니다.

무제 2.png

여기서 CCSA-1 부터 CCSA-8은 class당 target domain sample의 숫자를 1부터 8까지 늘려가면서 실험했다는 의미입니다. (Training sample이 1개~8개라는 의미입니다!)

Reference

[1] Domain-Adversarial Training of Neural Networks, Ganin et. al., Journal of Machine Learning Research, 2016

[2] Unified Deep Supervised Domain Adaptation and Generalization, Motiian et. al., IEEE International Conference on Computer Vision, 2017

Posted by:jhlee525

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s