📌 GAN
- GAN(Generative Adversarial Network, 적대적 생성 신경망)
- Discriminator(판별기)와 Generator(생성기)를 경쟁적으로 대립시켜 학습 시키는 신경망을 말한다.
GAN은 두 가지 모델이 결합된 모델이다.
1. Generator (생성자)
- 새로운 이미지를 만들어내는 모델
- Discriminator가 구분하지 못할 정도로 실제 데이터와 유사한 데이터를 만드는 것이 목표이다.
2. Discriminator (판별자)
- 생성자가 만든 이미지가 진짜인지 가짜인지 판별하는 모델
- Generator가 만든 것과 실제 데이터를 잘 구분해 내는 것이 목표이다.
즉, 생성자는 판별자를 속이기 위해 더 정교하게 이미지를 만들어내고,판별자는 생성자에게 속지 않기 위해 이미지를 더 정교하게 검증한다. 학습을 거듭하면서 생성자와 판별자 모두점점 성능이 발전하게 된다.
- x는 진짜 데이터, G(z)는 G가 z를 가지고 만든 가짜 데이터
기본 개념
log(1) = 0
log(0) = -∞
판별자 Objective function
- D의 목적은 V(D, G) 가 최대가 되도록 하는 것을 의미한다.
- 판별자는 가짜 데이터에는 0을 출력하고, 진짜 데이터에는 1을 출력해야 한다.
- 따라서, D는 오른쪽 수식 중, D(x) = 1이 되어야 하며, D(G(z))는 0 이 되도록 하는 것이 최대 목표이다.
- 1이 아닌 0이 최대라는게 헷갈릴수도 있지만 이는 상대적으로 볼 때 D가 V(D, G)를 최대화하기 위해 노력한 값이라서 max D로 표현한 것이다.
생성자 Objective function
- G의 목적은 V(D, G) 가 최소가 되도록 하는 것을 의미한다.
- G는 D가 가짜 데이터에 대해 1을 출력하게 해야 한다.
- D가 진짜 데이터를 제대로 구별하는지 아닌지는 별로 상관이 없다.
- D(G(z))는 1 이 되도록 해야 하며 해당 값은 -∞를 향하게 된다.
- 따라서 G가 원하는 최적의 상황은 매우 매우 작은 음의 무한대가 되는 방향이 되는 것이다.
참조
https://lifeignite.tistory.com/53
https://m.blog.naver.com/euleekwon/221557899873