아카이브

[GAN] 조건적 적대 생성 신경망 (CGAN) 본문

CS/ML

[GAN] 조건적 적대 생성 신경망 (CGAN)

Rayi 2023. 2. 17. 14:45

 일반적인 GAN의 경우 생성하는 위조 데이터를 원하는 속성의 데이터로 생성해낼 수 없다는 단점이 있습니다. 예를 들어 강아지 사진을 생성하는 GAN 모델의 경우, 무작위 강아지 사진을 생성할 수 는 있지만, 푸들이나 리트리버와 같이 특정한 견종을 지정하여 생성할 수 없습니다.

 

 이를 개선하기 위해 GAN에 추가적인 조건(condition)을 제공하여 구체적인 속성의 데이터를 생성할 수 있게 해주는 조건적 적대 생성 신경망(Conditional Generative Adversarial Network, CGAN)이 개발되었습니다. [1]

 

1. 구조

 CGAN은 원하는 조건을 나타내는 condition 변수를 가지고 있음을 제외하면 GAN과 동일한 구조를 가지고 있습니다.

이 condition 변수는 상황에 따라 임의로 지정할 수 있습니다. 가령 손글씨 데이터셋인 MNIST를 기반으로 만든 CGAN의 경우, 제시할 수 있는 조건은 숫자의 종류(0~9)가 되므로 0에서 9까지의 값이 condition 변수가 될 수 있습니다.

 

Condition y는 generator와 discriminator의 입력값에 합쳐져 사용됩니다. 모델에서는 크게 총 세 번 참조됩니다 :

 

 - Generator 학습 시 위조값 생성에서 G(z + y)

 - Discriminator 학습 시 위조값 생성에서 G(z + y)

 - Discriminator 학습 시 입력값으로 D(G(z+y) + y)

 

이를 그림으로 나타내면 다음과 같습니다.

2. 최적화

CGAN의 loss function 또한 condition y가 주어지는 것 외에는 일반적인 GAN의 loss function과 동일합니다.

CGAN은 여기서 V(D, G)의 값을 최소로 만드는 G와 최고로 만드는 D의 적절한 모델을 학습해야 합니다.

 

References

[1] Mehdi Mirza (2014). "Conditional Generative Adversarial Nets"

728x90

'CS > ML' 카테고리의 다른 글

[GAN] Style 적대적 생성 신경망 (StyleGAN)  (0) 2023.04.28
[GAN] 적대적 생성 신경망(GAN)  (0) 2023.02.17
Comments