GAN이란? 원리, 증명, 한계점 (Generative Adversarial Network)
GAN(Generative Adversarial Network)이란?
GAN(Generative Adversarial Network, 적대적 생성 신경망)은 두 개의 신경망(Generator와 Discriminator)이 서로 경쟁하면서 데이터를 학습하고, 새로운 데이터를 생성하는 대표적인 생성모델입니다.
| 구성 요소 | 역할 | 목표 |
|---|---|---|
| Generator (G) | 실제와 유사한 가짜 데이터를 생성합니다. | Discriminator를 속이는 것입니다. |
| Discriminator (D) | 진짜 데이터와 가짜 데이터를 구분합니다. | 가짜 데이터를 탐지하는 것입니다. |
두 모델이 서로 경쟁하며 학습을 진행할수록, Generator는 더욱 실제와 유사한 데이터를 생성하게 되고, Discriminator는 진짜와 가짜 데이터를 더욱 정확하게 구별할 수 있게 됩니다. 결국, Generator는 실제 데이터와 거의 구별되지 않는 수준의 데이터를 생성하는 능력을 갖춘 생성 모델로 발전하게 됩니다.
이러한 GAN은 생성모델 중 VAE(Variational Autoencoder)나 Diffusion 모델과 같은 Generative Model의 일종으로, 이미지나 오디오와 같은 복잡한 데이터를 효과적으로 생성할 수 있습니다.
GAN의 수학적 표현
Objective function
GAN의 학습 과정은 다음과 같은 minimax 게임으로 정의됩니다.
\[ \min_{G}\max_{D}V(D,G)=\mathbb{E}_{x\sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z\sim p_{z}(z)}[\log(1-D(G(z)))] \]
- \( p_{data}(x) \) : 실제 데이터의 확률 분포입니다.
- \( p_z(z) \) : Generator가 데이터를 생성할 때 사용하는 노이즈 분포입니다.
- \( D(x) \) : Discriminator가 실제 데이터 \(x\)를 진짜(1)로 분류할 확률입니다.
- \( D(G(z)) \) : Discriminator가 생성된 데이터 \(G(z)\)를 진짜(1)로 잘못 분류할 확률입니다.
Discriminator 학습
Discriminator는 진짜 데이터 \(x\)에 대해 \(D(x)\)를 1에 가깝게 하고, 가짜 데이터 \(G(z)\)에 대해서는 \(D(G(z))\)를 0에 가깝게 하는 것을 목표로 합니다. 즉, 다음 식을 최대화합니다.
\[ \max_{D} V(D,G)=\mathbb{E}_{x\sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z\sim p_z(z)}[\log(1-D(G(z)))] \]
Generator 학습
Generator는 Discriminator가 가짜 데이터를 진짜 데이터로 잘못 분류하도록 속이는 것을 목표로 합니다. 이를 수학적으로 나타내면 다음과 같습니다.
\[ \min_{G}\mathbb{E}_{z\sim p_z(z)}[\log(1-D(G(z)))] \]
하지만 실제로 이 식을 사용하면 위 그래프처럼 gradient가 매우 작아져 학습이 어렵습니다. 이를 해결하기 위해 Generator의 목적함수를 다음과 같이 변형하여 사용합니다.
\[ \max_{G}\mathbb{E}_{z\sim p_z(z)}[\log(D(G(z)))] \]
GAN의 최적 상태 증명
GAN의 최적 상태에서 Discriminator는 다음과 같은 상태가 됩니다.
\[ D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)} \]
이때 Generator가 최적 상태에 도달하면, Generator는 실제 데이터의 분포와 동일한 데이터를 생성할 수 있게 됩니다.
증명 과정
Discriminator의 목표는 진짜 데이터와 가짜 데이터를 정확하게 구분하는 것입니다. 따라서 Discriminator는 다음과 같은 확률을 최대화하는 방향으로 학습됩니다.
\[ V(D, G) = \mathbb{E}_{x\sim p_{data}(x)} [\log D(x)] + \mathbb{E}_{z\sim p_z(z)} [\log (1 - D(G(z)))] \]
이제 Discriminator가 최적 상태일 때의 \(D^*(x)\)를 찾기 위해, 위 식을 \(D(x)\)에 대해 최적화합니다.
1. 기대값을 확률 분포로 표현
실제 데이터와 가짜 데이터의 분포를 각각 \(p_{data}(x)\)와 \(p_g(x)\)라고 정의하면, 기대값을 다음과 같이 다시 쓸 수 있습니다.
\[ V(D) = \int_x p_{data}(x) \log D(x) dx + \int_x p_g(x) \log(1 - D(x)) dx \]
2. 최적의 \(D(x)\) 찾기
위 식을 \(D(x)\)에 대해 최적화하기 위해, \(D(x)\)에 대한 편미분을 구하고 이를 0으로 설정하여 최적 조건을 찾습니다.
\[ \frac{dV}{dD} = \frac{p_{data}(x)}{D(x)} - \frac{p_g(x)}{1 - D(x)} = 0 \]
이를 정리하면,
\[ p_{data}(x) (1 - D(x)) = p_g(x) D(x) \]
따라서,
\[ p_{data}(x) = D(x) (p_{data}(x) + p_g(x)) \]
이를 \(D(x)\)에 대해 정리하면,
\[ D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_g(x)} \]
즉, Discriminator가 최적의 상태에 도달하면, 입력 \(x\)에 대해 진짜 데이터 분포와 가짜 데이터 분포의 비율에 따라 최적의 판별 확률을 할당하게 됩니다.
3. Generator가 최적 상태에 도달하는 경우
Generator의 목표는 Discriminator가 가짜 데이터를 진짜로 판단하게 만드는 것이므로, Generator가 완벽하게 학습되면 \( p_g(x) = p_{data}(x) \)가 되어 두 분포가 동일해집니다. 이 경우,
\[ D^*(x) = \frac{p_{data}(x)}{p_{data}(x) + p_{data}(x)} = \frac{1}{2} \]
즉, 최적의 Generator와 Discriminator가 존재하는 경우, Discriminator는 모든 샘플을 50% 확률로 진짜 혹은 가짜로 판별하게 되며, 이는 두 분포가 완전히 동일하다는 것을 의미합니다.
GAN의 한계점
GAN은 뛰어난 성능에도 불구하고 몇 가지 중요한 한계점을 가지고 있습니다.
Mode-collapse 현상
![]() |
| GAN Mode-collapse (source) |
가장 대표적인 GAN의 한계점은 mode-collapse입니다. Mode-collapse란 Generator가 특정 데이터만을 반복적으로 생성하는 현상으로, 다양한 데이터를 생성하지 못하는 문제를 의미합니다. 이 경우 Generator와 Discriminator 간의 균형이 깨지면서 정상적인 학습이 어렵습니다.
| 상황 | Generator 상태 | Discriminator 상태 |
|---|---|---|
| Mode-collapse 발생 | 소수의 데이터만 반복적으로 생성합니다. | 특정 데이터 유형만 정확히 구별하지 못하게 됩니다. |
| 이상적 상황 | 다양한 데이터를 균형 있게 생성합니다. | 모든 데이터에 대해 정확히 구분할 수 있습니다. |
왜 발생할까?
- Generator가 특정 패턴을 학습 → Discriminator를 속이기 쉬운 일부 데이터만 생성
- Discriminator가 너무 강함 → Generator가 다양성을 학습하지 못함
- Gradient가 사라짐 → Generator가 한 가지 모드에 갇힘
해결 방법은?
- WGAN 같은 새로운 손실 함수 사용
- Mini-batch Discrimination으로 다양성 증가
- 여러 개의 Generator 사용 (MAD-GAN)
즉, Mode-Collapse는 GAN의 학습 불균형 때문에 발생하며, Generator가 다양한 데이터를 생성하도록 유도하는 방법이 필요합니다.
결론
GAN은 두 신경망의 경쟁적 관계를 통해 실제와 유사한 데이터를 생성할 수 있는 강력한 생성 모델이지만, mode-collapse나 학습의 불안정성과 같은 한계점 역시 존재합니다. 이를 극복하기 위한 다양한 연구가 현재도 진행 중이며, GAN의 활용 가능성은 계속해서 확장되고 있습니다.
.webp)
.png)
