대표적인 생성 모델인 GAN에 대해 알아보겠습니다.
GAN 구조 (출처: 구글)
기본적인 모델은 random noise를 입력으로 사용한다고 가정합니다.
GAN은 generator가 만든 이미지가 discriminator가 가진 참값 이미지에 포함이 되는지를 판단하는 역할을 하는 구조입니다.
———————
Objective function (목적함수)
log loss (출처: 구글)
binary cross entropy loss
(scalar 값, 0~1 사이, positive class가 될 확률)
일반적인 로그 함수는 위 그림을 세로로 뒤집은 형태로, x 축 커질수록 y축 커지는 지수 함수의 모양이 나온다.
negative log likelihood
이를 loss minimize에 적용하기 위해 -log(negative log likelihood) 하면, positive class 확률 값(likelihood)을 최대화하게된다.
(= binary cross entropy와 같은 의미)
GAN 목적함수 (출처: 구글)
negative class 확률
1 - D(G(x,z)) : 위 수식의 오른쪽 항
D(G(z)) : Discriminator output
E : Expectation
z~p_z(z) : 표준정규분포를 따르는 랜덤 벡터 z
Saddle point (출처: 위키피디아)
Generator 입장에서는 Discriminator와 반대로 loss를 maximize한다.
그래서 minimize와 maximize의 반대되는 최적화가 일어나는데,
x축에서 제일 높고, y축에서 제일 낮은 그런 점에 수렴하게 되고, 이는 위 그림의 saddle point(말의 안장과 비슷함)에 수렴하게 된다.
일반적으로 discriminator보다 generator가 훨씬 학습이 어렵습니다.
Code