cGAN (2014)의 간단한 오버뷰

2025. 1. 22. 05:25머신러닝&딥러닝/생성모델

728x90

cGAN (conditional generative adversarial nets)은 2014년에 나온 꽤 고전적인 생성모델 논문이다. NeurIPS에 출판된 GAN 논문과 달리, cGAN은 GAN에 conditioning을 추가한 정도의 architecture로 따로 출판된 적은 없으며 arxiv preprint로만 있다. https://arxiv.org/abs/1411.1784 물론 RoCGAN 등 cGAN의 후속 연구는 좋은 학술지나 컨퍼런스에 많이 실렸다.

 

Conditional Generative Adversarial Nets

Generative Adversarial Nets [8] were recently introduced as a novel way to train generative models. In this work we introduce the conditional version of generative adversarial nets, which can be constructed by simply feeding the data, y, we wish to conditi

arxiv.org

 

최근 cGAN을 구현할 일이 생겨 공부도 할 겸 포스팅에 이를 정리해보고자 한다.

 

Conditional Adversarial Nets

GANs

GAN은 Discriminator와 Generator의 경쟁으로, Generator가 더 실제에 가까운 데이터를 생성하도록 하는 것이 주요한 목표이다. G는 특정 노이즈 분포 $p_z (z) $ 로부터 input data space에 맞는 데이터를 생성하는 것이 목표이며, D는 이 데이터가 원본 분포에서 왔는지 G로부터 생성된 노이즈에서 왔는지 구별한다. 즉, G와 D의 경쟁을 통해 노이즈에서 생성된 데이터 분포는 점점 원본 데이터 분포에 근접하게 된다. GAN은 아래의 objective로 학습한다. 

 

$$ \begin{align*} \min_{G} \max_{D} V(D, G) &= \mathbb{E}_{\mathbf{x} \sim p_{\text{data}}(\mathbf{x})} [\log D(\mathbf{x})] \\ &\quad + \mathbb{E}_{\mathbf{z} \sim p_{\mathbf{z}}(\mathbf{z})} [\log (1 - D(G(\mathbf{z})))]. \end{align*} $$

 

cGANs

cGAN은 위에서 소개한 GAN의 기본적인 architecture에서 추가정보 y가 G와 D에 둘 다 제공되는 경우를 전제한다. 즉 objective가 아래와 같이 변한다.

$$ \begin{align*} \min_{G} \max_{D} V(D, G) &= \mathbb{E}_{\mathbf{x} \sim p_{\text{data}}(\mathbf{x})} [\log D(\mathbf{x} | \mathbf{y})] \\ &\quad + \mathbb{E}_{\mathbf{z} \sim p_{\mathbf{z}}(\mathbf{z})} [\log (1 - D(G(\mathbf{z} | \mathbf{y})))]. \end{align*} $$

 

 

본 논문에서는 숫자로 conditioning 한 MNIST generation을 했고, likelihood 값으로 평가하였다. 

또한, 굉장히 preliminary한 연구이지만, skip-gram으로 word vector를 얻은 뒤 이미지에 대한 태그를 자동으로 생성하는 방법에 대한 내용도 논문에 기술되어 있다. 현재와 같이 정교한 word embedding 방식이 나와있지 않아 성능은 높지 않다.

반응형