대표적인 생성 모델인 GAN에 대해 알아보겠습니다.
기본적인 모델은 random noise를 입력으로 사용한다고 가정합니다.
GAN은 generator가 만든 이미지가 discriminator가 가진 참값 이미지에 포함이 되는지를 판단하는 역할을 하는 구조입니다.
———————
Objective function (목적함수)
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와 같은 의미)
negative class 확률
1 - D(G(x,z)) : 위 수식의 오른쪽 항
D(G(z)) : Discriminator output
E : Expectation
z~p_z(z) : 표준정규분포를 따르는 랜덤 벡터 z
Generator 입장에서는 Discriminator와 반대로 loss를 maximize한다.
그래서 minimize와 maximize의 반대되는 최적화가 일어나는데,
x축에서 제일 높고, y축에서 제일 낮은 그런 점에 수렴하게 되고, 이는 위 그림의 saddle point(말의 안장과 비슷함)에 수렴하게 된다.
일반적으로 discriminator보다 generator가 훨씬 학습이 어렵습니다.
Code