0. Abstract
최근 Generative Adversarial Network (GAN)은 realistic sample들을 생성하는 점에서 수많은 promising result를 보여준다.
GAN Model의 핵심 task는 random distribution에서 Generator를 통해 생성된 sample들의 feature를 control하는 것이다.
즉, GAN은 generated sample의 feature를 control하는 것이 핵심이라 볼 수 있다.
위와 같이 생성된 sample의 feature를 control할 수 있는 GAN structure는 다음과 같다.
1) Conditional GAN (CGAN)
이는 desired major features를 가지고 성공적으로 sample들을 생성할 수 있다.
다만 CGAN은 sample들간의 specific difference인 detailed feature를 반영하는 데 종종 실패하는 문제가 있다.
2) Controllable GAN (ControlGAN)
위의 CGAN의 문제를 해결하기 위해 저자는 ControlGAN structure를 제시한다.
Discriminator $D$에서 Feature Classifier를 분리한 후에,
Generator $G$에서는 specific detailed features를 가지는 synthetic sample들을 생성한다.
뿐만 아니라, ControlGAN에서는 training process에서 사용되지 않는
interpolated and extrapolated input labels에 대응되는
intermediate features and opposite features를 생성할 수 있다.
즉, ControlGAN이 생성하는 sample들은 다양한 specific detailed features를 가지게 된다.
1. Introduction
Generative Adversarial Network (GAN)은 realistic sample을 생성할 수 있는 Neural Network Structure이다.
GAN은 Discriminator $D$와 Generator $G$의 2개의 Module로 구성되어 있다.
Generator $G$는 random noise로부터 fake sample을 생성하고,
Discriminator $D$가 이를 real sample로 착각하도록 속인다.
Discriminator $D$는 input sample이 real sample인지 fake sample인지 구별한다.
즉, Discriminator $D$와 Generator $G$간의 adversarial and competitive learning을 통해
sample들의 latent variables가 random variable로 mapping되어 Generator $G$의 input으로 들어간다.
이런 process의 learning iterations가 반복될수록 Generator $G$는 random noise로부터 realistic sample을 생성할 수 있게 된다.
한편, GAN은 Generator $G$가 realistic sample들을 생성하는 것 뿐만 아니라 machine translation task나 image super-resolution task에도 다수의 promising result를 보여줬다.
1.1) Conditional GAN (CGAN)
Generator $G$에 들어가는 input은 특정 distribution을 따르는 random noise를 sampling하기 때문에
우리가 원하는 feature를 가진 realistic sample을 생성하는데 있어서 GAN을 Control하기 힘들다.
VanillaGAN의 경우 random noise에서 realistic sample을 생성하기 때문에
Generator $G$의 input과 generated sample의 feature간의 관계가 명확하지 않다.
그렇기에 generated sample의 feature를 control하기 위해 지난 몇년 간 여러 시도들이 있었다.
그 중 가장 GAN을 Control하는 유명한 방법이 Coditional GAN이다.
Conditional GAN의 특징은 다음과 같다:
아래의 사진은 Conditional GAN의 구조를 나타낸 것이다.
주요 차이점은 Discriminator과 Generator 모두 Image Data외에도 Conditional Input (Class Label)을 추가로 입력받는다.
CGAN 구조의 핵심 Point (3-step training loop)를 정리하자면:
Generator Input: Gaussian Noise $z$와 임의의 Class Label $y_{1}$를 Concatenate
Discriminator Input(Fake): Gaussiasn Noise $z$와 임의의 Class Label $y_{1}$을 Concatenate 후,
Generator Ouput $G(z)$와 동일한 임의의 Class Label $y_{1}$를 Concatenate하여 $D$의 input에 넣어준다.
Discriminator Input(Real): Real Training Input Image $x$와 실제 Class Label $y_{2}$를 Concatenate
다만 Conditional GAN의 경우 주로 realistic sample을 생성하는데 초점을 두고,
input label에 따른 generated sample들 간의 specific detailed feature difference를 control 하기 힘들다는 단점이 있다.
즉, Conditional GAN은 desired major features를 가진 sample들을 생성하는데는 성공적이나,
detailed features를 가진 sample들을 생성하기 힘들다.
예를 들어, $202,559$개의 face image가 $40$개의 label로 분류된 CelebA Dataset을 보자.
Conditional GAN은 오직 desired major features (smiling or bangs) 에 대해서 sample들을 생성할 수 있기 때문에
specific detailed features (pointy nose or arched eyebrows)에 대해 sample을 생성하고자 한다면
Generator $G$가 input label에 따른 different sample들을 생성하도록 $G$를 control 할 수 있어야 한다.
따라서 specific detailed feature difference를 가진 sample들을 생성할 수 있도록 고안해낸 architecture가 ControlGAN이다.
1.2) ControlGAN
해당 논문의 저자들은 새로운 Architecture를 제시하는데, 이를
Controllable Generative Adversarial Network (ControlGAN)
라 한다.
ControlGAN은 3개의 Players(Module)로 구성되어 있다.
1) Discriminator(Encoder) $D$
2) Generator $G$
3) Feature Classifier (Encoder)
ControlGAN의 Generator $G$는 Discriminator $D$와 Feature Classifier를 동시에 속여,
fake sample이 Classifier에 의해 real sample로 분류되도록 학습하는 것을 목표로 한다.
ControlGAN은 기존의 Model들에 비해 2개의 장점을 가지고 있다.
1) Input Label (difference) 에 대해 더 집중할 수 있다.
CGAN이 생성하기 힘든 specific detailed features를 가진 sample들을 ControlGAN으로 생성할 수 있다.
2) Feature Classifier이라는 별도의 Network를 사용한다.
Discriminator $D$가 fake sample과 real sample를 구별하는 본연의 objective에 집중하게 되고,
Feature Classifier는 feature들을 corresponding input labels로 mapping 하여
Generated sample들의 quality가 상승한다.
논문에서는 CelebA Dataset과 LSUN Dataset에 대해 ControlGAN을 적용했다.
위의 사진을 통해 알 수 있는 점이 2가지가 있다.
1. ControlGAN을 통해 input label에 따라 효과적으로 face image를 생성할 수 있다.
2. ControlGAN은 extrapolated label value에도 잘 작동한다.
2. Background
2.1) A brief review of generative adversarial networks and its conditional variants
GAN은 realistic sample을 생성할 수 있도록 학습하는 Neural Network Structure임과 동시에,
Dataset의 latent variable을 data space로 mapping하여 sample을 생성한다.
$X = \{x_1, \ldots, x_n\} \quad \text{where } x \in \mathbb{R}^k $의 Dataset이 주어졌다고 해보자.
$X$ 안에 $n$개의 data point(column vector, sample)가 존재하고,
각 sample $x_{i}$는 $k$ 차원 vector space에서 vector로 표현이 가능하다.
만약 각 sample들이 orthogonal 하지 않다면 latent variable $z$가 $k$차원에서 $l$차원으로 축소되어
$z \in \mathbb{R}^l \text{ where } l < k $ 인 $z$가 존재한다.
예를 들어, face image dataset의 경우 latent variable들은 human face의 attribute가 될 수 있다.
shape of face, sharpness of nose, color of eyes등이 가능하다.
Auto-Encoder(AE)는 sample들을 latent variable로 mapping 해주어 Dataset의 차원을 감소시키는 Neural Network Structure이다.
$f_{AE} : \mathbb{R}^k \to \mathbb{R}^l $ 의 수식을 통해 나타낼 수 있다.
Generative Model의 목적은 이와 반대인 inverse function을 구현하는 것이다.
$f_{GM} : \mathbb{R}^l \to \mathbb{R}^k $
즉, latent variable이 주어졌을 때 이를 이용하여 sample을 생성하는 것이기에 AE의 Decoder와 유사하다고 볼 수 있다.
이러한 Generative Model의 문제점은 latent variable들을 어떻게 찾을 것인지와
generate sample을 하는데 있어서 어떻게 Model을 학습시키는지 이다.
GAN은 이러한 문제점들을 Generator $G$와 Discriminator $D$간의 competitive learning process를 통해 해결한다.
1) Generator $G$는 randomly initialized variable을 sampling을 하여 mapping을 통해 sample을 생성한다.
2) Discriminator $D$는 generated sample과 real sample을 구별할 수 있도록 학습한다.
3) 이와 동시에 Generator $G$는 generated sample들의 loss를 줄이는 방향으로 Discriminator $D$를 속이도록 학습한다.
위의 과정들을 통해 Generator $G$는 realistic sample 들을 생성할 수 있도록 학습하고
latent variable들을 input variable로 mapping(embedding)할 수 있도록 한다.
그러나 위에서 기술했듯이 input variable과 generated sample들 간의 관계가 명확하지 않기에,
우리가 원하는 대로 generated sample의 feature를 control 할 수 없다.
예를 들어, GAN 모델을 control 하여 나이 많은 여자가 blond hair을 가지면서 웃는 face image를 생성하고자 한다면
Vanilla GAN으로는 random하게 생성된 여러 face image들 중 위의 조건을 만족하는 사진을 일일이 찾아야 한다.
위의 문제를 해결하기 위해 많은 Conditional Variants of GAN이 연구되었다.
Conditional GAN은 Generator $G$가 생성한 sample들의 feature를 control할 수 있는 가장 유명한 GAN Structure 중 하나이다.
CGAN은 class label을 Discriminator $D$와 Generator $G$의 input에 concatenate 시켜
input label의 condition 아래 Generator $G$가 이를 만족하는 sample을 생성하도록 한다.
몇몇의 이전 연구들은 Classifier을 사용해서 문제를 해결하려는 노력을 했었다.
Auxiliary Classifier GAN (AC-GAN)는 GAN 구조의 Discriminator에 Classifier를 사용했다.
Triple-GAN은 Discriminator의 input에 classification result를 사용했었다.
그러나, 이러한 방법들은 Discriminator $D$에 부착된 Classifier를 사용한다는 단점이 있다.
이는 Discriminator $D$가 sample들의 condition(feature)을 결정하기 때문에
conditional GAN의 한계를 극복할 수 없다.
2.2) The limitation of conditional GAN
Conditional GAN이 GAN Structure 중 conditional sample들을 생성하는데 가장 유명하지만,
specific detailed features를 반영하는 sample들을 생성하는데에는 한계가 명확하다.
예를 들어, Conditional GAN이 face image를 생성한다고 할 때
'Blond Haair'와 같은 쉽게 구별할 수 있는 desired major features들을 가진 sample들을 생성하지만
'Arched Eyebrows', 'Big Lips', 'Mouth Slightly Open', 'Wearing Earrings', 'Wearing Lipstick' 과 같은
specific detailed features를 가진 sample들을 생성하기에는 어렵다.
이러한 sample들을 생성하는데 실패하는 이유는 다음과 같다.
Discriminator $D$가 input sample의 real / fake여부 뿐만 아니라
label / condition이 correct인지 아닌지도 판별해야 하기 때문이다.
Discriminator $D$의 main objective는 input sample이 real인지 fake인지 구별하는 것이다.
그렇기에 만약 condition (or a label)이 dataset에서 굉장히 rare하거나
sample distribution의 center (sample들이 densely exist하는 곳)로부터 매우 먼 곳에 있을 때
DIscriminator $D$가 이러한 Condition을 가지고 있는 sample들을 fake sample로 판단하는 확률이 올라간다.
specific detailed features를 가지고 있는 sample들의 경우
위의 condition (rare, far from the center of distribution) 에 해당할 확률이 높기에
Discriminator $D$가 이를 Fake Sample로 판단하는 경우가 많을 것이다.
애초에 Discriminator $D$가 특정 condition을 지닌 sample을 Fake로 판단해버리면
Generator $G$는 Real Sample에 근접하도록 sample들을 생성하기에
Fake로 판단된 특정 condition을 지닌 sample들은 Generator $G$의 고려대상이 되지 않는다.
그렇기에 specific detailed features를 가진 sample들을 생성하기가 힘들다.
3. Methods
3.1) Controllable Generative Adversarial Networks
ControlGAN은 3개의 Neural Network Structure로 구성되어 있다.
따라서 이를 Two-player game이 아니라 Three-player game이라 한다.
1) Generator (Decoder) $G$
2) Discriminator $D$
3) Feature Classifier (Encoder) $C$
여기서 Generator $G$는 generated sample로 하여금 Discriminator $D$를 속이고
Feature Classifier $C$에 의해 generated sample이 corresponding class로 정확하게 분류되도록 해야 한다.
Generator $G$와 Feature Classifier $C$는
class label들이 $G$의 input과 $C$의 output으로 사용되기에 Decoder - Encoder Structure로 해석이 가능하다.
ControlGAN은 $D, G, C$에 대해 각각 아래
3개의 Equation를 Minimize하는 최적의 Parameter $\theta$를 찾아야 한다.
Data $x$에 대해 Generator의 분포 $P_{g}$를 배우기 위해 먼저 noise 변수 $P_{z}(z)$를 정의한다.
그리고 noise $z$를 sampling하여 $G(z; \theta_{g})$를 통해 Data Space에 Mapping 시킨다.
이때 $G$는 미분가능한 함수로 parameter $\theta_{g}$를 갖고
$D(x; \theta_{d})$도 정의하는데, output은 scalar(0 ~ 1)이다.
$D(x)$는 $x$가 real sample일 확률을 의미한다.
$\theta_D = \arg \min \left\{ \alpha \cdot L_D(t_D, D(x; \theta_D)) + (1 - \alpha) \cdot L_D((1 - t_D), D(G(z, l; \theta_G); \theta_D)) \right\}$
GAN Training 1, 2 step: DIscriminator $D$가 real sample, fake sample에 대해 각각 1, 0으로 label 하도록 $D$를 update
$\theta_G = \arg \min \left\{ \gamma_t \cdot L_C(l, G(z, l; \theta_G)) + L_D(t_D, D(G(z, l; \theta_G); \theta_D)) \right\}$
GAN Training 3 step: Generator $G$가 생성한 fake sample이
Discriminator $D$가 real sample (1)로 판단하도록 속이도록 $G$를 update
Feature Classifier에 fake (generated) sample이 들어왔을 때 이를 class label $l$로 mapping한다.
$\theta_C = \arg \min \left\{ L_C(l, x; \theta_C) \right\}$
Feature Classifier에 real sample이 들어왔을 때 이를 class label $l$로 mapping한다.
$x$: real sample
$G(z, l; \theta_{G})$: fake sample
$z$: noise
$L_{D}, L_{G}, L_{C}$: Discriminator, Generator, Classifier Loss
$l$: binary representation (one-hot encoding) of class labels
corresponding to sample $x$ (real sample) or random value (fake sample)
$t_{D}$: value of real / fake sample (1, 0) for Discriminator $D$
$\alpha$: Discriminator $D$에 들어가는 parameter
$\gamma_{t}$: Generator $G$가 얼마나 input label $l$에 중점을 둘 건지 정하는 parameter
ControlGAN은 Feature Classifier를 통해 sample (real sample $x$ or fake sample $G(z, l; \theta_{G})$)을
input으로 받아 feature들을 corresponding class label $l$로 mapping한다.
Generator $G$는 2개의 objective 간 balancing을 하는 것이 중요하다.
1) GAN Structure Optimization
Generator $G$가 Discriminator $D$를 속일 수 있도록 학습하는 것
2) Decoder - Encoder Structure Optimization
Feature Classifier $C$가 corresponding class로 정확히 분류하는 것
well-trained Conditional Generator $G(z, l)$이 존재한다고 가정해보자.
이때, $G$는 real sample $x$의 true distribution을 완벽하게 학습했고,
그렇기에 $G$로부터 생성된 generated sample들은 real sample과 구별할 수 없으므로
original dataset과 동일한 classification loss $L_{c}$를 갖는다.
$E = \frac{L_C(l, G(z, l; \theta_G))}{L_C(l, x)}$, $E = 1 \text{ if } G(z, l) = P(X)$
만약 Generator $G$가 input label에 더 concentrate하도록 훈련한다면 $E$의 값은 1보다 작고, 그렇지 않다면 1보다 클 것이다.
Generator $G$가 input label에 더 집중한다는 것은,
generated (fake) sample이 들어간 $L_{C}(l, G(z, l; \theta_{G}))$의 Loss 값이
real sample이 들어간 $L_{C}(l, x)$의 Loss 값보다 작다는 뜻이다.
ControlGAN은 2가지의 요소를 Control한다.
1) Dataset의 distribution을 학습하는데 집중할 것인지 (GAN Structure Optimization)
Generator $G$가 Discriminator $D$를 잘 속일 수 있도록 학습한다.
2) input label에 따른 sample을 생성하는데 집중할 것인지 (Decoder - Encoder Structure Optimization)
Parameter $E$를 통해 Generated sample들의 Classification Loss $L_{C}$를 일정하게 유지하는지 확인한다.
$\gamma_t = \gamma_{t-1} + r \cdot \{L_C(l, G(z, l; \theta_G)) - E \cdot L_C(l, x)\}$
$\gamma_{t}$: learning parameter
$r$: learning rate parameter
$\gamma_{t}는 $time step $t$마다 달라지는 $E$를 유지하기 위해 사용하는 parameter이다.
이러한 equilibrium parameter는 Boundary Equilibrium GAN (BEGAN)의 concept에서 차용한 것이다.
BEGAN은 equilibrium parameter를 Discriminator $D$ 와 Generator $G$간의 balacne를 맞추기 위해 사용한다.
그러나, ControlGAN에서는 Equilibrium Parameter $\gamma_{t}$가
GAN Structure 와 Decoder (Generator) - Encoder (Classifier)의
learning 간 balance를 맞추기 위해 사용됐다.
3.2) ControlDCGAN Structure for the Applications
해당 논문에서는 ControlDCGAN Structure를 사용했다.
ControlDCGAN = ControlGAN + DCGAN (Deep Convolutional GAN)
ControlDCGAN은 Generator $G$, Discriminator $D$, 그리고 Classifier $C$ 모두 Residual Module을 사용했다.
Vanilla ControlGAN을 평가하는데 있어서 BN (Batch Normalization)이나 Dropout은 사용하지 않았고
Generator $G$, Discriminator $D$, Classifier $C$는 각각 $19, 22, 22$개의 hidden layer로 구성되어 있다.
논문에서 사용한 generated sample과 real sample의 size는 $128 \times 128 \times 3$이다.
4. Results and Discussion
5. Conclusion
효과적으로 generated sample의 specific detailed feature들을 control하기 위해 ControlGAN이라는 구조를 제안했다.
이러한 ControlGAN은 3개의 Module (Generator $G$, DIscriminator $D$, Classifier $C$) 로 구성되어 있다.
Classifier $C$가 input sample (corresponding features)들을 class label $l$로 mapping 하면서
generated sample이 얼마나 input label에 의해 control 되는지 결정할 수 있다.
ControlGAN은 VanillaGAN과 Decoder(Generator) - Encoder(Classifier) Structure의 간단한 조합이지만
Conditional Sample들을 생성하는데 탁월한 능력을 보인다.
SOTA GAN Sturcutre들과 결합이 가능하여 비단 VanillaGAN 뿐만 아니라
StackGAN, WGAN, BEGAN과 같은 구조를 사용하여 더 좋은 quality의 sample을 생성할 수 있다.
또한, ControlGAN이 zero-shot value (non-training data)에 sample을 생성할 수 있다는 것을 보여주었다.
이는 interpolated and extrapolated value들을 generator $G$에 넣어줌으로써 가능하다.
이러한 ControlGAN 모델은 generated sample들을 control할 수 있는 강력한 퍼포먼스를 보여주며,
Generative Model의 research에 기여할 수 있을 것으로 예측한다.