ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GAN 논문리뷰(Generative Adversarial Nets)
    논문 리뷰 2024. 7. 18. 16:22

    GAN 논문에 대해 정리해볼 예정이다.

    이 논문은 14년도 NIPS에 Generative Adversarial Nets라는 이름으로 게재되었으며 Goodfellow, Bengio 등 개쩌는 사람들이 작성에 참여한 것을 알 수 있다. 

     

    이제는 너무나 많이 알려진 개념이라서 논문 자체가 어렵게 느껴지진 않지만 꼼꼼히 리뷰해보고자 한다.

     

    또한 GAN 관련 강의는 cs236 9, 10장에서 자세히 다루고 있어서 한 번쯤 보는 걸 추천한다!

     

    Abstract

     

    이 논문의 모든 것이 Abstract에 있다고 해도 과언이 아니다.

     

    생성자 G는 data distribution을 학습하기 위해, 판별자 D는 training data와 G가 생성한 샘플을 구분하기 위해 존재하는 모델이다. 이 두 모델은 동시에 학습되며, 이상적으로 GAN이 완벽하게 학습되면 G는 training data distribution을 완벽하게 학습해 더 이상 D가 G에서 나온 샘플과 real data를 구분하지 못해 1/2의 값을 갖게 된다.

     

    * 너무 오래된 논문이라 related works 부분은 생략하고자 한다.

     

    Adversarial nets

    (Adversarial nets : multilayer perceptrons를 사용해 붙여진 이름)

    우리는 생성자의 분포 $p_g$를 학습하기 위해 noise variable z의 확률분포 $p_z(z)$를 prior로 사용하여 $G(z;\theta_g)$를 정의한다.  또한 $D(x; \theta_d)$는 $x$가 real data로부터 추출되었을 확률을 내뱉는 함수로 정의한다. 

     

    D는 real data에 대해서는 1을, G가 생성한 샘플에 대해서는 0을 부여하기를 바라며, G는 반대 상황을 바라기 때문에 우리는 value function $V(G, D)$를 다음과 같이 정의할 수 있다.(일종의 minimax gam이다.)

     

    이 상황은 그림으로 보면 이해하기 쉬운데, 아래 Figure 1을 보면 처음에는 데이터의 분포를 잘 학습하지 못하던 G가 점점 주어진 데이터를 학습하며 D는 1/2로 수렴하는 모습을 볼 수 있다.

    Figure 1

    GAN을 알고리즘으로 구현하면 아래와 같이 구현이 가능하다.

    GAN을 학습할 때 주의할 점은 판별자 D를 처음부터 너무 완벽하게 학습하면 안된다는 점이다. k번 D를 업데이트하고 1번 G를 업데이트 하는 방식으로 D가 optimal에 '가까운' 상태를 유지하는 것이 중요하다.

     

    실전에서는 생성자 G가 잘 학습하지 못해 $D(G(z))$가 0에 가까운 값을 갖고, $\log(1-D(G(z))$가 0에 가까운 값을 가져 그 값이 크게 변하지 않게 된다. 그렇게 때문에 실제로 GAN을 학습할 때는 $\log(1-D(G(z))$를 최소화하는 것보다 $\log{D(G(z))$를 최대화 하는 것이 학습을 학습 초기에 더 강력한 미분값을 제공한다.

     

    Theoretical Results

    더보기

    증명)

    판별자 D의 입장에서는 minimax game 식을 아래와 같이 볼 수도 있다.

     

    더보기

    증명)

    더보기

    증명)

    실제로 우리가 학습시킬 때는 인공신경망에 대한 증명이 아니기 때문에 이론적인 Proposition 2의 증명이 학습할 때도 적용 가능하다고 말하기 어려울 수 있다. 하지만 저자는 multilayers perceptron의 퍼포먼스 덕분에 실제로는 꽤나 합리적인 모델을 얻을 수 있다고 말하고 있다.

     

    Advantages and disadvantages

    GAN의 단점

    - $p_g(x)$를 명시적으로 알 수 없음

    - 훈련 중 판별자 D와 생성자 G가 동기화 되어야 함(그렇지 않으면 "Helvetica scenario"에 봉착할 수 있음)

     

    GAN의 장점

    - Markov chain을 사용하지 않아도 되며 역전파만으로 그래디언트를 계산할 수 있음

    - 학습 중 inference 과정이 필요하지 않음

    - 다양한 함수를 제약없이 사용할 수 있음

    - 입력 데이터를 생성자의 parameter가 직접 학습하지 않음

    - 매우 sharp하고 degenerate한 분포도 학습이 가능

     

     

    댓글

Designed by Tistory.