논문 리딩 스터디 #7: 일정한 조건을 추가해 이미지를 생성할 수 있도록 GAN을 개선한 CGAN 논문을 정리해봅니다.
논문 링크: Conditional Generative Adversarial Nets
Introdution
기존 GAN은 분포 내에서 이미지를 랜덤하게밖에 생성할 수 없는 문제점이 있었다. 따라서 이를 활용하기에는 많은 제약이 따랐는데, CGAN은 이를 타개하고 Conditional한 이미지 생성을 추구하는 모델이다. 논문에서는 Multi-modal Learning을 위함이라고 하고 있다. 사실상 Conditional한 생성과 비슷한 말이라고 보면 될 듯 하다.
Model Structure
원본 데이터의 분포 \(p_{data}\), 랜덤 노이즈의 분포 \(p_z\), 생성 함수 \(G\) 와 판별 함수 \(D\)가 정의될 때, Minimax Game으로 명명되는 GAN의 목적 함수는 다음과 같다.
\[\underset{G}{min} \ \underset{D}{max} V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))]\]Generator는 입력 노이즈 \(z\)를 받아서 최대한 실제 이미지와 구별되지 않게 생성해내면 이 목적함수의 최소화를 이뤄낼 수 있고, Discriminator는 입력으로 이미지를 받아서 최대한 가짜 이미지를 구별해내면 목적 함수를 최대화할 수 있게 설계되어 있다.
CGAN은 여기서 크게 벗어나지 않는다. 그저 Genertor와 Discriminator를 학습하는 과정에서 Extra information \(y\)를 주는 것 뿐이다. 이 정보에는 Generator가 이미지를 어떻게 생성했으면 하는지에 대한 부가적인 정보가 담겨 있다. Generator는 입력 노이즈 \(z\) 뿐만 아니라 \(y\) 에도 영향을 받아 이미지를 생성하기 때문에, 학습이\(y\)의 조정으로 Generator의 이미지 생성을 유도할 여지가 많아지는 것이다.
\(y\)가 추가된 CGAN의 목적 함수는 다음과 같다. GAN의 목적 함수를 $$y44에 Conditional하게 바꾼 모습이다.
\[\underset{G}{min} \ \underset{D}{max} V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x|y)] + \mathbb{E}_{z \sim p_z(z)}[\log(1 - D(G(z|y)))]\]Generator는 이미지를 생성할 때 \(y\)에 Conditional하게 \(z\) 노이즈를 선택하며, Discriminator 의 판별 또한 입력 이미지와 \(y\)를 함께 고려해서 진행된다.
논문에는 다음과 같은 그림으로 구조를 소개하고 있다.
실제 이 모델을 구현할 때는, 보통 \(z\)와 \(y\) 벡터를 단순히 Concatenation하는 방식으로 진행된다.
Experiments
논문에서 진행한 실험은, \(y\)를 MNIST의 10개의 클래스를 결정하는 요소로 두고 그에 맞는 숫자 사진을 Generator가 생성하는지 보는 것이다. 결과는 아래와 같이 잘 됨을 볼 수 있었다.