Jun 2014
Paper: Arxiv
Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio
이미지 생성 GAN의 기본 논뭉
Generator와 Discriminator가 어떤 방식으로 학습하는지 이해하면 될듯
KL-divergence와 JSD에 대해서 이해하고 수식을 이해하면 논문을 이해하는데 도움이 될 것 같다.
1. Introduction
기존의 딥러닝은 다양한 parameter와 계층구조가 잘 설계된 모델을 사용해, 다양한 타입의 데이터의 분포를 표현하는데 의의가 있었다. 그 중에서도 classification, discriminatrive model이 주목을 받았다. 그 이유는 backpropagation과 dropout과 같은 알고리즘으로 gradient들을 성공적으로 다룰 수 있었기 때문이다.
Deep generative models의 경우 기존 생성 모델은 computation이 다루기 복잡했고, 활성화 함수들의 이점을 충분히 활용할 수 없는 구조였기 때문에 주목받지 못했다. 이러한 문제점을 해결한 모델이 바로 GAN이다. GAN에서는 forward propagation, backward propagation, dropout을 생성모델에서도 사용가능하게 하였다.
본 논문에서는 GAN을 위조지폐범과 경찰로 비유했다. 위조지폐범은 최대한 진짜 같은 화폐를 만들어 경찰을 속이기 위해 반복 학습하고, 경찰은 진짜 화폐와 위조 화폐를 완벽하게 구분하는 것을 목표로 한다. 이런 과정이 반복되면 어느 순간 위조지폐범의 스킬이 상당해져 진짜 같은 위조 지폐를 만들어내고, 경찰은 이를 구분해내지 못하면서 경찰이 위조지폐를 구분할 수 있는 확률은 50%로 수렴하게 된다.
2. Method
Adversarial nets
Adversarial Learning
training data의 distribution인 $p_{data}$와 Generator가 만들어낸 이미지의 분포인 $p_g(G(z))$ 사이를 discriminator가 구분할 수 있는 확률을 D라고 한다. 처음에는 discriminator가 fake이미지와 실제 이미지를 구분해내기가 쉽다. 이 상황에서 D는 매우 낮다. 이후 discriminator를 고정 후 generator를 좀 더 잘 만들어낼 수 있게 업데이트하면 점점 discriminator가 구분해내기가 어려워진다. 그러면 discriminator는 더 잘 구분해낼 수 있도록 다시 업데이트가 된다.
이 과정을 반복하다보면 결국 discriminator가 점점 더 많이 틀리게 되고 $D=1/2$로 수렴하게 된다. discriminator가 완전히 구분하지 못하는 위 그림에서 가장 오른쪽 그림처럼 $p_g = p_{data}$가 되어 즉 두 분포는 같아지게 된다.
Objective function
Discriminator의 Objective function
- Discriminator는 x가 실제 데이터라면 1을, 가짜 이미지라면 0을 리턴하는 classifier라고 생각하면 이해하기 쉽다. D(x)가 discriminator의 objective function은 아래와 같다.
- 실제 이미지가 input이고 실제 이미지를 잘 예측했다면 $D(x)=1, log(D(x))=0$이 되고 fake 이미지로 예측했다면, $D(x)=0, log(D(x))= -\infty$이 되고 제대로 예측했다면 $log(1-D(x))=0$ 이 된다.
- 즉, discriminayor의 최대값은 0, 최소값은 $-\infty$이며, 원하는 것은 항상 최대값의 성능인 0을 보이길 원한다. 그렇다면 최대 기울기를 향해 학습(gradient ascending)을 해야 한다는 뜻이다.
Generator의 Objective function
- discriminator와 같이 최소 $-\infty$, 최대 0을 가지지만 discriminator를 속이는 것이 목표이기 때문에 discriminator와 반대로 gradient descent를 사용한다. 즉, generator가 만들어낸 fake 이미지를 실제 이미지라고 분류했을 때 그 방향으로 gradient update를 진행하는 것이다.
- Generator는 자기가 만든 fake 이미지가 얼마나 discriminator를 헷갈리게 했는지가 중요하다. 그래서 discriminator objective function의 뒷부분, fake 이미지에 대한 내용만 사용하면 된다.
- GAN의 objective function은 discriminator의 objective function과 generator의 objective function을 합친 모양이다. 즉, 최소화를 해야하는 generator($\theta$)와 최대화를 해야하는 discriminator($\phi$)의 objective function으로 합치는 모양이다.
Theoretical Results
매 epoch당 k번 discrimator를 학습하고 generator를 학습한다. discriminator를 학습할 때 $m$개의 noise를 뽑은 후 $m$개의 원본 데이터를 sampling한다. discrimator의 경우 기울기 값을 구한 뒤 gradient ascending을 통해 최대화하게 된다. 원본 데이터에 대해서는 1이라는 값, fake 이미지에 대해서는 0이라는 값을 생성하도록 만든다.
생성자를 학습시킬 때에도 $m$개의 noise를 sampling한 뒤 $m$개의 fake 이미지를 생성하고 discriminator와 반대로 gradient descending을 통해 최소화한다.
Global Optimality of $p_g = p_{data}$
논문의 저자들은 첫번째로 어떤 G에 대해서든 optimal한 discriminator를 갖고 있다고 고려한다.
$$ D^*G = \frac {p{data}(x)} {p_{data}(x) + p_{g}(x)} $$
이 때 고정된 D에 대한 D의 성능을 다음과 같이 정의할 수 있다. optimal 하다면 위에서 설명했듯이 1/2로 수렴하게된다. optimal한 D에 대한 objective function은 아래와 같다.
$$ \max_{D} V(G, D) = E_{x \sim p_{data}} [logD(x)] + E_{x \sim p_{G}}[log(1-D(x)] $$
논문에서는 maximum에 도달하는 것의 증명을 아래 그림을 활용하여 다음과 같이 설명했다. 어떤 (a,b) $\in$ $R^2$ 에 대해서든 $y → alog(y) + b(log(1-y)$는 [0,1]에서 $a/(a+b)$ 에 maximum으로 도달한다.
global minimum of the virtual training criterion C(G)는 $p_g=p_{data}$ 일 때 만족한다. 이 때 C(G)는 -log4로 수렴한다.
$p_g = p_{data}, D^*_G(x) =1/2$ 이면 C(G)=log1/2 + log1/2 = -log4가 된다.
$$ D^*G = \frac {p{data}(x)} {p_{data}(x) + p_{g}(x)} $$
위 C(G) 식을 첫번째 term과 두번째 term가 비슷한 형태이기 때문에 다음과 같이 KL-divergence로 나타낼 수 있다(증명의 편의성을 위해). KL-divergence는 두 개의 분포가 있을 때 두개의 분포가 얼마나 차이가 있는지 수치적으로 표현하기 위해 사용하는 divergence 공식이다.
다음과 같이 KL-divergence로 나타낸 식을 JSD(Jenson-Shannon Divergence)의 형태로 바꿔준다. 그 이유는 KL-divergence는 distance matrix로 활용하기 어렵기 때문에 distance matrix로 활용하기 좋은 JSD의 형태로 바꿔준다.
JSD는 두 개의 분포가 있을때 $p_{data}$와 $p_g$의 distance를 구하는데 사용한다. JSD는 distance matrix이기 때문에 그 최솟값을 0으로 갖는 특징이 있다. 즉, $p_{data}=p_g$일 때 최솟값으로 -log(4)를 얻을 수 있는 것이다.
따라서 global optimum을 얻을 수 있는 유일한 point는 $p_g = p_{data}$ 즉, generator의 이미지와 원본 이미지의 distribution이 같을 때 global optimum point를 갖을 수 있다는 것이다.
3. Experiments
- MNIST, TFD(Toronto Face Database), CIFAR-10에 대해 훈련
- Generator에서는 ReLU, Sigmoid activation을 섞어서 사용
- Discriminator에서는 Maxout acrivation만 사용
- Discriminator 훈련시 Dropout 사용
- 저자들이 제안하는 프레임워크는 generator의 중간 레이어들에 dropout과 noise 추가를 이론적으로 허용하지만, 오직 generator의 최하단 레이어에만 노이즈를 추가했다.
논문에서는 $p_g$ 하에서 test data의 확률을 Gaussian Parzen window를 G에 의해 생성된 샘플들에 fitting하고 추정된 분포 하에 얻어진 log-likelihood를 확인하여 추정했다. Gaussian의 parameter $\sigma$는 교차검증의 validation set을 통해 얻었다. 이 likelihood를 추정하는 method는 높은 분산과 고차원 공간에서는 성능이 좋지 않았다.
Generator에서 생성된 data의 정량적 평가 문제는 명확한 해답이 나와있지 않음
Advantages and Disadvantages
장점
- Marcov chain이 필요하지 않다. obtain gradients과정에서는 backprop 만 사용
- 학습단계에서 inference 필요 없음
- 모델에 다양한 함수들이 통합될 수 있음
- Generator network가 데이터로부터 직접적으로 업데이트 되지 않고 오직 Discriminator로부터 흘러들어오는 grdient만 이용해 학습될 수 있다. (= input의 요소들이 직접적으로 생성기의 parameter에 복사되지 않는다)
단점
- $p_g(x)$에 대한 명시적인 표현이 없음
- training 과정에서 D와 G가 균형을 맞춰야함.
4. 결론
- 클래스 레이블 $c$를 G와 D에 모두 추가하는 것으로 조건부 생성모델 $p(x|c)$를 얻을 수 있다.
- $x$가 주어졌을 때 $z$를 예측하는 보조 네트워크를 훈련시켜 학습된 근사추론을 진행할 수 있다.
- 파라미터들을 공유하는 조건부 모델들의 family를 훈련시킴으로써 모든 조건부확률 $p(x_s|x_{not s}$) ($s$: $x$의 인덱스들의 부분집합)을 근사적으로 모델링할 수 있다.
- Semi-supervised learning: Discriminator에 의해 얻어지는 중간단계 feature들은 레이블이 일부만 있는 데이터셋을 다룰 때 분류기의 성능을 향상시킬 수 있다.
- Efficiency improvements: G와 D의 조정을 위한 더 좋은 방법을 찾거나 훈련동안 z를 샘플링하기 위해 더 나은 분포를 결정함으로써 학습을 가속화할 수 있다.