ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [논문 리뷰] Generative Adversarial Nets
    Paper Review/Generative Model 2021. 12. 27. 14:32

    Abstract

    adversarial process를 통해 두 가지 모델을 동시에 학습하는 generative model을 추정하는 프레임워크 제안 

     

    • generator G : 입력 정보를 바탕으로 가상의 결과물을 만들어내는 모델 
    • discriminator D : G가 아닌 훈련 데이터에서 샘플이 나왔을 확률을 추정하는 모델 

    모델 G의 훈련 과정은 D가 실수할 확률을 최대화한다. 이 프레임워크는 minmax two-player game이라고 볼 수 있다. 임의의 G, D에 의한 함수 공간에서 G는 훈련 데이터의 분포를 학습하여, 임의의 노이즈를 입력 받아 훈련 데이터와 같은 분포로 생성하고, D는 해당 인풋이 생성된 이미지인지 훈련 데이터로부터 나온 이미지인지에 대한 확률이 1/2(구분할 수 없게 되는 확률)가 되게 한다. 

     

    기존의 연구들에서 제시된 주요 생성모델들이 기반을 두고 있는 Markov chains, unrolled approximate inference network가 전혀 필요없다. 

    1. Introduction 

    adversarial nets 프레임워크에서 generator 모델은 discriminator 모델을 속이도록 세팅되고 discriminator 모델은 샘플이 generator 모델 G가 모델링한 분포에서 나온 것인지 실제 데이터 분포에서 나온것인지 결정하는 법을 학습한다. 이러한 경쟁구도는 두 모델이 각각의 목적을 달성시키기 위해 스스로를 개선하도록 한다. 예를 들면, 위조지폐범(G)는 경찰(D)을 속이기 위해 위조지폐를 만들고 경찰은 이것을 진짜 지폐는 1, 가짜 지폐는 0으로 판단하여 구분해낸다. 위조지폐범도 훈련을 할수록 위조 능력이 높아지고 경찰도 훈련을 할수록 위조지폐의 감별능력이 높아진다. 이렇게 서로가 서로에게 훈련이 되면서 모두의 성능을 향상시킨다.  

    generator 모델은 다층 퍼셉트론으로 구성되어 random noise를 전달하여 데이터를 생성한다. 또한, discriminator 모델도 다층 퍼셉트론으로 구성된다. 이 구조를 적대적(adversarial) net이라고 부른다. 

     

    이 두 모델을 역전파와 드롭아웃 알고리즘으로 학습할 수 있으며, generator 모델으로부터 나오는 샘플은 순전파로 생성된다. 

    2. Adversarial nets  

    adversarial modeling 프레임워크는 모델이 둘 다 다층 퍼셉트론일 때 가장 간단히 적용할 수 있다.  

     

    먼저 모델 G의 학습 과정은 generator의 분포 Pg를 x에 대해 학습시키기 위해 input noise 변수에 대한 사전분포인 pz(z)를 정의한 뒤, 노이즈변수의 데이터 공간에의 매핑을 G(Z; g)로 만든다. 이때 G는 파라미터  g를 가지는 미분가능한 다층 퍼셉트론이다. 또한, 입력된 샘플이 pg가 아닌 실제 데이터 분포에서 얻어졌을 확률(스칼라 값)을 계산하는 다층 퍼셉트론인 D(X; d)를 정의한다. 

     

    다음은 adversarial net의 목적함수이다. D는 실제 데이터와 생성된 데이터에 대해 적절한 label을 할당하도록 하는 확률을 최대화한다. 또한, log(1-D(G(z)))를 최소화 하도록 G를 동시에 훈련시킨다. 

     

     

    • 첫번째 항 : 실제 데이터 x를 discriminator 모델에 넣었을 때 나오는 결과(x가 실제 데이터 분포에서 나왔을 확률)에 log를 취해 얻는 기댓값
    • 두번째 항 : fake 데이터 z를 generator 모델에 넣은 결과를 discriminator 모델에 넣었을때 결과에 log(1-결과)를 취해 얻는 기댓값  

    Discriminator D의 입장에서 G가 생성한 가짜 데이터가 들어오면 0을 출력하고 실제 데이터가 들어오면 1을 출력해야한다. 따라서 목적함수의 각 항이 0의 값이 되도록 만들어야 하고, V(D,G)를 최대화하는 값은 0이 된다. 

     

    Generator G의 입장에서는 D가 샘플이 실제 데이터 분포에서 나온 것으로 판단하게 만들어야 하기 때문에 D(G(z))의 값이 1이 되도록 만들어야한다. 즉, V(D,G)가 음의 무한대 값(log0)으로 가도록 만들어야한다.

     

    학습시키는 과정에서 inner loop에서 D를 최적화하는 것은 계산량이 많고 유한한 데이터셋에서는 과적합을 초래한다. 따라서, D의 가중치 계산을 줄이기 위해 D를 최적화하는 k step과 G를 최적화하는 1 step을 번갈아 수행한다. 이를 통해 D는 최적의 솔루션에 가깝게 유지가 되었고, 따라서 G도 충분히 천천히 변화했다.

     

    또한, G모델이 초반에 형편없는 데이터를 만들기 때문에 초반에는 D의 판단력이 우세하다. 이 경우 log(1 − D(G(z)))가 포화상태가 되므로 log(1 − D(G(z)))를 최소화시키는 것이 아니라 log D(G(z))를 최대화하는 방법을 사용할 수도 있다고한다. G의 성능이 형편없을 때에는 log(1 − D(G(z)))의 기울기를 계산했을때 너무 작은 값이 나오므로 학습이 느리기 때문이다.  

     

    학습의 진행과정은 아래 그림과 같다.

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

    (a) 학습 초기의 분포 상태

    (b) D의 분포가 분명하게 데이터를 판별하고 있는 것을 볼 수 있다. 

    (c) 어느 정도 D의 학습이 이루어지면, G는 실제 데이터의 분포를 모사하여 D가 판별하기 힘들게 학습한다. 

    (d) 이 과정을 반복하여 실제 데이터 분포와 G에 의해 생성된 분포가 거의 비슷해져 D는 1/2의 값에 가까운 확률을 보여준다. 

     

    예들 들어, 그림 (b)에서 녹색 실선의 최고 값이 위치하는 구간을 보면 G가 모델링하는 확률 분포가 높고 실제 데이터 분포는 낮다. 따라서, 파란색 실선의 D의 분포는 해당 데이터가 가짜일 확률이 높기 때문에 0에 가까운 값을 가지게 된다. 

    3. Theoretical Results 

    앞서 제시된 GAN의 minmax problem 이 제대로 작동한다면, minmax problem이 global optimum일 때 pg = pdata여야 하고 우리가 제안하는 알고리즘이 실제로 equation을 최적화하여 global optimum을 가질 수 있어야한다. 

    Algorithm 1

    generative adversarial nets의 미니배치 sgd 훈련 알고리즘은 다음과 같다. discriminator model에 적용하는 k는 단계의 수를 나타내는 하이퍼파라미터이고 k=1을 사용했다. 

     

    3.1 Global optimality of p_g = p_data 

    먼저, G가 주어진 경우 discriminator D에 대한 훈련 기준은 V(G,D)를 최대화하는 것이다. 이를 통해 주어진 generator G에 대한 최적의 discriminator D를 구한다. V(G,D)를 D(x)에 대해 편미분하여 구한다. 

    optimal D를 원래의 목적함수에 넣어 목적함수를 재구성한다.

    C(G)는 generator가 최소화하고자 하는 기준(virtual training criterion)이 되고, 이 식의 global optimal은 p_g = p_data 일 때 만족한다. 

    두 분포 사이의 JSD는 항상 음이 아니며 두 분포가 같을 때 0이 되기 때문에 -log4가 C(G)의 global minimum이고 여기서 p_g = p_data 이다. 즉, 실제 데이터를 완벽하게 복제하는 generator model임을 보여준다. 

     

    - KL : Kullback-Leibler divergence, p라는 분포가 있을때 q와 p가 얼마나 다른지 측정하는 값(대칭적이지 않음)

    - JSD : Jensen-Shannon divergence, 두 확률 분포의 거리를 측정하며 두 분포가 같을 때 0이 되고 항상 양수이다. 

    4. Experiments 

    1. MNIST, TFD, CIFAR-10에 대해 훈련 
    2. generator net는 rectifier linear activation와 시그모이드를 혼합하여 사용한다. 
    3. discriminator 훈련시 드롭아웃을 사용하고 maxout activation을 사용한다. 
    4. 이론적 프레임워크에서는 generator의 중간층에 드롭아웃과 노이즈를 허용하지 않지만, 실험에서는 맨 하위 계층에 노이즈 input을 사용한다.

    Gaussian Parzen window를 G에 의해 생성된 샘플들에 fitting하고 이렇게 추정된 분포 하에 얻어진 log-likelihood를 확인함으로써 저자들은 하에서 test set 데이터의 확률을 추정하였다. 해당 방법을 옳은 평가 척도라고 할 수 없지만 이전 모델과 비교했을 때, 경쟁력을 갖추고 있고, 잠재력을 보여준다. 

    이렇게 G가 생성해낸 샘플이 기존 방법으로 만든 샘플보다 좋다고 주장할 수 없지만, 더 나은 생성 모델과 경쟁할 수 있다고 생각하며, adversarial framework의 잠재력을 강조한다. 

    5. Advantages and disadvantages

    5.1 Disadvantages 

    • D와 G가 균형을 잘 맞춰 성능이 향상되어야 한다. 

    5.2 Advantages

    • 역전파로만 훈련이 가능하다. 
    • generator network가 실제 데이터로부터 직접적으로 업데이트되지 않고 discriminator로부터 흘러들어오는 gradient만을 이용해 학습될 수 있어 통계적 이점을 가져온다.   
    • 학습 중 inference가 필요하지 않다.
    • 다양한 함수들이 모델에 접목될 수 있다. 
    • Markov chains를 기반으로 하는 방법보다 선명한 이미지를 얻을 수 있다. 

    6. Conclusions and future work 

    • 클래스 레이블을 추가하여 Conditional generative model(조건부 생성 모델) p(x|c)을 얻을 수 있다. 
    • 준지도학습 : discriminator에 의해 얻어지는 중간단계 feature들은 레이블이 일부만 있는 데이터를 사용할 수 있을 때, discriminator의 성능을 향상시킬 수 있다. 
    • 효율성 향상 : G와 D를 조정하는 더 나은 방법을 설명하거나 학습 중에 z 샘플에 더 나은 분포를 결정함으로써 학습의 속도를 높일 수 있다.

     

     

    paper
    https://arxiv.org/abs/1406.2661

    참고
    https://velog.io/@changdaeoh/Generative-Adversarial-Nets-GAN

     

Designed by Tistory.