본문 바로가기
  • 기술을 이야기하지만 사람을 생각합니다.
20. Deep Learning

GAN(Generative Adversarial Networks) 논문 리뷰

by WE DONE IT 2020. 6. 7.

01. Taxonomy of Machine Learning

GAN 모델을 설명하기 전에 딥러닝을  크게 두 가지로 나누면, 1) Supervised Learning과 2) Unsupervised Learning이 있다. 

Discriminative vs. Generative 차이 (출처: https://kharshit.github.io/blog/2018/09/28/generative-models-and-generative-adversarial-networks)

 

출처: https://kharshit.github.io/blog/2018/09/28/generative-models-and-generative-adversarial-networks

 

A. Supervised Learning 지도 학습

대표적인 모델로 Discriminative Model이 있으며, 로지스틱 회귀분석, 뉴럴 네트워크 등이 해당된다. Input에 해당하는 클래스를 맞추기 위해 학습하게 된다. 예를 들어 남자냐, 여자냐를 구분하는 것이다. 

B. Unsupervised Learning 비지도 학습

label이 없는 데이터를 잘 학습하는 것이다. Generative Model에는 Naive Bayes, Gaussian discriminant analysis (GDA, 가우시안 판별 분석)이 있다.학습 데이터에서 분포를 학습한 뒤, 학습 데이터와 유사한 데이터를 만드는 게 목표이다. 학습이 진행될 수록 실제 데이터와 생성한 데이터의 분포가 유사해진다.

Probability Distribution

출처: 1시간만에 GAN 완전 정복하기 (https://youtu.be/odpjk7_tGY0) 05:16 화면

파란색은 학습셋 데이터의 분포이며, 빨간색은 모델이 생성한 이미지의 분포이다. 데이터의 분포를 실제와 근사하게 만드는 게  Generative Model의 목표이다. 

 


02. Generative Adversarial Networks

 

Generative Adversarial Networks는 편의상 GAN, 겐, 간으로도 부른다. CNN의 창시자이자, 현재 facebook AI 총괄을 담당하는 얀 루큰은 

GAN은 최근 10년간 머신러닝 분야에서 가장 멋진 아이디어fk

Adversarial Network는 적대적인 신경망이 서로 경쟁하면서 가짜 모델의 성능을 개선한다. 

If the network can learn how to draw cat and dong separately, it must be able to classify them,
i.e. feature learning follows naturally.
뉴럴 네트워크가 고양이와 개를 그리는 걸 배울 수 있다면, 반드시 분류도 할 수 있을 것이다.
즉, 피처 학습은 자연스럽게 따라온다.

 

Discriminator는 진짜 이미지를 진짜(1)로, 가짜를 가짜(0)로 구분하도록 학습한다. 반대로, Generater(Neural Network)는 랜덤한 코드를 통해서 이미지를 생성하며, Discriminator를 속여 가짜 이미지를 진짜처럼 만드는 게 목표이다. 즉, 실제 데이터의 분포모델이 생성한 데이터의 분포 간의 차이를 줄이는 것이다.

 

  • Generator Network : 랜덤 노이즈 벡터를 입력받아 이미지를 만드는 업샘플링을 진행 
  • Discriminator Network : 네트워크에 전달된 이미지가 실제인지 가짜인지를 판별

 

Goodfellow, lan et al. (2014) 논문에서 설명한 Standard GAN의 다이어그램은 다음과 같다.

 

GAN을 처음 제안한 Ian Goodfellow는 <경찰과 위조지폐범>으로 비유하였다. 

지폐위조범이 처음에는 돈을 제대로 못 만들어 경찰이 위조지폐를 제대로 구분하여 검거에 성공했다. 이후, 지폐위조범은 더욱 발전된 기술로 지폐를 위조한다. 위조지폐범은 진짜 같은 위조지폐를 만들어(생성, gnerater) 경찰을 속이고, 경찰은 진짜와 가짜 화폐를 구분(분류, discriminator)하기 노력한다.

결국 위조지폐범은 구분하기 어려운 위조지폐를 만들게 된다. 경찰은 이게 진짜인지 가짜인지 구별하기 가장 어려운 50% 확률에 수렴하게 된다.

 

위조지폐와 경찰을 예로 설명한 GAN 모델 (Goodfellow, lan el al., 2014)

 

모델 관점에서 다시 해석하면, Generater에서 input에서 쓰레기(garbage) 값을 보내도 output(위조지폐, 실제는 이미지)은 실제와 가짜를 구분할 수 없게끔(adversarial) 만들게 된다.

 

  1. Generator는 기존 샘플(training, real) 분포를 파악하여 새로운 샘플(fake)을 생성함
  2. Discriminator는 샘플이 Generator 또는 Training 중 어디에서 온건지 확률을 평가함 (Minimax tow-player game)
  3. Genertaor가 Discriminator 분포를 완벽한 수준으로 복원하면 Discriminator가 Generator의 산출물(fake)와 Training(real)을 구분할 확률은 1/2가 됨

A. Theoretical Results

  • Q_model(x|z) : 정의하고자 하는 z값을 줬을 때 x 이미지를 내보내는 모델
  • P_data(x) : x라는 data distribution은 있지만 어떻게 생긴지는 모르므로, P 모델을 Q 모델에 가깝게 가도록 함
  • 파란 점선 ---  : discriminator distribution (분류 분포) > 학습을 반복하다보면 가장 구분하기 어려운 구별 확률인 1/2 상태가 됨
  • 녹색 선 ⎻ : generative distribution (가짜 데이터 분포)
  • 검은색 점선 --- : data generating distribution (실제 데이터 분포)

GAN 학습 과정 (출처 : Generative Adversarial Nets Goodfellow, Ian et al. 2014)

 

B. Minimax Problem of GAN

The GAN Objective Function

D should maximize V(D, G) 
: D 입장에서 V가 최댓값
1. D가 구분을 잘하는 경우, 만약 Real data가 들어오면
D(x) = 1, D(G(z)) = 0
: 진짜면 1, 가짜면 0을 내뱉음. (G(z)에 가짜가 들어온 경우, 가짜를 잘 구분한 것임)  
- D의 입장에서는 minmaxV(D, G) = 0  - Maximize를 위해 0으로 보내는 게 D의 입장에서는 가장 좋음 
 
D should minimize V(D, G)
: G 입장에서 V가 최솟값
2. D가 구분을 못하는 경우, 만약 Real data가 들어오면
D(G(z)) = 1
: 진짜를 0, 가짜를 1로 내뱉음 (진짜를 구분하지 못하고 가짜를 진짜로 착각함) 
- log 안의 D 값이 0이 되어, V 값이 -∞로 됨 
- Minimize를 위해 -∞로 보내는 게 G 입장에서는 가장 좋음
- x : real 이미지
- z : latent code 
- G(z) : fake 이미지
- D(x) : real 이미지라고 분류한 확률
- D(G(z)) : D가 fake라고 분류한 확률

-> G(z)는 D(G(z))가 1로 판단하도록 학습하고, D(G(z))는 0으로 판단하도록 학습함

 

C. Theoretical Results

위에 정의한 minimax probblem (최소최대문제)가 실제로 풀 수 있는 문제인지 확인이 필요하다. 이를 위해, (1) 실제 정답이 있는지 (existence)와 (2) 해가 존재한다면 유일한지 (uniqueness) 검증이 필요하다.

 

Two Step Approach

아래 두 가지를 증명해야 우리가 원하는 바를 해결할 수 있다고 볼 수 있다.

  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)을 찾을 수 있는가?

실제 데이터 분포와 모델 분포 간의 거리가 최소이기 때문에 GAN은 성립한다. 

 

출처 : https://www.slideshare.net/NaverEngineering/1-gangenerative-adversarial-network

상세 풀이 과정은 Appendix (p.70~83)을 확인해 주세요.

 

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

발표자: 최윤제(고려대 석사과정) 최윤제 (Yunjey Choi)는 고려대학교에서 컴퓨터공학을 전공하였으며, 현재는 석사과정으로 Machine Learning을 공부하고 있는 학생이다. 코딩을 좋아하며 이해한 것을

www.slideshare.net

 


03. Adventages and Disadventages

A. Adventages

  1. 기존의 어떤 방법보다도 사실적인 결과물을 만들 수 있음
  2. 데이터의 분포를 학습하기 때문에, 확률 모델을 명확하게 정의하지 않아도 Generator가 샘플(fake)을 생성할 수 있음
  3.  MCMC(Markov Chain Monte Carlo)를 사용하지 않고, backprop을 이용하여 gradient를 구할 수 있음 (한번에 샘플을 생성 가능)
  4. 네트워크가 매우 샤프하고 degenerator(변형된) 분포를 표현할 수 있음
    Markov Chain 기반 모델에서는 체인 간에 혼합될 수 있도록 분포가 다소 선명하지 않음
  5. Adversarial model은 genertaor의 파라미터가 샘플 데이터에 의해 직접 업데이트 하지 않고, discriminator의 gradient를 이용하여 통계적 이점을 얻음
MCMC(Markov Chain Monte Carlo)는 어떤 목표 확률분포(Target Probability Distribution)로부터 랜덤 샘플을 얻는 방법이다.

MCMC를 이해하기 위해서는 마코프 연쇄 (Markov Chain)과 Monte Carlo 두가지 개념을 이해해야 한다.

마코프 연쇄는 시간에 따른 계의 상태의 변화를 나타내며, 매 시간마다 계는 상태를 바꾸거나 같은 상태를 유지하며 상태의 변화를 '전이'라 합니다. 마르코프 성질은 과거와 현재 상태가 주어졌을 때의 미래 상태의 조건부 확률 분포가 과거 상태와는 독립적으로 현재 상태에 의해서만 결정된다는 것을 뜻합니다.

몬테 카를로 방법은 난수를 이용하여 함수의 값을 확률적으로 계산하는 알고리즘을 부르는 용어이다. 수학이나 물리학 등에 자주 사용됩니다. 이 방법은 계산하려는 값이 닫힌 형식(closed form)으로 표현되지 않거나 매우 복잡한 경우에 확율/근사적으로 계산할 때 사용되며 유명한 도박의 도시 몬테카를로의 이름을 본따 만들어 졌습니다.

출처 : youtu.be/soyoJqIbW-A, youtu.be/zhRCwtOO3Fg

 

B. Difficulties & Disadvantage

  1. Simple Example : unstable
    Minimax 최적화 문제를 해결하는 과정이기 때문에, oscillation이 발생하여 모델이 불안정할 수 있다.
    → 두 모델의 성능 차이가 있으면 한쪽으로 치우치기 때문에, DCGAN(Deep Convolution GAN)으로 문제 개선
  2. Minibatch Discrimination 
    컨버전스가 안되는 경우는 여러 케이스를 보여준다. (use other examples as side information)
  3. Ask Somebody
    평가를 어떻게 해야할까? 정말 사람 같은 이미지라고 평가할 수 있지만 주관적이다. 또한, 언제 멈춰야 되는지에 대한 기준이 부족하다.
    Inception score 사용하여 문제 해결 
    : classification 하는 모델에 학습이 끝난 모델에서 나온 샘플을 넣어서 클래스가 잘 나오는지(=하나의 클래스로 분류하는지)에 따라서 점수를 측정한다.
  4. Mode Collapes (sample diversity)
    : minmaxGD = maxminDG ->
    - Generaotr 입장에서는 Discriminator가 가장 멍청하게 판단한 최솟값 하나만 보내주면 됨
    - 예를 들어, 1~10을 학습할 때 1의 성능이 좋지 않다면 1만 주구장창 보내다가, 나중에는 1은 무조건 real이 아닌 것으로 판단함
    = Unrolled Generative Adversarial Model (2016)
  5. 학습 데이터의 분포를 따라가기 때문에 어떤 데이터가 생성될지 예측하기 어려움
    → cGAN(Conditional GAN)을 이용하여 문제 개선
  6. Helvetica scenario를 피하기 위해 G는 D가 업데이트 하기 전에 학습을 너무 많이 하며 안 됨
    Helvetica scenario : generator가 서로 다른 들을 하나의 output point로 매핑할 때 발생하는 문제
    kangbk0120.github.io/articles/2017-08/tips-from-goodfellow

 


02. GAN PyTorch Implementation

MNIST를 활용하여 GAN을 구현하는 방법은 Woosung Choi's blog <GAN PyTorch 구현: 손글씨 생성>에서 확인할 수 있습니다.

 

Generative Adversarial Net (GAN) PyTorch 구현: 손글씨 생성

이번 포스트에서는 PyTorch를 이용하여 GAN(Generative Adversarial Network)을 구현하여 MNIST 데이터를 생성해보는 튜토리얼을 다룹니다. MNIST 데이터는 간단히 말해 0부터 9까지의 숫자를 손글씨로 적은 이�

intelligence.korea.ac.kr

 


03. GAN의 활용

Related Works

  1. super-resolution
    : 흐릿한 이미지를 넣은 뒤, 실제 원본과 복원한 이미지와 비교하여 구분을 하지 못할만큼 원본으로 복원 가능한 모델
  2. Img2Img Translation
    : 실시간으로 말이 얼룩말로 바뀌는 기술

GAN의 활용 사례는 <삼성 SDS 블로그 - 새로운 인공지능 기술 GAN (3> 글에서 살펴볼 수 있습니다.

 

새로운 인공지능 기술 GAN ③ - GAN의 활용 사례와 발전방향

[BY 삼성SDS] 이번 아티클에서는 다양한 GAN의 활용 사례에 대해 소개하려 합니다. Ian Goodfellow가 제...

m.post.naver.com

 


References

Generative Adversarial Nets 논문

Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., ... & Bengio, Y. (2014). Generative adversarial nets. In Advances in neural information processing systems (pp. 2672-2680).

[발표자료]  Taehoo Kim. 지적 대화를 위 한 깊고 넓은 딥러닝 PyCon APAC 2016

[유튜브] 1시간만에 GAN(Generative Adversarial Network) 완전 정복하기

 

[유튜브] PR-001: Generative adversarial nets by Jaejun Yoo (2017/4/13)

초짜 대학원생 입장에서 이해하는 Generative Adversarial Nets (1)

초짜 대학원생 입장에서 이해하는 Generative Adversarial Nets (2)

 

초짜 대학원생 입장에서 이해하는 Generative Adversarial Nets (1)

쉽게 풀어 설명하는 Generative Adversarial Nets (GAN)

jaejunyoo.blogspot.com

 

 

초짜 대학원생 입장에서 이해하는 Generative Adversarial Nets (2)

쉽게 풀어 설명하는 Generative Adversarial Nets (GAN)

jaejunyoo.blogspot.com

 

댓글4