딥러닝 이야기 / Conditional Generative Adversarial Network (CGAN) / 1. Conditional Generative Adversarial Network (CGAN)

작성일: 2023.03.08
시작하기 앞서 틀린 부분이 있을 수 있으니, 틀린 부분이 있다면 지적해주시면 감사하겠습니다.
이번에는 원하는 데이터, 혹은 원하는 label의 데이터를 선택해서 생성할 수 있는 Conditional Generative Adversarial Network (CGAN)에 대해 설명하겠습니다.
CGAN을 이해하기 위해서는 먼저 GAN에 대해서 알고있어야 합니다.
생성 모델, GAN, GAN의 평가 지표 등 여러 내용은 GAN 설명글을 참고하기 바랍니다.
오늘의 컨텐츠입니다.
- Conditional GAN (CGAN)
그리고 아래는 CGAN 논문입니다.
Conditional Generative Adversarial Network (CGAN)
”
기존 vanilla GAN은 데이터 합성(생성)을 위한 모델입니다.
다만 training data를 label의 구분 없이 넣어주기 때문에 원하는 label에 해당하는 데이터만 생성하는 것은 불가능합니다.
가령 MNIST 데이터로 vanilla GAN을 학습한 후, 8에 해당하는 숫자만 생성하도록 모델에 요청할 수 없는 것이지요.
이렇게 특정 데이터를 생성하기 위해 나온것이 바로 CGAN입니다.
먼저 아래 그림을 보기 전, 적대적 학습(adversarial learning)에 대해 알아야하므로 이와 관련해서는 GAN 설명글을 참고하기 바랍니다.
이제 GAN과 적대적 학습의 개념을 알고있다는 가정하에 아래 그림을 살펴보겠습니다.
GAN에 대해 알고있다면 아래 그림은 전혀 어려울 것이 없습니다.
Discriminator에게는 real data에 label embedding을 추가하여(concatenate 하여) 학습하고, generator에게는 Gaussian noise에 label embedding을 추가하여 학습하는 것이 다입니다.
이렇게 학습을 진행한 후 원하는 label의 데이터를 만들고 싶다면 generator에 Gaussian noise와 label embedding을 함께 넣어주면 그 label에 해당하는 데이터를 합성해주는 것이지요.
Label embedding을 추가하여 학습하는 CGAN, 출처: CGAN 논문
지금까지 CGAN의 아주 간단하고도 원하는 데이터를 생성할 수 있는 방법에 대해 살펴보았습니다.
전체적으로 모델, 학습 방법은 vanilla GAN과 다를 것이 없지만 단지 label embedding을 concatenate하여 학습한다는 점이 다릅니다.
다음글은 CGAN을 구현하여 실제로 특정 label에 해당하는 데이터를 생성해보겠습니다.