Overview

(image source : https://medium.com/@devnag/generative-adversarial-networks-gans-in-50-lines-of-code-pytorch-e81b79659e3f#.sftu3z64g)

  • Adversarial Learning이라는 개념을 생성모델에 처음 적용한 새로운 프레임워크
  • generator와 discriminator 두 모델을 경쟁적으로 학습시켜 둘 모두를 동시에 최적화함.
  • 데이터의 분포에 대한 명시적인 가정없이 데이터 생성이 가능함.
  • 그 당시 생성모델연구에서 주로 사용되던 MC method나 Approximate Inference등에 의존하지 않음.
  • VAE와 비슷하게 훈련과정에서 latent space를 학습.
    학습 완료 후 학습된 latent space에서 임의로 샘플링하여 generator에 전달함으로써 새로운 데이터 생성.
  • 단일모델 훈련시키는거에 비해서 난이도가 매우 높은편, generator와 discriminator 균형 맞추는게 실제로 엄청 어려움.
  • 매우 많은 후속연구들을 유발한 멋들어지고 우수한 모델. 많은 변형모델들을 통해 이미지 생성 task에서 SOTA로 군림.

[original paper link]
내용에 오류가 있을경우 지적해주시면 감사하겠습니다.


contents

  1. Abstract
  2. Introduction
  3. Related work
  4. Adversarial nets
  5. Theoretical results
  6. Experiments
  7. Advantages and disadvantages
  8. Conclusions and future work


0. Abstract

두 개의 분리된 모델

  • generative model G(생성기): 데이터의 분포를 포착하는 모델
  • discriminative model D(판별기): 한 샘플이 생성기가 아닌 실제 training data로부터 왔을 것이라는 확률을 추정하는 모델

을 동시에 학습하는 adversarial process이라는 생성모델 estimating을 위한 새로운 프레임 워크를 제안한다!!

생성기 G의 학습절차는 D가 잘못된 결정을 하게 만들 확률을 최대화 하는 것이다.
이 프레임워크는 minimax two-player game이라 볼 수 있다.

저자들은 어떠한 임의의 G, D에 의한 함수공간상에 G가 훈련데이터의 분포를 잘 커버하고 D가 생성기로부터 생성된 가짜데이터와 진짜데이터를 구분하지 못하여 항상 1/2의 확률값을 출력하게 하는 unique한 solution이 있다고 주장한다.

G와 D가 Multi Layer Perceptrons로 정의된 경우, 전체 시스템은 backpropagation에 의해 한방에 훈련될 수 있다.

기존의 연구들에서 제시된 주요 생성모델들이 샘플링 방법(MCMC), 근사 추론(Approximate Inference)에 기반을 두고있는 반면, GAN에는 그런것들이 일체 필요없다!!!


1. Introduction

딥러닝은 우리가 다양한 종류의 데이터(이미지, 오디오, 언어 등)에 대한 확률분포를 표현하는 풍부하고 계정적인 모델을 발견할 수 있도록 인도한다. 지금까지(~2014) 딥러닝에서 가장 훌륭한 성공은 고차원의 풍부한 sensory 입력 데이터를 범주형 class label로 매핑하는 discriminative model(판별모델) 이었다. 이 괄목할만한 성공은 주로 역전파, 드롭아웃, 구간별 선형활성화유닛(piecewise linear units) 등에 기반을 두고있다.

Deep Generative Model(심층 생성모델)은 생성모델의 목적 달성을 위한 최대 가능도 추정에 있어서 수많은 다루기 힘든(intractable) 확률적 계산을 근사하는 것에 어려움이 있었으며, piecewise linear units의 이점을 생성적 관점에서 잘 이용하는 데에 어려움이 있어 그동안 판별모델에 비해 적은 영향력을 보여주고 있었다. 그래서 저자들은 위와같은 어려움을 회피하는 새로운 생성모델 추정절차를 주장한다!!

제안된 적대적 신경망(adversarial nets) 프레임워크에서 생성모델은 상대편(판별모델)을 속이도록 세팅되고 판별모델 D은 어떤 샘플이 생성모델 G가 모델링한 분포로부터 나온것인지 실제 데이터 분포로부터 나온것인지를 결정하는법을 배운다. 이러한 경쟁구도는 두 모델이 모두 각각의 목적을 달성시키기 위해 스스로를 개선하도록 이끈다. (G는 D를 더 잘 속이도록 원본 데이터를 더 잘 모방한 분포를 학습하게되며, D는 진짜/가짜 데이터를 더 잘 간파하도록 데이터의 특징을 더잘 파악하도록 학습된다.)

이러한 적대적 프레임워크는 다양한 모델, 최적화 알고리즘들을 위한 훈련알고리즘을 유도하게끔 확장될 수 있다! 본 연구는 이 프레임워크를 이용한 하나의 case로써 MLP(다층퍼셉트론)로 구성된 생성모델에 random noise를 흘려보내는 것으로 데이터를 생성하며, 판별을 위한 모델또한 MLP로 구성된다. 이 case를 본 연구에서 adversarial nets이라고 명명하겠다!


2. Related work

본 연구 이전까지 심층생성모델의 연구는 주로 확률분포함수의 parametric specification을 발견하는 것에 집중되어왔다. 그렇게 분포함수가 구체화 되면 최대가능도 추정을 하는식으로 모델이 얻어질 수 있다. DBM(Deep Boltzmann machine)이 가장 성공적인 예시임. 근데 이런 모델은 일반적으로 intractable한 가능도함수를 갖고있기때문에 gradient에 대한 수치적인 근사가 필요하다.

이러한 어려움은 명시적으로(explicitly) 가능도함수를 표현하지 않으나 적절한 분포로부터 샘플을 생성하는게 가능한 'generative machines'가 발전하도록하는 모티브가 되었다. 수치적인 근사가 요구되는 Boltzmann machine과 비교하여 직접 정확한 역전파를 통하여 훈련될 수 있는 Generative Stochastic Networks(GSN)이 generative machines의 예시이다.

본 연구는 GSN에서는 사용되는 Markov Chains을 제거함으로써 generative machine의 아이디어를 확장한다.

비슷한 시기에 제안된 VAE [paper][review]는 GAN과 자주 비교되는 생성모델인데, VAE에서는 기존의 방법들보다 더 general한 stochastic backpropagation을 개발하였으며 유한한 분산을 가지는 정규분포(latent variable의 분포로 가정되는)로부터 backpropagate가 가능토록 한다. VAE에서는 본 연구에서는 하이퍼파라미터로써 다루는 gaussian의 covariance를 모델을 통해 학습할 수 있는 learnable parameter로 다룬다는 점에서도 차이가 있음!
VAE에서도 GAN과 마찬가지로 생성모델을 훈련시키기 위한 또다른 네트워크가 있는데, GAN에서와는 다르게 이 또다른 네트워크(recognition model(encoder))는 근사추론을 수행한다.

.. 중략 ..

GAN는 때때로 "Adversarial Examples"와 혼동되기도 한다. Adversarial examples는 실제 데이터와 유사하지만 오분류되는 예시들을 찾기위해 그레디언트 기반 최적화를 입력 데이터에 직접적으로 적용함으로써 찾아지는 examples이다. 따라서 GAN과는 전혀다르다. (생성모델의 훈련을 위한 메커니즘이 아니기 때문!) 대신 Adversarial examples는 인간이 보기에는 차이가 거의 없어보이는 관측을 매우 강한 확인을 갖고 서로 다른 클래스로 분류하는 신경망의 흥미로운 결정방식을 분석하는 툴로써 주로 사용된다.

이런 적대적 사례의 존재는 GAN의 훈련이 비효율적일 수 있음을 시사한다. 왜냐하면 적대적 사례들은 판별모델이 인간이 인식하는 데이터에 대한 속성을 모방하지 않고 확신에 찬 인식을 하게끔 만들어버릴 수 있음을 보이기 때문. (이건 GAN 뿐만 아니라 다른 모든 discriminative network가 해결해야할 문제임!)


3. Adversarial nets

적대적 모델링 프레임워크는 모델이 둘다 MLP일때 가장 간단히 적용할 수 있다.

(figure from [GAN tutorial, Ian Goodfellow, 2016])

generator의 분포 pgp_{g}를 x에 대해 학습시키기 위해 input noise변수에 대한 prior(사전분포) pz(z)p_{z}(z)를 정의한 뒤, 그 노이즈변수의 데이터 공간에의 매핑을 G(Z;θg)G(Z;\theta_{g})로 나타낸다. 이때 G는 파라미터 θg\theta_{g}를 갖는 미분가능한 MLP이다. 또한 scalar 값(확률)을 출력하는 또다른 MLP인 D(X;θd)D(X;\theta_{d})를 정의한다. D(x)D(x)는 입력된 샘플이 pgp_{g}가 아닌 실제 데이터 분포로부터 얻어졌을 확률을 계산한다.

이제, D가 true 데이터와 생성데이터에 대해 적절한 label을 할당하도록 하는 확률을 최대화 하게끔하고 이와동시에 G가 log(1-D(G(z)))를 최소화하도록 훈련시킨다. 수식은 다음과 같다.

위의 수식으로 표현되는 minimax게임은 실용적인 측면에서 반드시 iterative하고 numerical한 접근으로 구현되어야한다. 이 논문에서는 D를 먼저 k step 훈련시키고 G를 one step 훈련시키는 방식으로 하나의 훈련 루프를 구축하는게 G를 천천히 변화시키는동안 D를 최적점에 가깝게 유지하는 결과를 준다고 한다!

그런데 실제로 GAN을 training하다보면 generator가 학습을 위한 충분한 gradient를 제공받지 못할 수 있다. 학습초기에 G가 생성하는 데이터 품질이 변변치못할때, D가 이것들을 실제 True 데이터와 비교하고 매우 강한 confidence로 기각하기 때문이다. (D의 출력은 0 ~ 1의 확률값인데, 판별기의 출력층 구현시에 시그모이드 함수를 사용하기 때문에, 시그모이드 함수 개형을 생각해보면 너무 구리거나 너무 실제같은 관측들에 대한 영역에서는 gradient가 0에 가깝게 saturate됨! -> 시그모이드 함수의 고질적인 문제.)

이 문제를 완화하기 위해 본 논문에서는 generator가 log(1-D(G(z)))를 최소화하도록 하지 않고 log(D(G(z)))를 최대화 하도록 목적을 재설정 한다고 한다. 의미상으로는 똑같은데, 학습 초기단계에 G가 더 풍부한 gradient를 받을 수 있도록 한다고 하네요?! 음 왜그럴까?.? 이유는 더 고민해봐야겠음..

적대적 학습의 진행과정은 아래와 같이 도식화할 수 있다.

  • 판별기(D)가 모델링하는 조건부확률 : 파란색 점선
  • 생성기(G)가 모델링하는 pgp_g : 녹색 실선
  • 실제 데이터 생성분포 pxp_x : 검은 점선
  • 하단의 수평선 : z가 균일하게 샘플링되는 도메인
  • 상단의 수평선 : x의 도메인
  • 위로 향하는 화살표 : x=G(z)x = G(z)의 매핑을 통과한 샘플들이 어떤식으로 non-uniform한 pgp_g를 나타내도록 하는지 보여줌.

G는 G(z)가 밀집된 부분에 높은 확률밀도를 주고, 그 외의 부분에 낮은 확률밀도를 부여함으로 확장되어 pgp_g가 정의되어있는데, 학습이 진행됨에 따라 (a) -> (b) -> (c) -> (d)의 과정을 살펴보면 generator가 모델링하는 녹색 unimodal curve는 점점 실제 data generating distribution에 가까워지고 discriminator가 모델링하는 파란색 sigmoid curve는 점점 flatten되어 1/2에 수렴하는 모습을 확인할 수 있다.


4. Theoretical Results

G는 zpzz \sim p_z일때 얻어지는 샘플들의 확률분포 G(z)G(z)로써 pgp_g를 암묵적으로 정의한다. 그러므로 아래에서 살펴보는 알고리즘 1이 pdatap_{data}에 대한 좋은 estimator로 수렴되길 원한다.

1 epoch마다 아래의 과정을 반복


아래를 k번 반복 (논문에서 k = 1로 실험)
1. m개의 노이즈 샘플을 pg(z)p_{g}(z)로부터 샘플링
2. m개의 실제 데이터샘플을 pdata(x)p_{data}(x)로부터 샘플링
3. 경사상승법을 이용해 V(G,D)식 전체를 최대화하도록 discriminator 파라미터 업데이트

이후
1. m개의 노이즈 샘플을 pg(z)p_{g}(z)로부터 샘플링
2. V(G, D)에서 log(1-D(G(z)))를 최소화 하도록 generator 파라미터 업데이트


4.1 global optimality of pgp_g = pdatap_{data}

모든 가능한 G에 대해 최적의 discriminator D를 구해보자.

위의 식을 D(x)에 대해 편미분하고 결과값을 0이라고 두면 optimal한 D는 아래와 같이 얻어짐.

이렇게 얻은 optimal D를 원래의 목적함수 식에 대입하여 생성기 G에 대한 Virtual Training Criterion C(G)를 다음과 같이 유도할 수 있다.
위의 C(G)는 generator가 최소화하고자 하는 기준이 되며, 이것의 global minimum은 오직 pgp_g = pdatap_{data}일때 달성된다. 그 점에서의 C(G)값은 log4가된다.

증명에 대한 자세한 내용이 궁금하시다면 Introduction to Deep Learning, lecture23, CMU 2020f 영상과 슬라이드를 참고하세요!

4.2 Convergence of Algorithm 1

G와 D가 충분한 capacity를 가지며, algorithm 1의 각 스텝에서 discriminator가 주어진 G에 대해 최적점에 도달하는게 가능함과 동시에 pgp_{g}가 위에서 제시한 criterion을 향상시키도록 업데이트 되는 한, pgp_{g}pdatap_{data}에 수렴한다.

.. 증명 생략 ..

그런데 실질적으로 adversarial nets은 함수 G(z;θg)G(z;\theta_{g})를 통하여 분포 pgp_{g}의 제한된 family만을 나타내게 되며, 우리가 수행하는 최적화는 사실 pgp_{g}를 직접 최적화 하는게 아닌 θg\theta_{g}를 최적화하는 것이다. 그래서, 위 증명이 적용되지않는다... (최적의 모델로의 수렴 보장이 안됨..)

그러나 실무에서 MLP가 보여주는 훌륭한 퍼포먼스는 위와같은 이론적 gurantee의 부족에도 불구하고 사용할 수 있는 합리적인 모델이라는 사실을 말해준다!


5. Experiments

  • MNIST, TFD(Toronto Face Database), CIFAR-10에 대해 훈련.
  • generator에서는 ReLU, sigmoid activation을 섞어 사용.
  • discriminator에서는 maxout activation만을 사용.
  • discriminator 훈련시 드랍아웃 사용.
  • 저자들이 제안하는 프레임워크는 generator의 중간 레이어들에 dropout과 noise 추가를 이론적으로 허용하지만, 오직 generator의 최하단 레이어에만 노이즈를 추가했다고 함.

Gaussian Parzen window를 G에 의해 생성된 샘플들에 fitting하고 이렇게 추정된 분포 하에 얻어진 log-likelihood를 확인함으로써 저자들은 pgp_g하에서 test set 데이터의 확률을 추정하였다. 이때 정규분포의 분산 파라미터는 교차검증을 통해 얻었다고 한다. 사실 이러한 방식으로 likelihood를 추정하는 것은 다소 분산이 크며 고차원 데이터공간상에서 품질이 좋지 못하다. 근데 알고있는 최선의 method여서 이용했다고 한다 ㅠ. generated data의 정량적 평가 문제는 현재(2021)까지도 명확한 해결책이 제시되지 않은것으로 알고있다. 앞으로 연구를 통해 밝혀야할 영역!! 아무튼 위의 방법으로 평가를 진행했을 때, GAN의 우수함을 어느정도 확인할 수 있음.

학습 후 generator에 의해 생성된 이미지들은 아래와 같다.


6. Advantages and disadvantages

단점 :

  • pg(x)p_{g}(x)에 대한 명시적인 표현이 없음.
  • 훈련동안 D와 G가 반드시 균형을 잘 맞춰 학습되어야 함
  • 최적해로의 수렴에 있어 이론적 보장의 부족

장점 :

  • Markov chain 불필요
  • 학습단계에서 inference 필요없음
  • 모델에 다양한 함수들이 통합될 수 있음
  • generator network가 데이터로부터 직접적으로 업데이트 되지 않고 오직 discriminator로부터 흘러들어오는 gradient만을 이용해 학습될 수 있다. (이는 input의 요소들이 직접적으로 생성기의 파라미터에 복사되지 않는다는 걸 의미)
  • MC 기반방법들은 체인이 mode들간에 혼합될 수 있도록 하는 과정에서 분포가 다소 blurry해지는 경향이 있는 반면 GAN은 sharp한 표현을 얻음.

7. Conclusions and future work

  1. 클래스 레이블 c를 생성기와 판별기에 모두 추가하는 것으로 조건부 생성모델 p(xc)p(x|c)을 얻을 수 있다.
  2. x가 주어졌을 때 z를 예측하는 보조 네트워크를 훈련시켜 학습된 근사추론을 진행할 수 있다.
  3. 파라미터들을 공유하는 조건부 모델들의 family를 훈련시킴으로써 모든 조건부확률 p(xsxnots)p(x_{s}|x_{not s}), (s : x의 인덱스들의 부분집합) 를 근사적으로 모델링할 수 있다.
  4. 준지도학습 : discriminator에 의해 얻어지는 중간단계 feature들은 레이블이 일부만 있는 데이터셋을 다룰때 분류기의 성능을 향상시킬 수 있다.
  5. 효율성 개선 : G와 D의 조정을 위한 더 좋은 방법을 고안하거나 훈련동안 z를 샘플링 하기위해 더 나은 분포를 결정함으로써 학습을 가속화할 수 있음.
profile
말보다는 행동

0개의 댓글