GAN, Generative Adversarial Nets

Abstract

논문에서는 적대적 과정(adversarial process)를 통해 생성 모델을 추정하는 새로운 방법을 제안합니다. 적대적 과정에서는 다음과 같은 두 종류의 모델을 학습합니다.

  • (G) Generative Model : 무작위 노이즈 벡터 zz를 입력으로 받아, 학습 데이터의 분포를 모방하여 생성하는 모델입니다.
  • (D) Discriminative Model : 실제 데이터와 생성 모델 G가 생성한 데이터를 입력으로 받아, 실제 데이터인지 모델 G가 생성한 데이터인지 판별하는 모델입니다. 즉, 모델 G가 생성한 샘플 분포가 아닌 학습 데이터의 샘플 분포의 확률을 추정하도록 학습되는 모델입니다.

생성 모델 G와 판별 모델 D는 함께 학습되며, 모델 G는 자신이 생성한 데이터를 모델 D가 실제 데이터로 인식하도록 하는 방향으로 학습하며, 모델 D는 모델 G가 생성한 데이터와 실제 데이터를 잘 구분하도록 하는 방향으로 학습합니다. 만약 생성 모델 G가 충분히 학습하여 모델 D를 충분히 속이도록 데이터를 생성할 수 있다면, 판별 모델 D가 추정한 확률 분포는 1/2에 수렴하게 됩니다.

이러한 방법은 생성 모델 G가 파라미터만을 사용하여 직접 샘플링을 수행하기 때문에 마르코프 체인(markov chain)이 필요 없으며, 직접 확률 분포를 계산하지 않기 때문에 별도의 근사 추정 네트워크(approximate inference networks) 또한 필요하지 않습니다.

Introduction

이미지와 음성 그리고 자연어 등과 같은 분야에서 딥러닝 모델은 다양하고 계층적인 모델을 발견해왔습니다. 이러한 모델은 고차원의 입력 데이터로부터 클래스 라벨을 판별하는 모델을 통해 발전해왔으며, 역전파(backpropagation) 알고리즘과 드롭아웃(dropout) 알고리즘을 기반으로 여러 선형 레이어(linear units)를 통해 기울기를 계산하여 학습되었습니다.

그러나 생성 모델의 경우 데이터 분포의 샘플링을 수행할 수는 있으나, 이를 이용해 직접적으로 확률 분포를 계산하기 어렵기 때문에 최대 가능도 추정(maximum likelihood estimation) 알고리즘을 사용하여 학습하는데 어려움이 있습니다. 논문에서는 이러한 어려움을 극복하기 위해 새로운 생성 모델 기법을 제안합니다.

논문에서 제안하는 적대적 네트워크(adversarial nets)에서 생성 모델은 적대자(판별 모델)과 맞서고, 판별 모델은 생성 모델로부터 생성된 분포인지 실제 데이터 분포인지 판별합니다. 이러한 방법을 통해 근사 추론이나 마르코브 체인 없이 오직 순전파(forward-propagation)를 사용하여 생성 모델로부터 샘플을 생성합니다.

또한 이 프레임워크에서는 다양한 모델과 최적화 알고리즘을 적용할 수 있습니다. 논문에서는 노이즈를 다층 퍼셉트론(perceptron)에 전달하는 방식으로 생성 모델로부터 샘플을 생성하는 방법을 보입니다.

Adversarial nets

데이터 xx를 통해 생성자의 분포 pgp_g를 학습하기 위해 사용되는 입력 노이즈 변수를 pz(z)p_z(z)로 정의합니다. 그리고 샘플 zz로부터 생성자(generator)가 생성한 데이터 공간을 G(z;θg)G(z;\theta_g)로 표현합니다. 생성자 G는 파라미터 θg\theta_g를 포함하는 다층 퍼셉트론으로 구성된 미분 가능 함수로 파라미터 갱신을 통해 샘플 zz로부터 생성된 분포 pgp_g가 실제 데이터 분포를 따라가도록 학습합니다.

또한 생성자로부터 생성된 샘플 분포와 실제 데이터 분포를 판별하기 위해 사용되는 판별자(discriminator)를 D(x;θd)D(x;\theta_d)로 표현합니다. 판별자의 출력은 스칼라 값을 가집니다. D(x)D(x)는 입력 값 xx가 생성자가 아닌 실제 데이터인지에 대한 확률 값을 나타냅니다.

모델 학습 과정은 모델 D가 실제 학습 샘플과 생성자로부터 생성된 샘플이 정확한 클래스 값을 갖도록 하는 확률 값을 최대화하도록 학습하며, 모델 G는 수식 log(1D(G(z)))\text{log}(1-D(G(z))) 값이 최소화되도록 학습합니다. 따라서 모델 D와 G는 다음과 같은 수식을 만족하도록 학습됩니다. 즉, 아래와 같은 손실 함수를 갖습니다.

minGmaxDV(D,G)=Expdata(x)[logD(x)]+Ezpz(x)[log(1D(G(z)))]\min\limits_{G} \max\limits_{D} V(D,G)= \mathbb{E}_{x \sim p_{data}(x)}[\log{D(x)}]+ \mathbb{E}_{z \sim p_z(x)}[\log{(1-D(G(z)))}]

논문에서는 adversarial nets의 이론적인 분석을 통해, 모델 G와 D가 충분한 파라마티 크기를 갖는다면 학습을 통해 생성된 샘플 분포가 데이터 분포를 따라갈 수 있음을 보였습니다. 먼저 판별 모델 D의 경우 완전하게 학습하지 말아야 합니다. 학습 데이터가 한정되어 있으므로 D 모델이 완전히 학습하는 경우 오버피팅(overfitting)의 경향을 보일 수 있습니다. 대신 k번의 스텝만큼 모델 D를 학습시키고 G 모델을 한 스텝 학습시키는 방법을 사용합니다. 이로 인해 판별 모델 D는 최적해에 수렴하도록 유지할 수 있고, 생성 모델 G는 천천히 학습할 수 있습니다. 이 과정을 알고리즘으로 나타내면 아래 그림과 같습니다.

image

학습 초기 단계에서는 생성 모델 G가 충분히 학습하지 못한 상태이므로, 모델 D가 주어진 학습 데이터와 모델 G가 생성한 생성한 데이터를 확실하게 판별할 가능성이 높습니다. 이 경우에는 모델 G 학습 시 더 강한 기울기(gradient) 값을 주기 위해 모델 G 학습 시 log(1D(G(z)))\text{log}(1-D(G(z)))가 최소화하도록 학습하는 것보다 log(D(G(z)))\text{log}(D(G(z)))가 최대화하도록 학습하는 것이 좋습니다. 판별 모델 D가 생성 모델 G가 생성한 데이터를 잘 판별할 수 있는 상태이므로 D(G(z))D(G(z)) 값은 0에 가까운 값을 갖는데, log(D(G(z)))\text{log}(D(G(z))) 그래프가 0에 가까운 범위에서 log(1D(G(z)))\text{log}(1-D(G(z))) 그래프보다 더 높은 기울기 값을 갖기 때문입니다.

Theoretical Results

Global Optimality of pg=pdatap_g=p_{data}

생성 모델 G가 고정되었을 때 최적의 판별 모델 D

pg=pdatap_g=p_{data}를 만족하는 전역 최적해를 구하기 위해 먼저 주어진 생성 모델 G에 대한 최적화 된 판별 모델 D에 대해 고려합니다. 생성 모델 G가 고정되었다고 할 때, 최적화 된 판별 모델 D는 다음과 같음을 증명합니다.

DG(x)=pdata(x)pdata(x)+pg(x)D^*_G(x)=\frac{p_{data}(x)}{p_{data}(x)+p_g(x)}

먼저, 주어진 생성 모델 G에 대해 판별 모델 D에 대한 학습 손실 함수는 아래 식과 같은 V(G,D)V(G,D)를 최대화하는 것과 같습니다.

V(G,D)=xpdata(x)log(D(x))dx+xpz(x)log(1D(g(z)))dz=xpdata(x)log(D(x))+pg(x)log(1D(x))dx\begin{aligned} V(G,D) &= \int_x p_{data}(x)\,\text{log}(D(x))\,dx + \int_x p_z(x)\,\text{log}(1-D(g(z)))\,dz \\ &= \int_x p_{data}(x)\,\text{log}(D(x)) \,+ p_g(x)\,\text{log}(1-D(x))\,dx \end{aligned}

이 때, (0, 0)을 제외한 실수를 만족하는 (a, b) 쌍에 대해, 함수 alog(y)+blog(1y)a\,\log{(y)}+b\,\log{(1-y)}는 [0,1] 범위에서 y=aa+by=\frac{a}{a+b}일 때 최대 값을 만족하므로, 위 DG(x)D^*_G(x)를 만족할 때 V(G,D)V(G,D)가 최댓값을 가지므로 최적화 된 판별 모델 D가 위 수식과 같음을 증명할 수 있습니다. 즉, 판별 모델 D는 pdatap_{data}pgp_g의 확률 밀도 함수만 사용해서 최적의 판별 모델 D을 얻을 수 있습니다. 따라서 판별 모델 D의 손실 함수는 조건부 확률 P(Y=yx)P(Y=y|x)를 추정하는 로그-가능도(log-likelihood)를 최대화하는 것으로 해석할 수 있습니다. 조건부 확률에서 PPxxpdatap_{data}의 데이터인 경우 y=1y=1이며, pgp_g인 경우 y=0y=0 입니다. 따라서 이를 이용하여 생성 모델 G에 대한 손실 함수 C(G)C(G)를 아래와 같이 정리할 수 있습니다.

C(G)=maxDV(G,D)=Expdata[logDG(x)]+Ezpz[log(1DG(G(z)))]=Expdata[logDG(x)]+Expg[log(1DG(x))]=Expdata[logpdata(x)pdata(x)+pg(x)]+Expg[logpg(x)pdata(x)+pg(x)]\begin{aligned}C(G) &= \max\limits_{D}V(G,D) \\&=\mathbb{E}_{x \sim p_{data}}\left[\log{D^*_G(x)}\right] + \mathbb{E}_{z \sim p_z}\left[\log{(1-D^*_G(G(z)))}\right] \\&=\mathbb{E}_{x \sim p_{data}}\left[\log{D^*_G(x)}\right] + \mathbb{E}_{x \sim p_g}\left[\log{(1-D^*_G(x))}\right] \\&=\mathbb{E}_{x \sim p_{data}}\left[\log{\frac{p_{data}(x)}{p_{data}(x)+p_g(x)}}\right] + \mathbb{E}_{x \sim p_g}\left[\log{\frac{p_g(x)}{p_{data}(x)+p_g(x)}}\right] \\ \end{aligned}

생성 모델 G의 손실 함수에 대한 전역 최솟값

여기서는 생성 함수 G에 대한 손실 함수 C(G)C(G)에 대한 전역 최솟값은 pg=pdatap_g=p_{data}에서 나타나며, 이 때 전역 최솟값은 log4-\log{4}가 됨을 증명합니다. pg=pdatap_g=p_{data}일 때 식 (2)에 의해 DG(x)=12D^*_G(x)=\frac{1}{2}이며, 따라서 위의 C(G)C(G) 식에 따라 전역 최솟값이 log4-\log{4}가 됨을 알 수 있습니다. 추가로 전역 최솟값이 pg=pdatap_g=p_{data}에서만 만족하는지 확인하기 위해 C(G)=V(DG,G)C(G)=V(D^*_G,G)에서 log4-\log{4}를 빼 아래와 같은 식을 얻습니다.

C(G)=log(4)+KL(pdatapdata+pg2)+KL(pgpdata+pg2)C(G)=-\log{(4)}+ {KL}\left(p_{data}\,||\,\frac{p_{data}+p_g}{2}\right)+ {KL}\left(p_g\,||\,\frac{p_{data}+p_g}{2}\right)

KLKL은 쿨백-라이블러 발산(Kullback-Leibler divergence, KLD)를 의미하며, 이 식을 젠슨-섀넌 발산(Jensen-Shannon divergence, JSD)로 다시 정리하면 아래와 같습니다.

C(G)=log(4)+2JSD(pdatapg)C(G)=-\log{(4)}+2\,\cdot\,{JSD}(p_{data}\,||\,p_g)

이 때, 두 분포의 JSD는 항상 음수가 아니며, 두 분포가 동일할 때 0 값을 갖기 때문에 C(G)C(G)는 두 분포가 같을 때인 pg=pdatap_g=p_{data}일 때 최솟값 log(4)-\log{(4)}를 갖음을 확인할 수 있습니다.

Convergence of Algorithm 1

생성 모델 G와 판별 모델 D가 충분한 모델 크기(capacity)를 가지며, 학습 알고리즘의 스텝마다 판별 모델 D가 최적화된다면, 생성 모델 G와 pgp_g가 아래 손실 함수을 따라서 최적화되며, pgp_gpdatap_{data}에 수렴함을 증명합니다.

Expdata[logDG(x)]+Expg[log(1DG(x))]\mathbb{E}_{x \sim p_{data}}\left[\log{D^*_G(x)}\right] +\mathbb{E}_{x \sim p_g}\left[\log{(1-D^*_G(x))}\right]

먼저 V(G,D)V(G,D)pgp_g에 대한 함수 U(pg,D)U(p_g,D)로 치환하여 생각합니다. U(pg,D)U(p_g,D)pgp_g에 대해 볼록(convex) 함수입니다. 이 때, 부분 도함수(sub-derivative)는 볼록 함수(convex function)에 대해 최댓값을 가지는 지점에서 함수의 도함수(derivative)를 포함하는 성질이 있습니다. 즉 f(x)=supαAfα(x)f(x)=\text{sup}_{\alpha \in A}f_{\alpha}(x) (fα(x)f_\alpha(x) 함수들 중 xx에 대한 최댓값)이고, fα(x)f_{\alpha}(x)는 모든 α\alpha에 대하여 xx에서 볼록 함수라고 할 때, β=argsupαAfα(x)\beta=\text{arg}\,\text{sup}_{\alpha \in A}f_{\alpha}(x) (supαAfα(x)\text{sup}_{\alpha \in A}f_{\alpha}(x)가 최댓값을 갖게하는 α\alpha 값)를 만족하는 β\beta에 대하여 fβ(x)f\partial f_{\beta}(x) \in \partial f를 만족합니다. 이를 통해 생성 모델 G가 주어진 최적의 판별 모델 D에서 pgp_g에 대하여 경사 하강법을 사용하여 최적화를 할 수 있음을 증명합니다. 따라서 supDU(pg,D)\text{sup}_DU(p_g,D)pgp_g에 대하여 볼록 함수이며, 고유한 전역 최솟값을 갖음을 이미 증명했으므로, pgp_g의 충분한 갱신(경사하강법을 통한)으로 pxp_x에 수렴할 수 있습니다.

실제로는, 모델은 함수 G(z;θg)G(z;\theta_g)를 통해 제한된 pgp_g의 분포만을 표현하고 pgp_g 자체를 최적화하는 것보다는 θg\theta_g를 최적화합니다. 또, 생성 모델 G를 다층 퍼셉트론을 사용하여 정의하면 매개 변수 공간에 여러 임계점이 존재합니다. 그러나 이론적으로 보장하기 어려움에도 다층 퍼셉트론이 우수한 성능을 보이기 때문에 생성 모델 G를 정의하는데 사용합니다.

Experiments

논문에서는 MNIST, TFD(Toronto Face Database), CIFAR-10 데이터셋 등을 사용한 실험을 통해 생성 모델의 결과를 보였습니다.

생성 모델 G은 활성화 함수로 변형한 ReLU(a mixture of rectifier linear activations)와 sigmoid를 사용하였으며, 판별 모델 D는 maxout를 사용했습니다. 판별 모델 학습에 dropout 방법을 추가로 적용했습니다. 추가로 논문에서는 생성 모델의 중간 레이어에 dropout과 다른 노이즈 기법을 사용할 수 있다고 설명했으나, 실험에서는 생성 모델 G의 가장 최하단 레이어의 입력으로만 노이즈를 사용했다고 설명했습니다.

논문에서는 생성 모델 G를 통해 생성된 샘플에 가우시안 파첸 윈도우(Gaussian Parzen window)를 사용하여 테스트 데이터의 확률 pgp_g를 추정하고, 해당 분포를 사용하여 로그 우도(log-likelihood) 값을 계산했습니다. 가우시안 파첸 윈도우를 사용한 로그 우도 추정 방법은 상대적으로 분산이 높고 차원이 높은 공간에서는 별로 성능이 높지 않다고 알려져 있으나, 논문을 발표한 당시 가장 좋은 방법이므로 선택했다고 설명합니다.

테스트 데이터에 대한 생성된 데이터 pgp_g의 확률을 추정하기 위해 가우시안 파첸 윈도우(Gaussian Parzen window)와 분포 간의 로그-가능도(log-likelihood)를 사용했습니다. 가우시안 파첸 윈도우에서 사용되는 σ\sigma 파라미터는 검증 데이터셋에 대한 교차 검증을 통해 얻은 값을 사용했습니다.

위 표는 MNIST와 TFD 데이터셋에 대한 모델 별 파첸 윈도우 기반의 로그 우도 값을 기록해놓은 결과입니다. MNIST 데이터셋은 각 테스트 데이터셋의 샘플 별로 로그 우도와 표준 편차들의 평균 값을 사용했으며, TFD 데이터셋은 데이터 폴드 별 로그 우도와 표준 편차들의 평균 값을 사용했습니다. 이 때 각 폴드 별로 다른 σ\sigma 값을 사용했습니다. MNIST 데이터셋의 경우 기존 모델보다 높은 로그 우도 값을 보였습니다.

image

위 그림은 앞에서 설명한 여러 데이터셋을 통해 생성된 샘플 결과입니다. (a)는 MNIST 데이터셋에 대한 생성 결과, (b)는 TFD 데이터셋에 대한 생성 결과이며, (c)는 생성 모델과 판별 모델에 fully connected layer를 사용한 CIFAR-10 데이터셋 생성 결과, (d)는 생성 모델에 deconvolutional layer, 판별 모델에 convolutional layer를 사용한 CIFAN-10 데이터셋의 생성 결과입니다.

가장 오른쪽 열은 실제 학습 데이터 샘플과 가장 가깝게 생성된 샘플로 모델이 학습 데이터를 기억하지 않았음을 보입니다. 또 다른 생성 모델들이 히든 레이어의 샘플들의 조건부 평균을 사용하는 것과 달리 모델 분포로부터 실제 샘플을 생성함을 보입니다. 또한, 이 샘플들은 마르코프 체인에 의존하지 않기 때문에 상관 관계를 가지고 있지 않습니다.

Advantages and disadvantages

논문에서 새롭게 제시한 프레임워크의 장단점을 이미 존재하는 프레임워크들과 비교하여 설명합니다.

먼저 논문에서 제시한 프레임워크의 단점은 pg(x)p_g(x)에 대한 명시적으로 표현하기 어려우며, 모델 훈련 중에 생성 모델 G와 판별 모델 D가 서로 잘 동기화되도록 학습해야 합니다. 특히 판별 모델의 파라미터를 업데이트하지 않고 생성 모델을 너무 많이 학습하는 것을 피해야 합니다. 그렇지 않으면, 생성 모델이 zz의 많은 값들을 xx의 동일한 값으로 축소시켜 pdatap_{data}를 모델링하기에 충분한 다양성을 갖지 못하는 헬베티카 시나리오(Helvetica scenario)가 발생할 가능성이 있습니다.

장점으로는 마르코프 체인(Markov chain)이 전혀 필요하지 않으며, 기울기 값을 얻는데 오직 역전파(backprop)만이 필요합니다. 또 학습하는 중에 추론 과정이 필요하지 않으며, 다양한 기능을 모델에 추가할 수 있습니다. 아래 표는 다른 생성 모델링 기법과 논문에서 제시한 생성 모델링 기법을 비교한 표입니다.

image

위에서 언급한 장점은 주로 계산적이었으나, 이외에도 생성 모델은 데이터 샘플로부터 직접 업데이트되지 않고 판별 모델을 통해 얻은 기울기로만 업데이트되므로 이를 통해 통계적인 이점을 얻을 수 있습니다. 이는 입력 데이터의 요소들이 직접적으로 생성 모델의 파라미터로 복사되지 않는 것을 의미합니다. 또 다른 이점으로는, 마르코프 체인을 기반으로 하는 모델들은 각 체인들이 섞일 수 있도록 생성된 분포가 흐릿해야 하는 반면에, 적대적 생성 모델은 제대로 생성되지 않은 분포일지라도 샤프하게 표현되는 장점이 있습니다.

Conclusions and future work

논문에서 제시한 프레임워크는 다음과 같이 많고 간단하게 확장이 가능합니다.

  1. 조건부 생성 모델 p(xc)p(x|c)는 생성 모델 G와 판별 모델 D에 cc를 더함으로써 얻을 수 있습니다.
  2. xx가 주어졌을 때, zz를 예측하는 보조 네트워크를 학습하여 근사 추론하도록 학습할 수 있습니다. 이는 wake-sleep 알고리즘과 유사하지만, 생성 모델의 학습이 끝나고서 생성 모델을 고정한 상태로 추론 모델을 학습할 수 있다는 장점이 있습니다.
  3. 파라미터를 공유하는 조건부 모델 집합을 학습함으로써 xx의 인덱스의 부분 집합인 ss에 대한 모든 조건부 확률 분포 p(xSxS)p(x_S|x_{\cancel{S}})를 근사적으로 모델링할 수 있습니다. 즉, 적대적 신경망을 사용하여 결정론적인 MP-DBM를 확률적인 확장을 구현할 수 있습니다.
  4. 반지도 학습(semi-supervised learning): 라벨 데이터 수가 적은 경우 판별 모델 혹은 추론 모델의 특징(feature)을 사용하여 분류 모델(classifier)의 성능을 향상시킬 수 있습니다.
  5. 효율적으로 향상시키는 방법: 생성 모델 G와 판별 모델 D를 조율하는 더 나은 방법을 고려하거나 학습 중에 샘플 zz에 대한 분포를 향상시키는 방법을 고려해서 학습을 빠르게 가속화시킬 수 있습니다.