Home [ML 머신러닝] GAN - 정복하기 (1)
Post
Cancel

[ML 머신러닝] GAN - 정복하기 (1)

GAN (Generative Adversarial Network)


직역하자면 다음과 같다.

생산적 적대 신경망

이 무슨 말이란 말인가. 항상 느끼지만 한국어는 공부를 하는 입장에서 한문이 너무 많아서 괴롭다. 그 어느 누가 생산적 적대 신경망 이란 말을 보고 이해할 수 있을까. 따라서 저런 말은 집어치우고, 본인이 이해한 쉬운 그림을 보고 설명하겠다.


위조지페범과 경찰

다음과 같은 상황을 생각해보자.

  1. 위조지폐범이 지폐를 위조하였다.
  2. 경찰의 수사망에 올라 경찰은 위조지폐를 추적하였다.
  3. 그걸 안 위조지폐범은 더더욱 철저하게 지폐를 위조하였다. (수사망에 올라가지 않게 즉, 경찰이 위조지폐인지조차 모르게)
  4. 고도의 발달된 기술의 범인을 잡기위하여 경찰또한 고도의 기술을 도입하여 위조지폐 판별에 힘썼다.
  5. 위의 내용을 무한 반복한다.

믿기 힘들겠지만 위의 내용이 GAN(Generative Adversarial Network)의 내용이다. 위의 내용을 반복하다보면 위조지폐범은 결국 진짜 지폐와 구별할 수 없는 지폐를 만들어내게 될것이다.


Models

아직 위의 설명으로는 감이 잘 오지 않을 수 있다. 하지만 걱정마라. 그건 당신 뿐만이 아닌 세상 99%의 모든 사람들이 그렇다.. 몰론 나 포함. 천천히 밑의 글과 내용을 읽어가며 공부하면 해결될 것 이라고 생각한다.


GAN 은 다음과 같은 두가지 모델로 구성된다.

  1. 첫번째 Discriminative Model
    • 구별모델
  2. 두번째 Generative Model
    • 생성모델

여기서 생성모델(Generative Model)의 역할이 위조지폐범이 되고, 구별모델 (Discriminative Model)의 역할이 경찰의 역할이 된다.

구별모델은 사진을 보고, Class를 구분하여 사진을 판별하고 (ex: 진짜면 1, 가짜라면 0) 생성모델은 랜덤한 코드를 받아 가짜 이미지를 생성해 낸다.


GAN의 목적

위에서 말했다 싶이, GAN 의 목적은 $P_{data} (x) , P_{model} (x)$ 의 확률 분포의 차이를 줄이는 것을 목적으로 한다.

사진으로 포현하면 다음과 같다.

GAN의 목적

기본 수식

따라서 위의 목적을 만족하기 위해, 구별모델생성모델 의 수식을 표현하자면 다음과 같다.

수식

  1. $z$의 의미는 noise 이다. (랜덤한 숫자로 뿌려진 noise)
  2. $z$ 즉 noise를 통하여 위조지폐범이 만든 지폐를 $G(z)$라 하자.
  3. 이제 Discriminator(경찰) 이 위조지폐와 실제 지폐를 구분해야 한다. 경찰은 이게 위조지폐라면 0을 출력하고, 진짜 지폐라면 1을 출력하기로 한다. 위조지폐 $G(z)$ 와 실제 지폐 x 가 경찰 손으로 들어갔을 때, $D(G(z))$는 위조지폐이기 때문에 0, 실제 지폐는 $D(x)$는 1을 출력하게 된다.

즉 경찰이 위조지폐와 진짜지폐를 잘 구분한다면, $D(G(z))$가 0 이 되고 $D(x)$는 1이 되므로 최댓값을 가질 수 있다.

반면 위조지폐범의 입장에서는 경찰을 속여야 하므로, 당연히 $D(G(z))$가 1의 됨을 목표로 한다.

수식에 대한 자세한 설명은 다음 게시물에 이어 작성하겠다.


Reference

https://www.youtube.com/watch?v=odpjk7_tGY0 ( 고려대 최윤제 (1시간만에 GAN 완전 정복하기))

This post is licensed under CC BY 4.0 by the author.