Generative adversarial networks (GAN)
GAN은 성격이 다른 두 가지 신경망이 서로 경쟁을 통해 학습하도록 설계된 네트워크이다.
생성 모델 G는 실제 데이터와 비슷한 가짜 데이터의 분포를 생성한다.
판별 모델 D는 입력 받은 데이터의 분포가 실제 데이터의 분포인지, 생성 모델이 생성한 가짜 데이터의 분포인지 판별한다.
두 모델은 서로 경쟁을 통해 학습한다. 생성 모델 G는 더욱 정교한 데이터 분포를 생성하도록 학습되며, 판별 모델 D는 실제 데이터와 가짜 데이터를 더 잘 판별하도록 학습된다.
학습이 모두 종료된 시점의 생성자 G는 판별 모델 D가 더이상 가짜와 진짜를 구별할 수 없을 정도의 생성 능력을 갖추게 된다.
Generator
생성자는 확률 분포 z∼pz(z)에서 생성된 노이즈 z를 입력으로 받아 데이터의 분포를 생성한다.
Discriminator
판별자 네트워크는 실제 데이터의 확률 분포 x∼pdata(x)로부터 추출된 데이터 x와 생성자가 만들어낸 데이터 G(z)를 입력으로 받아 두 데이터 분포 중 어떤 것이 실제 데이터 분포인지 판별한다.
D(x),D(G(z))
Loss function
판별자 D는 D(x)는 1, D(G(z))는 0으로 판별하는 것을 학습 목표로 한다.
Ex∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))]
생성자 G는 판별자가 D(G(z))을 1로 판별하는 것을 학습 목표로 한다.
Ez∼pz[log(1−D(G(z)))]
따라서 전체 GAN 네트워크의 손실 함수는 Min(G), Max(D)로 정의되며, 수식은 다음과 같다.
GminDmaxV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
Conditional
기본적인 GAN 네트워크는 Unconditional 방식으로, 생성자는 랜덤 노이즈 z를 입력으로 받아 데이터를 생성한다.
ConditionaGAN은 랜덤 노이즈 z를 입력 받는 것은 동일하지만, 특정한 조건을 추가로 입력받아 D와 G가 주어진 레이블에 따라 조건부로 동작하도록 설계되었다.