정리 노트

GAN 본문

개념 정리/머신러닝 & 딥러닝 & A.I

GAN

꿈만 꾸는 학부생 2022. 12. 11. 23:45
728x90

이 글은 국민대학교 소프트웨어학부 '컴퓨터 비전' 강의를 듣고 요약하는 글입니다. 실제로 원하시는 정보가 여기에 없을 수도 있습니다. 이 점 유의 바랍니다. 오류 지적 매우 환영합니다!


이번 글에서는 GAN 모델이 무엇인지에 대해 적어보겠습니다.

GAN(Generative Adversarial Networks)

GAN은 쉽게 말해 '생성 모델'입니다. 기본적인 DNN이나 CNN 구조에서는 입력을 특정 레이블로 분류하는데 목적을 둔 분별 모델(discriminative model)입니다. 즉, 입력으로 주어지는 이미지(X)가 어떤 레이블(Y)인지 예측해야 하므로 P(Y | X)를 추정하는 것이 목적입니다. 분별 모델은 P(X), 이미지들이 어떠한 분포를 가지고 있는지에 대해서는 예측할 수 없습니다. 그래서 분별 모델은 이미지들의 분포를 따르는 새로운 이미지를 생성할 수 없습니다.

GAN은 P(X)를 추정하는 게 목적인 모델로, 새로운 이미지를 생성할 수 있는 모델입니다.

GAN의 구조

source: https://developers.google.com/machine-learning/gan/gan_structure

GAN의 구조는 위의 그림과 같습니다. GAN 모델에서는 discriminatorgenerator 두 가지 모듈이 존재합니다.

  • Discriminator(판별기): 실제 이미지에 대해서는 true(이 사진은 진짜입니다.), generator에 의해 생성된 이미지는 false(이 이미지는 가짜입니다.)라고 판별하는 모듈입니다.
  • Generator(생성기): Random input(latent vector)를 입력으로 받아 이미지를 생성하는 모듈입니다. 주로 랜덤 한 값은 가우시안 분포나 균일 분포에서 샘플링한 값입니다.

GAN의 목적 함수

GAN의 목적 함수는 아래와 같습니다.

source: https://arxiv.org/pdf/1406.2661.pdf

  • D: Discriminator(판별기)
  • G: Generator(생성기)
  • z: latent vector(랜덤 벡터)
  • D(x): 실제 이미지(x)를 입력으로 받을 때의 판별기 출력 값(0 ~ 1)
  • G(z): latent vector를 입력으로 받아서 생성한 이미지
  • D(G(z)): 생성기가 만든 이미지를 입력으로 받을 때의 판별기 출력 값(0 ~ 1)

생성기와 판별기는 목적 함수(V)에 대해 서로 minimax game을 합니다. 다시 말해, 판별기는 V의 값이 최대화되게끔 학습이 진행되어야 하고, 생성기는 목적 함수 V의 값이 최소화되게끔 학습이 진행되어야 합니다.

먼저 판별기의 입장에서 생각해봅시다. 판별기는 V값을 최대화해야 하기 때문에 logD(x) 값과 log(1 - D(G(z))) 값을 모두 최대화해야 합니다. D(x) 값이 1이면 log(D(x)) 값은 0으로 최댓값을 가지게 되고, D(G(z)) 값이 0이면 log(1 - D(G(z))) 값은 0으로 최댓값을 가지게 됩니다. 따라서 판별기는 실제 이미지에 대해 참이라 판별하고, 생성된 이미지에 대해 거짓이라 판별할 수 있도록 학습이 진행되어야 한다는 의미를 가지게 됩니다.

이제 생성기의 입장에서 생각해봅시다. 생성기는 목적 함수 V에서 log(1 - D(G(z))) 에만 영향을 미치기 때문에 이 식에서만 최소화를 수행하면 됩니다. D(G(z)) 값이 1이면 log(1 - D(G(z))) 값이 음의 무한대 값을 가지게 됩니다. 따라서 생성기는 판별기가 생성기가 만든 이미지에 대해 참이라고 판별하도록 학습이 진행되어야 한다는 의미를 가지게 됩니다.

GAN의 학습 과정

GAN 모델에서의 학습은 판별기, 생성기가 순차적으로 진행됩니다.

source: https://www.slideshare.net/xavigiro/deep-learning-for-computer-vision-generative-models-and-adversarial-training-upc-2016

위 그림은 판별기가 학습될 때의 상황입니다. 그림을 보시면 생성기에 자물쇠가 걸린 것을 보실 수 있습니다. 이는 판별기와 생성기가 동시에 학습이 진행되는 것이 아님을 표현합니다. 따라서 역전파 과정은 판별기에서는 일어나지만 생성기에서는 일어나지 않습니다.

source: https://www.slideshare.net/xavigiro/deep-learning-for-computer-vision-generative-models-and-adversarial-training-upc-2016

이 그림은 생성기가 학습될 때의 상황입니다. 이번 그림에서는 판별기에 자물쇠가 걸려있습니다. 즉, 역전파 과정은 생성기에서만 발생한다는 것을 알 수 있습니다.

위의 그림들을 글로 표현하면 아래와 같습니다.

source: https://arxiv.org/pdf/1406.2661.pdf

판별기는 위에서 얘기한 대로 목적 함수의 값을 최대화해야 하기 때문에 ascending stochastic gradient를 이용해서 업데이트됩니다. 생성기는 목적 함수의 값을 최소화해야 하기 때문에 descending stochastic gradient를 이용합니다.

728x90