2018년 8월 26일 일요일

Spectral Normalization - part.1

이 정리는 Spectral Normalization 논문에 관한 정리입니다. 이번 포스팅에서는 Spectral Normalization이 문제 삼는 부분과 그에 대한 해결책을 깊이 들어가지 않고 간단하게 알아보도록 하겠습니다.

Motivation

ICLR 2018에서 소개된 Spectral Normalization에 관한 정리입니다. Spectral Normlazation은 GAN의 discriminator의 학습을 안정화 시켜 최초로 단일 discriminator와 generator를 사용하여 ImageNet 데이터의 1000개 class에 대해 이미지 생성을 성공시킨 모델입니다.

* Spectral Normalization의 생성 결과

Spectral Normalization을 사용하면 아래와 같은 장점이 있다고 합니다.
  • Lipschitz constant만이 튜닝해야할 hyper-parameter이고 다른 hyper-parameter는 튜닝이 필요가 없습니다.
  • 구현이 간단하고 계산량이 적습니다.
구현이 간단하다고 하니 실험에 적용해 보기 좋을 것 같네요ㅎㅎ 지금부터 Spectral Normalization 논문에 관한 정리를 시작하겠습니다. 

Introduction

GAN은 이론적으로 optimal한 $D$를 가정합니다. $D$가 $x$에 대해 제대로 된 data distribution $q_{data}(x)$과 generative distribution $P_G(x)$의 density ratio인 $D^*_G(x) = \frac{q_{data}(x)}{q_{data}(x) + P_G(x)} = sigmoid(\log\frac{q_{data}(x)}{P_G(x)})$ 를 측정할 수 있다는 가정하에 모든 것이 시작됩니다. 따라서 $D$의 성능은 GAN의 성능에 아주 큰 비중을 차지합니다.

하지만 high dimensional space에 존재하는 $D$는 때로는 정확하지 않은 density ratio estimation을 할 수도 있습니다. 그리고 GAN의 학습 방법은 unstable하다는 문제점을 가지고 있습니다. 이렇게 되면 $D$의 성능을 보장할 수 없고 GAN의 성능 역시 보장할 수가 없습니다. 심지어 Towards Principled Methods for Training Generative Adversarial Networks에 따르면 $q_{data}$와 $P_G$의 $support$가 조금도 겹치지 않게 되면 $D$가 두 분포를 아주 완벽하게 구분할 수 있어 $G$가 학습을 할 수 없다고 합니다. $G$가 $D$를 도저히 속일 수 없을테니 당연한 이야기인 것 같습니다.

* $support$는 distribution이 0이 아닌 값을 갖는 모든 $x$의 공간을 의미합니다.

이 논문은 $D$의 중요성에 대한 문제를 제기하여 $D$의 각 layer에 Spectral Normalization이라는 기법을 도입하여 $D$를 좀 더 stable하게 만들어 위와 같은 결과를 만들게 됩니다.

Method - (1)

먼저 본격적으로 들어가기에 앞서 여러가지 notation과 이론적인 기반에 관한 이야기를 해보도록 하겠습니다. GAN이 익숙하신 분들이라면 이 부분은 쉽게 읽어나가실 수 있을 것 같습니다.

$f(x, \theta) = W^{L+1}a_L(W^L(a_{L-1}(W^{L-1}(...a_1(W^1(x)...))) \tag{1}$

  • $f$ = discriminator(가장 마지막 확률을 반환해주는 activation function의 직전 layer까지)
  • $W^L$ = L번째 layer의 weight(learning parameter) 
  • $a_L$ = L번째 activation function(ReLU, tanh ...)
  • $x$ = discriminator의 input
  • $\theta = \{W^1, ..., W^L, W^{L+1}\}$
$D(x, \theta) = A(f(x, \theta)) \tag{2}$

식(2) 는 완전한 $D$를 의미합니다. 위의 $f(x, \theta)$에 마지막 activation function $A$를 붙여 $x$가 $q_{data}$에서 sample 된 확률을 반환해줍니다. 이렇게 만들어진 $D$는 GAN의 objective function $V(G, D)$에 대해 $\min_{G} \max_{D} V(G, D)$ 로 학습을 하게 됩니다.

이렇게 학습을 하여 optimal해진 $D$인 $D^*_G$는 fixed generator $G$에 대해 아래와 같은 density ratio estimation이 가능합니다. 그리고 GAN은 이렇게 optimal해진 $D$에 대해 $G$를 학습하는 것을 가정합니다.

$D^*_G(x) = \frac{q_{data}(x)}{q_{data}(x) + P_G(x)} = sigmoid(f^*(x)), where f^*(x) = \log(q_{data}(x)) - \log(P_G(x)) \tag{3}$

$f^*(x) = \log\frac{q_{data}(x)}{P_G(x)}$ 이므로 식(3) 역시 density ratio를 표현한 것임을 알 수 있습니다. 여기서 이제 $D$의 허점이 생기는데요. $f^*(x) = \log(q_{data}(x)) - \log(P_G(x))$의 미분값에 대해 살펴보겠습니다.

$\bigtriangledown_x f^*(x) = {\partial{f^*(x)}\over\partial{x}} = \frac{1}{q_{data}(x)} \bigtriangledown_x q_{data}(x) - \frac{1}{P_G(x)} \bigtriangledown_x P_G(x) \tag{4}$

식 (4)는 단순히 $f^*(x)$를 $x$로 미분한 것입니다. 이 때 문제가 발생합니다. 바로 식 (4)에서 표현된 ${\color{red}{f^*(x)}}$ 의 derivate 값에 제한이 없고(Unbounded) 심지어 계산이 불가능 할 때도 있다는 것입니다. 이러한 현상에 대해 Loss-sensitive generative adversarial networks on lipschitz densities, Wasserstein generative adversarial networks(WGAN), Improved training of wasserstein GANs(WGAN-GP) 논문들에서 문제를 제기하고 이에 대한 해결책을 찾고자 노력해왔습니다. 이들은 input example $x$에 대해 regularization term을 추가하여 Lipschitz constant를 조절하는 방식으로 문제를 해결하고자 했습니다. 

Spectral Normalization은 regularization term을 추가하는 방식이 아닌 weight normalization 방식을 통해 $D$의 Lipschitz constant에 상한선 $K$를 만들어 $D$를 stable하게 만들고자 합니다.  이를 반영하여 $D$의 objective function을 만들면 아래와 같습니다.

$f = \arg\max_{\lVert f \rVert \leq K} V(D, G) \tag{5}$

이를 풀어서 설명하자면 $f$의 Lipschitz constant가 $K$이하인 $f$ 중에 $V(G, D)$를 maximize하는 $f$를 고르겠다는 뜻입니다. 여기서 $f$는 식(2) $D(x, \theta) = A(f(x, \theta))$의 $f$를 의미합니다.

이번 포스팅의 내용은 여기까지입니다. 다음 포스팅에서는 Lipschitz constant가 무엇이고 이것이 갖는 의미가 무엇인지 그리고 Spectral Normalization이 무엇이고 이를 통해 Lipschitz constant를 어떻게 조절하는지 알아보도록 하겠습니다. 감사합니다.

0 coment�rios:

댓글 쓰기