반응형

[GAN 기초] GAN이란 무엇인가? Loss 함수는 어떻게 계산하는가

 

요약

본 글에서는 GAN이란 무엇인지 설명을 하며, 생성자와 판별자를 학습하기 위한 Loss 함수에 대한 설명을 다룬다.

 

 






 

Appendix

GAN(Generative Adversarial Network)란


정의 
- GAN이란 생성자와 구분자가 서로 학습을 하여 새로운 데이터를 생성하는 비지도 학습의 한 분야이다.
- Discriminator는 fake image는 0으로 real image는 1을 출력하도록 학습하는 과정이다. 
- Discriminator만 따로 학습을 시키는 것이 아닌, Discriminator와 Generator가 번갈아 가면서 학습을 진행한다.


코드 

실제 코드에서도 loss함수를 다음과 같이 구현함을 알 수 있다. 
########## 로스 선언 ######### 
def discriminator_loss(d_real, d_fake): 
real_loss = tf.keras.losses.BinaryCrossentropy()(tf.ones_like(d_real), d_real) fake_loss = tf.keras.losses.BinaryCrossentropy()(tf.zeros_like(d_fake), d_fake)
return real_loss + fake_loss 

def generator_loss(d_fake): 
return tf.keras.losses.BinaryCrossentropy()(tf.ones_like(d_fake), d_fake)


그 이후, discriminator와 generator가 번갈아 가며 학습을 진행한다. 

for epoch in range(num):
d_mean.update_state(d_loss)
g_mean.update_state(g_loss) 

반응형

+ Recent posts