GAN (Generative Adversarial Network)
직역하자면 다음과 같다.
생산적 적대 신경망
이 무슨 말이란 말인가. 항상 느끼지만 한국어는 공부를 하는 입장에서 한문이 너무 많아서 괴롭다. 그 어느 누가 생산적 적대 신경망 이란 말을 보고 이해할 수 있을까. 따라서 저런 말은 집어치우고, 본인이 이해한 쉬운 그림을 보고 설명하겠다.
위조지페범과 경찰
다음과 같은 상황을 생각해보자.
- 위조지폐범이 지폐를 위조하였다.
- 경찰의 수사망에 올라 경찰은 위조지폐를 추적하였다.
- 그걸 안 위조지폐범은 더더욱 철저하게 지폐를 위조하였다. (수사망에 올라가지 않게 즉, 경찰이 위조지폐인지조차 모르게)
- 고도의 발달된 기술의 범인을 잡기위하여 경찰또한 고도의 기술을 도입하여 위조지폐 판별에 힘썼다.
- 위의 내용을 무한 반복한다.
믿기 힘들겠지만 위의 내용이 GAN(Generative Adversarial Network)의 내용이다. 위의 내용을 반복하다보면 위조지폐범은 결국 진짜 지폐와 구별할 수 없는 지폐를 만들어내게 될것이다.
Models
아직 위의 설명으로는 감이 잘 오지 않을 수 있다. 하지만 걱정마라. 그건 당신 뿐만이 아닌 세상 99%의 모든 사람들이 그렇다.. 몰론 나 포함. 천천히 밑의 글과 내용을 읽어가며 공부하면 해결될 것 이라고 생각한다.
GAN 은 다음과 같은 두가지 모델로 구성된다.
- 첫번째 Discriminative Model
- 두번째 Generative Model
여기서 생성모델(Generative Model)의 역할이 위조지폐범이 되고, 구별모델 (Discriminative Model)의 역할이 경찰의 역할이 된다.
구별모델은 사진을 보고, Class를 구분하여 사진을 판별하고 (ex: 진짜면 1, 가짜라면 0) 생성모델은 랜덤한 코드를 받아 가짜 이미지를 생성해 낸다.
GAN의 목적
위에서 말했다 싶이, GAN 의 목적은 $P_{data} (x) , P_{model} (x)$ 의 확률 분포의 차이를 줄이는 것을 목적으로 한다.
사진으로 포현하면 다음과 같다.
기본 수식
따라서 위의 목적을 만족하기 위해, 구별모델 과 생성모델 의 수식을 표현하자면 다음과 같다.
- $z$의 의미는 noise 이다. (랜덤한 숫자로 뿌려진 noise)
- $z$ 즉 noise를 통하여 위조지폐범이 만든 지폐를 $G(z)$라 하자.
- 이제 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 완전 정복하기))