GAN vs CGAN vs AC-GAN
GANs (Generative Adversarial Networks)
GAN은 생성자(Generator)와 판별자(Discriminator)로 구성됩니다. 생성자는 실제와 유사한 데이터를 생성하고, 판별자는 입력된 데이터가 실제 데이터인지 생성자가 만든 데이터인지를 판별합니다. 이 과정에서 생성자와 판별자는 경쟁하며 학습합니다.
CGANs (Conditional GANs)
CGAN은 기본 GAN에 조건(Condition)을 도입한 모델입니다. 생성자와 판별자 모두에 추가 정보를 제공하여 조건에 맞는 데이터를 생성합니다.
AC-GAN (Auxiliary Classifier GAN)
AC-GAN은 CGAN의 발전된 모델로, 판별자 내에 보조 분류기(auxiliary classifier)를 추가하여 입력 데이터의 클래스를 예측합니다. 이를 통해 더 정밀한 클래스 조건부 데이터 생성이 가능하며, 생성된 이미지의 품질과 다양성을 향상시킬 수 있습니다.
Architecture
아래는 AC-GAN의 도식화된 구조입니다. 생성자는 추가로 생성 데이터의 클래스 조건 c를 입력받아 x′ = Xfake = G(c,z)를 생성합니다. 판별자 또한 c를 입력받아, 입력 데이터의 진위 여부에 대한 확률 분포 P(S∣X)와 입력 데이터의 클래스에 대한 확률 분포 P(C∣X)를 출력합니다.
Objective Function
Objective function은 올바른 진위 여부 예측에 대한 로그 가능도 Ls와 올바른 클래스 예측에 대한 로그 가능도 Lc로 구성됩니다.
판별자는 Ls + Lc를 최대화하여 진짜와 가짜를 잘 구분하면서 동시에 올바른 클래스를 예측하도록 합니다.
생성자는 Ls - Lc를 최대화하여 판별자를 속여 가짜 데이터를 진짜처럼 만드는 동시에, 올바른 클래스를 예측하도록 하는 것이 목표입니다.
Experiments
Setting
AC-GAN 모델은 ImageNet 데이터셋을 학습합니다. 생성자는 노이즈 z와 클래스 c를 이미지로 변환하기 위한 deconvolution layer로 구성되어 있으며, 128x128, 64x64 해상도의 이미지를 생성하기 위해 두 가지 모델을 학습합니다. 판별자는 convolution layer와 leaky ReLU으로 구성된 DNN입니다.
Generating High Resolution Images
높은 해상도의 이미지를 생성했을 때 판별 능력이 향상되는 것을 보여주기 위해 실험을 진행했습니다. 왼쪽 아래의 사진은 합성 데이터를 pre-trained inception net를 통해 예측한 확률입니다. 생성 이미지의 해상도가 높아질수록 확률이 높아지는 것을 확인할 수 있습니다. 오른쪽의 결과는 학습 데이터와 모델의 해상도에 따른 inceptionNet의 예측 확률입니다. 검정색은 ImageNet 데이터, 빨간색은 128x128 해상도의 모델, 파란색은 64x64 해상도의 모델 결과입니다. 128x128 모델이 더 높은 예측 확률을 보이는 것을 확인할 수 있습니다. 또한, 128x128과 32x32의 클래스 점수 비교에서는 128x128 쪽에 대부분의 점이 몰려 있는 것을 볼 수 있습니다.
Example images
아래는 클래스를 함께 입력하여 생성한 이미지 예시입니다.
Conclusion
본 논문에서 제안된 방법론은 생성 모델에 추가적인 학습 신호를 제공하여 생성 모델이 더 정밀하고 다양한 이미지를 생성할 수 있게 합니다. 또한 생성된 이미지의 분류 정확도를 개선하는 데 기여합니다. 본 논문은 GAN의 발전과 응용 범위 확장에 있어 중요한 역할을 합니다.
개인적으로 생각하는 AC-GAN의 가장 큰 장점은 클래스 조건을 추가하여 더 정밀한 데이터 생성을 가능하게 한 점입니다. 이는 다양한 응용 분야에서 더욱 유용하게 활용될 수 있을 것이라 생각합니다.