ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Generative Adversarial NetS (GAN)
    논문 Review 2020. 11. 23. 22:58

    오늘 리뷰할 논문은 Generative Adversarial Nets (GAN)이다. 

     

    GAN 같은 경우는 논문의 순서 말고 여러 자료를 찾아보고 공부해서 간단하고 쉽게 정리하고 이해하는 방향으로 리뷰를 진행 할 예정이다.


    GAN (Generative Adversarial Nets)

    페이스북 인공지능 연구팀의 리더이자 딥러닝의 아버지라 불리는 얀 르쿤(Yann LeCun) 교수는 GAN(Generative Adversarial Network)을 가리켜 최근 10년간 머신러닝 분야에서 가장 혁신적인 아이디어라고 말했다. 요즘 가장 주목받는 기술인 딥러닝 중에서도 GAN은 가장 많은 관심을 받고 있는 기술이다. 이번 논문 리뷰를 시작으로 다양한 GAN에 대해 알아보고 공부할 예정이다. GitHub에 간단한 튜토리얼과 코드 또한 올려 놓을 예정이다.

     

    GAN 모델을 설명하기 전에 기본적으로 딥러닝을 크게 두가지로 나누면

    1) Supervised Learning

    2) Unsupervised Learning 

     

    이 두가지로 정의 할 수 있다. 

     

    Supervised Learning

    - 지도 학습은 데이터에 대한 레이블(label),명시적인 정답이 주어진 상태에서 학습시키는 방법이다.

    - 분류 (classification) : 이진 분류, 다중분류

    - 회귀 (regression) : 어떤 데이터들의 특징(feature)을 토대로 값을 예측하는 것

     

    Unsupervised Learning

    - 정답을 따로 알려주지 않고(label이 없다), 비슷한 데이터를 군집화 하는 것

    - 지도학습에서의 적절한 feature를 찾아내기 위한 전처리 방법으로 비지도 학습을 쓰기도 한다.

     

    메인 아이디어 GAN 관련 용어를 설명하자면

     

    위 그림 처럼 Discriminative 와 Generative로 설명 할 수 있다.

     

    Discriminative (판별 알고리즘) : generator로 부터 전달된 데이터를 가짜로 인식하도록 하는 것이 목표인 모델

    Generative (생성 알고리즘) : 생성한 데이터를 discriminator가 진짜로 인식하도록 하는 것이 목표인 모델

     

    처음 GAN을 제안한 Ian Goodfellow는 GAN을 경찰과 위조지폐범 사이의 게임에 비유했다. 위조지폐범은 최대한 진짜 같은 화폐를 만들어(생성) 경찰을 속이고, 경찰은 진짜 화폐와 가짜 화폐를 완벽히 판별(분류)하여 위조지폐범을 검거하는 것이 목표이다. 

     

    GAN에는 최대한 진짜 같은 데이터를 생성하려는 생성 모델과 진짜와 가짜를 판별하려는 분류 모델이 각각 존재하여 서로 적대적(Adversarial )으로 학습한다. 두개의 모델을 적대적(Adversarial)으로 경쟁시키면서 발전시키는 것이다. 


    Probability Distribution

    파란색이 실제 이미지를 구별하려는 모델(학습셋 데이터의 분포)이고 빨간색은 이미지를 생성한 모델이다. 

    데이터의 분포를 실제와 근사하게 만드는 것이 Generative Model의 목표이다.


    GAN의 동작 과정

     

    1) Generative model이 random oise를 multilayer perceptron을 통해 생성해서 이미지로 반환한다.

    2) 이렇게 생성된 이미지는 실제 데이터에서 가져온 이미지들과 함께 Discriminator에 전달된다. 

    3) Discriminator는 실제 이미지와 가짜 이미지를 판별하여 실제 이미지면 1, 가짜이미지면 0의 확률 값으로 반환한다.

    4) Genertaor가 Discriminator 분포를 완벽한 수준으로 복원하면 Discriminator가 Generator의 산출물(fake)와 Training(real)을 구분할 확률은 1/2가 된다.

     

    -> 두 모델은 서로 반대되는 목적, 손실함수를 통해 최적화 하려고 시도한다. 두 model을 오직 backpropagation과 dropout 알고리즘만으로 학습할 수 있으며, generative model로 부터 나오는 sample은 forward propagation으로 생성된다.


    Generator

     

    기존 샘플 분포를 파악하여 랜덤 노이즈 벡터를 받아 새로운 샘플(fake)를 만든다. 이를 업샘플링이라고 한다. 

     

    Discriminator로 부터 피드백을 받는다.

     

    Discriminator

     

    전달된 이미지를 실제 이미지인지 가짜 이미지인지 판별할 수 있는 컨볼루션 네트워크 이다.

    이미지의 정답 값으로부터 피드백을 받는다.


    Training

     

    GAN의 목적함수

    GAN의 목적함수이다. 이 함수의 원리에 따라 Training 한다.

     

    data x에 대한 generator 분포 Pz를 학습하기 위해, 사전에 input noise Pg(z)를 정의한다. 

    • P_data(x) : x라는 data distribution은 있지만 어떻게 생긴지는 모르므로, P 모델을 Q 모델에 가깝게 가도록 한다. 실제 데이터의 확률 분포에서 샘플링한 데이터를 의미한다. 진짜면 1로 예측해야 한다.

    • z~pz(z) : 일반적으로 가우시안 분포를 사용하는 임의의 노이즈에서 샘플링한 데이터를 의미한다. 가짜면 0으로 예측해야 한다.

    • x : real image

    • z : latent vcetor , 차원이 줄어든 채로 데이터를 잘 설명할 수 있는 잠재 공간에서의 벡터

    • G(z) : Fake image

    • D(x) : real image라고 분류한 확률 ( 데이터가 진짜이면 D(x) = 1, 가짜이면 D(x) = 0)

    • D(G(z)) : D가 fake라고 분류한 확률 ( G가 만들어낸 데이터인 G(z)가 진짜라고 판단하면 1 , 가짜라고 판단하면 0)

    V(D,G)가 최대가 되도록 학습하는 것은 Discriminator인 D 이고, 최소화되도록 학습하는 것은 Generator(G)이다.

     

    먼저 D가 V(D,G)를 최대화하는 관점에서 생각해보자.

     

    위의 수식을 최대화하기 위해서는 우변의 첫 번째 항과 두 번째 항 모두 최대가 되어야 하므로 logD(x)와 log(1-D(G(z))가 최대가 되어야 한다. 따라서 D(x)는 1이 되어야 하고 이 뜻은 실제 데이터를 진짜라고 분류하도록 D를 학습하는 것을 의미한다. 1-D(G(z)) 가 1이되어야 하므로 D(G(z))는 0이 되어야 한다. 이것의 의미는 생성자가 만들어낸 데이터가 가짜라고 분류하도록 학습하는 것이다. 

    D가 V(D,G)를 학습시키는 방향을 수식적으로 해석한것을 쉽게 말하자면 V(D,G)가 최대가 되도록 학습시키는 과정은 판별자(D)가 진짜 데이터를 진짜로, 가짜데이터를 가짜로 분류하도록 학습시키는 과정이다.

     

    생성자 G가 V(D,G)를 최소화하는 관점에서 생각해보자.

    위의 수식의 우변의 첫째항은 G가 포함되어 있지 않으므로 생성자와 연관이 없어 생략이 가능하다.

    두번째 항을 최소화 하기 위해서는 log(1-D(G(z)))가 0이 되어야 한다. 이 뜻은 D(G(z))가 1이라는 뜻이다.

    D(G(z)) =1 은 판별자가 생성자가 만들어낸 데이터를 진짜라고 생각할 수 있도록 Generator를 학습하는 것이다. 

    생성자를 뛰어나게 만든다고 생각하면 된다. 

     

    이처럼 V(D,G)를 최대화하는 방향으로 D를 학습하고, V(D,G)를 최소화하는 방향으로 G를 학습하는 것을 Minmax problem 이라고 한다.

     

    훈련 할때 두개의 신경망은 항상 비슷한 '학습 수준'을 유지해야 한다.

     

    예를 들어 Discriminator가 너무 뛰어나면 값이 0 또는 1에 매우 가까운 값이 나오므로 generator가 gradien를 제대로 반영하기 어렵게 된다.

    Generator가 너무 뛰어나면 Discriminator가 진자 데이터를 가짜 데이터로 판단할 확률이 높아진다. 

     

    -> 신경망의 learning rate를 설정해주어 이 문제를 해결한다고 한다.


    Theoretical Results

     

    Minimax problem가 실제로 풀 수 있는 문제인지를 확인하는 과정이 필요하다. 이를 위헤

    (1) 실제 정답이 있는지(existence)

    (2) 해가 존재한다면 유일한지(uniqueness)

     

    이 두가지 과정의 검증이 필요하다. 

     

    1. Global Optimality of P_g = P_data

      GAN의 Minimax problem이 global optimality를 가지고 있다.

      P_data (data distribution)이 gernerative한 model distribution이 정확히 일치할 때 global optimality이며, 그때 global optimality(P_g = P_data)를 갖는가?

    2. Convergence of Algorithm 1

      우리가 제안하는 알고리즘(discrimiator <-> distribution model 학습하는 과정의 모델)이 실제로 global optimality (P_g = P_data)을 찾을 수 있는가?

    1시간만에 GAN(Generative Adversarial Network) 완전 정복하기

    증명하는 이 내용은 모르는 개념이 많아 따로 더 공부를 해야겠다. 특히 Jenson-Shannon divergenceKL Divergence의 개념적인 부분을 공부할 생각이다.


    Adventages and Disadventages

    Adventages

    • MCMC(Markov Chain Monte Carlo)를 사용하지 않고, backprop을 이용하여 gradient를 구할 수 있고 (한번에 샘플을 생성 가능) 학습, 그리고 다양한 모델이 이 모델과 incorporated 할 수 있다.
    • Adversarial 모델은 genertor network을 데이터 예제로 직접 업데이트 하지 않고 discriminator의 grdeint flowing 으로 통계적 이점을 얻을 수 있다.
    • 매우 sharp하고 degenerate(퇴보,악화된)한 분포를 나타낼 수 있다. 
    • Markov Chain 기반 모델에서는 체인 간에 혼합될 수 있도록 분포가 다소 선명하지 않다.

    MCMC(Markov Chain Monte Carlo)는 어떤 목표 확률분포(Target Probability Distribution)로부터 랜덤 샘플을 얻는 방법이다.

     

    Disadventages & Limitation

    • 한쪽이 너무 급겹하게 강력해지면 이 관계가 깨져버려서 GAN의 학습이 이루어지지 않는다. 이 때 Mode Collapse라는 현상이 생기는데 다양한 이미지를 만들지 못하고 비슷한 이미지만 계속해서 생성하는 경우다.
    • 텍스트를 생성하는 데는 적용하기 어렵다. 이미지는 실수값인 픽셀로 이루어져 있기 때문에 미분을 통해 조금씩 값을 바꿔보며 개선해 나갈 수 있다. 하지만 텍스트는 단어로 이루어져 있기 때문에 이런 방식이 불가능하다.
    • Helvetica scenario(generator가 서로 다른 z들을 하나의 output point로 매핑할때 발생하는 문제)를 피하기 위해 G는 D가 업데이트 하기 전에 학습을 너무 많이 하면 안된다.
    • 학습 데이터의 분포를 따라가기 때문에 어떤 데이터가 생성될지 예측하기 어렵다.
    • 평가 하는 기준이 너무 주관적인데 이 부분을 Inception score를 사용하여 문제를 해결했다. 

    Inception Score (GAN의 성능을 측정하기 위해 다음 두 가지 기준을 고려한다.)

    cyc1am3n.github.io/2020/03/01/is_fid.html Cyc1am3n`s Blog 자료 참고!!

    1. 생성된 이미지의 quality (진짜 같은 이미지가 만들어지는지)

    2. diversity (다양한 이미지가 만들어지는지)

    엔트로피는 randomness로 볼 수 있는데, 확률 변수가 뻔하게 예측가능하다면 엔트로피가 낮다고 볼 수 있다.

    GAN에서는 조건부 확률  가 예측 가능성이 높기를(생성된 이미지의 클래스를 예측하기 쉬워야 함) 원하고 이는 낮은 엔트로피를 가져야 함을 알 수 있다.

    • 여기에서 x 는 생성된 이미지이고  는 label 이다.

    • IS 에서는 생성된 이미지의 클래스를 예측할 때 pre-train된 inception network를 사용함.

    한편 는 주변 확률로 다음과 같이 계산 가능하다.

    만약 생성된 이미지가 diverse 하다면  는 균등 분포에 가까워야 할 것이며, 이는 높은 엔트로피를 가져야 함을 알 수 있다.

     

    이렇게 살펴본 두 기준을 합쳐보면 KL divergence를 활용하여 다음 식을 만들 수 있다.

    IS 가 높을 수록 좋은 성능을 낸다고 해석이 가능하다.

     

    Reference

    arxiv.org/pdf/1406.2661.pdf (논문)

    새로운 인공지능 기술 GAN ②

    매일매일 딥러닝

    1시간만에 GAN(Generative Adversarial Network) 완전 정복하기

    PR-001: Generative adversarial nets by Jaejun Yoo

    댓글

Designed by Tistory.