[CV] GAN : Generative Adversarial Nets

임형빈·2024년 5월 6일
0

PaperReview

목록 보기
10/12

Generative Models의 목표는 학습 데이터의 샘플들을 어떤 가상의 확률 분포 Pdata(x)P_{data}(x)로부터 얻은 것으로 가정하고, 이 분포와 유사한 분포 Pmodel(x)(==Pθ(x))P_{model}(x)(==P_\theta(x)) 를 나타내는 모델을 학습하는 것에 있다.

이때 학습 방향은 주어진 학습 데이터셋에 대해서 Pθ(x)P_\theta(x) 확률 값이 커지도록 학습하는 Maximazing likelihood의 방향으로 학습을 하게 된다.

기존 VAE는 관측할 수 없는 Latent variable z에 의해 x가 결정된다는 가정을 사용했다.
이때 베이즈 정리에 의해 Likelihhood는 세가지 확률분포의 결합으로 표현했는데, Likelihood 계산 대신 Lower bound 계산을 통해 Maximazing likelihood를 해결했다.

GAN은 기존의 Explicit density models와 달리, Implicit density model에 해당한다.
VAE는 수식으로 정의할 수는 있지만 계산이 불가능하기 때문에 Density를 근사했다는 특징이 있다.
따라서 GAN은 계산 불가능한 모든 수식과 관련된 Issue를 회피할 수 있다는 장점을 가진다.

Abstract

GAN은 데이터 분포를 capture하는 G(generator)와, 실제 데이터와 G에서 생성한 데이터를 구별하는 D(discriminator) 2가지를 동시에 훈련시킨다.
G는 D가 두 종류의 데이터를 구분하지 못하도록 실수를 할 확률을 최대화 하는 것이고, D는 두 데이터를 잘 구분하도록 훈련된다.

임의의 함수 G, D의 공간에서, G가 Training data distribution을 묘사하게 되면서 D가 real data인지, generated data인지 판별할 확률은 1/21/2가 된다.

G와 D가 Multilayer perceptrions로 정의되었을 때 전체 시스템이 역전파를 사용하여 훈련될 수 있다.
따라서 Markov chains나 unrolled 근사 추론은 필요하지 않다.

Introduction

기존 Deep generative models는 MLE나 이와 관련된 strategies에 대한 연산을 할 때, 계산이 어렵거나 불가능하기 때문에 많은 경우에 근사를 시키는 방법으로 진행하게 된다.

GAN은 implicit density model로써, 이와 관련된 연산을 회피할 수 있다.

Adversarial nets framework 하에서, G와 D는 경쟁적인 관계에 있다.

G는 위조 지폐를 생산하고, 감지되지 않고 사용하려는 위조꾼 팀에 유사하게 생각할 수 있고,
D는 위조지폐를 감지하려는 경찰과 유사하다.
이 경쟁은 위조품이 정품과 구별하기 어려울 때 까지 양 측이 자신들의 방법을 개선하도록 만든다.

본 논문에서는 random noise를 multilayer perceptron을 통과시켜 샘플을 generate하고, 이를 구별하는 discriminator 또한 multilayer perceptron으로 구성된 경우를 탐구한다.
이 경우, generator와 discriminator를 역전파 및 드롭아웃 만을 사용하여 훈련할 수 있고, 생성모델에서는 순전파 만을 사용해 샘플을 생성할 수 있다.
근사 추론이나 Markov chain 등은 필요하지 않다.

Related Work

  • directed graphical models with latent variables의 대안으로, Boltzmann machines (RBMs)나 deep Boltzmann machines (DBMs) 같은 undirected graphical models with latent variables가 존재한다.
    하지만 연산이 어려운 계산들이 존재하고, MCMC 방법을 사용해 추정할 수는 있지만 한계가 존재한다.

  • Deep belief networks는 single undirected layer와 몇개의 directed layers가 포함된 하이브리드 모델이며, 빠른 layer-wise 근사 추론 방법이 존재하지만, 역시 computational difficultites가 존재한다.

  • log-likelihood를 근사하거나 제한하지 않는 score matching이나 noise-contrastive estimation 등의 방법도 존재한다. 하지만 레이어가 깊은 네트워크에서는 역시 연산에 어려움이 존재한다.

  • 확률 분포를 명시적으로 정의하되, generative machine을 훈련함으로써 원하는 분포에서 샘플을 생성하는 방법도 있다. 모델을 역전파로 훈련할 수 있도록 설계할 수 있다는 이점이 존재하며 주목할 만한 최근 연구는 generative stochastic network, VAE 등 이다. 본 논문에서 제안하는 GAN은 GSN에서 필요한 Markov chain이 필요하지 않으며 feedback loops 또한 사용하지 않기 때문에 piecewise linear units를 잘 이용할 수 있다. 이는 역전파에서의 성능 향상을 야기할 수 있다.

Adversarial nets

GAN은 모델이 둘다 multilayer perceptron일 때 가장 직관적으로 적용이 가능하다.

Generator

generator의 data xx에 대한 distribution인 pgp_g를 알기 위해선, input noise variable인 pz(z)p_{z}(z)에 대한 Prior를 정의해야 한다.
이후 data space에 mapping을 G(z;θg)G(z;\theta_g)로 표현한다.
이떄 G는 θg\theta_g를 파라미터로 가지는 multilayer perceptron으로 이루어진 미분 가능한 함수이다.

Discriminator

두번째 multilayer perceptron 구조의 모델 D(x;θg)D(x;\theta_g)를 정의한다. 이때 output은 1차원 scalar이다.
D(x)D(x)xx가 real data인지 generated data인지에 대한 확률을 표현한다.

모델은 DDxx에 대한 correct label을 잘 찾도록,
동시에 GG(log1D(G(z)))(log1 - D(G(z)))를 minimize 하도록 훈련된다.

즉, G,DG,DV(D,G)V(D,G) 함수로 이루어진 2-player minimax game을 하는 것과 같다고 표현할 수 있다.

GAN은 GGDD가 충분한 capacity를 가질 때, 비모수적인 한계(non parametric limit)가 있더라도 데이터 생성 분포를 복원할 수 있다고 한다.

훈련 내부 과정에서 D를 완전히 최적화 시키는 것은 계산 상 힘들며, 데이터셋이 유한할 때에는 과적합을 초래할 수 있다.
따라서 저자들은 D를 최적화하는 kk step과 G를 최적화하는 1 step을 수행한다.
이로써 G가 충분히 느리게 학습될 때 D가 최적의 optim 근처로 수렴할 수 있다.

위 1번 식을 보자.
학습 초기단계에서, G는 성능이 좋지 않기 때문에, D는 real data와 G가 생성한 data를 high confidence를 가지고 구분할 것이다.
이 경우, (log1D(G(z)))(log1 - D(G(z)))는 포화하게 된다.
D(G(z))가 초기 단계에선 대부분 0을 나타내기 때문에, log 값은 대부분 0으로 수렴할 것이다.
따라서, (log1D(G(z)))(log1 - D(G(z)))를 minimize하도록 G를 학습하는 것이 아니라, log(D(G(z)))log(D(G(z)))를 maximize하도록 훈련시킨다.

D가 데이터를 잘 구분하지 못하도록 학습하는 것은 동일하지만, 초기 단계에서 0으로 수렴하지 않기 때문에 역전파 시 기울기가 잘 전달 되는 효과를 가진다.

  • D (discriminative distribution)는 파란색 점선을,
    data generating distribution pxp_x (real data)는 검정색 점선,
    G (generative distribution) pgp_g는 초록색 실선이다.
  • 맨 밑 zz에 대한 수평선은, noise z distribution에서 uniform하게 sampling이 되는 도메인이라고 보면 된다.
    그 위의 화살표는 x=G(z)x = G(z)에 대한 mapping을 나타낸다.
    이때 pgp_g는 transposed samples에 대한 non-uniform 분포가 된다 (초록색 실선).
  1. (a) 단계에서는, pdatap_{data}pgp_g의 분포 차이가 있다. 이때 DD는 부분적으로 라벨을 구분해낸다.
  2. (b) 단계에서는 D에 대한 내부 학습이 진행되어, data를 구분하게 된다.
  3. (c) 단계에서는 G가 업데이트 되어, G(z)G(z)를 실제 데이터로 D가 더 착각하게 만든다.
  4. (d) 단계에서는 학습 단계가 더 지나고, GGDD가 충분한 capacity를 가질 때, pg=pdatap_g = p_{data}가 되고 discriminator는 D(x)=1/2D(x) = 1/2가 된다.

Theoretical Results

학습 알고리즘은 다음과 같다.

  • mm개의 Noise Samples {z(1),...,z(m){z^{(1)},...,z^{(m)} }}를 noise prior pg(z)p_g(z)로 부터 뽑아서 minibatch를 구성한다.

  • 학습 데이터셋에서 mm개의 데이터 {x(1),...,x(m){x^{(1)},...,x^{(m)} }}를 뽑아서 또 다른 minibatch를 구성한다.

  • 다음의 Loss Function을 이용해서 Discriminator의 parameter θd\theta_d를 업데이트

  • mm개의 Noise Samples {z(1),...,z(m){z^{(1)},...,z^{(m)} }}를 noise prior pg(z)p_g(z)로 부터 뽑아서 minibatch를 구성한다.

  • 다음의 Loss Function을 이용해서 Discriminator의 parameter θg\theta_g를 업데이트

Global Optimality of pg=pdatap_g = p_{data}

pg=pdatap_g = p_{data}의 전역 optimum을 찾기 위해선, 우선 어떤 G에 대한 D의 optimum을 고려해야 한다.

proposition 1 :
GG가 고정되어 있을 때, optimal discriminator DD는 아래와 같다.

Proof :
GG가 고정되어 있을 때, D에 대한 학습 척도는 V(G,D)V(G,D)를 최대화 하는 것.


위 식에서 모든 z에 대해 적분을 해서 x에 대해서 나타낼 수 있는 건가? 잘 모르겠음..

이때 {0,00,0}이 아닌 실수 {a,ba,b}에 대해서, alog(y)+blog(1y)alog(y) + blog(1-y)a/(a+b)a/ (a+b)에서 maximum 값을 가진다.

DD는 주어진 x에 대해서 정답을 선택하는 P(Y=yx)P(Y = y|x)에 대한 log likelihood를 최대화하는 것이 목적이다.
이때 (1) 식을 아래와 같이 표현할 수 있다.

Theorem 1 :
C(G)C(G)에 대한 전역 최솟값은 pdata=pgp_{data} = p_g인 경우에 발생하며, 이때 값은 log4-log4이다.

Proof :
pdata=pgp_{data} = p_g 일 때, DG(x)=1/2D_G^*(x) = 1/2이다. 이때 C(G)=log(1/2)+log(1/2)=log4C(G) = log(1/2) + log(1/2) = -log4이다.
이를 이용해 아래와 같은 식을 만들 수 있다.

Jenson-Shannon divergence (참고) :
JSD(PQ)JSD(P||Q) = (1/2)DKL(PM)+(1/2)DKL(QM)(1/2)D_{KL}(P||M) + (1/2)D_{KL}(Q||M)

따라서 C(G)는 pdata=pgp_{data} = p_g 일 때 전역 최솟값인 log4-log4이다.

Convergence of Algorithm 1

Proposition 2.
G,DG,D가 충분한 capacity를 가지고, Algorithm1Algorithm 1의 각 단계마다, 주어진 G에 대해 D가 전역 최솟값에 도달하는 것이 가능하고, pgp_g가 업데이트되어 criterion을 개선한다면 :

pgp_gpdatap_{data}로 수렴한다.

Proof :
V(D,G)=U(pg,D)V(D,G) = U(p_g,D)로, pgp_g에 대한 함수 형태로 나타낼 수 있다.
U(pg,D)U(p_g,D)pgp_g에서 convex하다.

profile
Wannabe AI Engineer

0개의 댓글

관련 채용 정보