Generative Adversarial Nets
이 논문은 적대적 신경망(Adversarial Network)의 도입을 통해 생성 모델 학습에 획기적인 전환점을 제시하였다. 모델은 진짜와 가짜 데이터를 구별하려는 판별자(Discriminator)와, 판별자를 속이기 위해 진짜 같은 데이터를 생성하는 생성자(Generator) 간의 경쟁적 학습 과정으로 구성된다.
논문 링크
위 논문을 읽고, 내용을 요약하였다.
Introduction
배경
- 딥러닝은 이미지, 음성, 자연어와 같은 AI 분야의 데이터 분포를 잘 표현하는 풍부하고 계층적인 모델을 자동으로 학습하는 것을 목표로 한다.
- 지금까지는 눈에 뜨는 성과는 Discriminative model이었다.
- Discriminative model(판별 모델): 입력 데이터를 보고, 그에 대한 정답을 직접 예측하는 모델로 결정 경계를 만드는 것에 집중한다.
- 반면, Generative model의 Maximum likelihood estimation(MLE)에 필요한 확률 계산이 수학적으로 매우 복잡하고 계산이 불가능한 경우가 많았다.
- Generative model(생성 모델): 데이터가 어떻게 생성되는지를 학습하여, 실제처럼 보이는 데이터를 직접 만들어내거나, 데이터의 확률 분포를 추정하는 모델이다.
제안
- 이러한 문제들을 우회(sidestep)하는 새로운 생성 모델 학습 기법을 제안한다.
- Adversarial nets에서는, 생성 모델이 하나의 적과 맞서 경쟁한다.
- 이때 적은, 생성된 데이터와 실제 데이터를 구분하도록 학습되는 Discriminator이다.
비유
-
Generator는 위조 지폐를 만드는 위조범에 비유
- 위조 지폐를 만들어 실제처럼 보이게 하여 들키지 않고 유통시키려는 역할
-
Discriminator는 경찰에 비유
-
이러한 경쟁 구조에서 서로의 성능을 이기기 위해 계속해서 발전하고, 결국에는 위조지폐가 진짜와 구별되지 않을 정도의 품질에 이르게 된다.
-
이러한 구조는 다양한 모델과 최적화 알고리즘에 대해 구체적인 학습 알고리즘을 도출해 낼 수 있다.
-
여기서는 Generator는 랜덤한 노이즈를 multilayer perceptron을 통과시켜 sample을 생성하도록 만들었고, Discriminator 역시 multilayer perceptron 구조이다.
→ 이러한 구조를 adversarial nets라고 한다.
- Approximate inference와 Markov chain 없이, 단순히 backpropagation과 dropout만으로 손쉽게 학습이 가능하며,
- 샘플을 생성할 때는 Generator에 순전파(forward propagation)만 수행하면 된다.
- Approximate inference: 확률 모델에서 직접 계산하기 어려운 복잡한 수식을, 근사적인 방법으로 계산하는 기법이다.
- 단점: 수학적으로 복잡하며, 근사이기 때문에 정확도가 떨어질 수 있다.
- Markov chain: 복잡한 확률 분포에서 샘플을 생성할 때 사용하는 확률적 샘플링 기법이다. 한 상태에서 다음 상태로 순차적으로 이동하면서 전체 분포를 점진적으로 탐색한다.
- 단점: 샘플링 속도가 느리고, 샘플 간의 의존성으로 인해 효율이 낮다.
Adversarial nets
🔍 Generator 학습
- 목표: Generator가 만들어내는 분포 Pg(x)가 실제 데이터 분포 Pdata(x)를 근사하도록 학습한다.
- 구성 요소:
- 입력 노이즈 변수 z:
- 무작위성을 주기 위해 사용되는 벡터. (보통 정규분포 N(0, 1)에서 샘플링)
- Generator 함수 G(z;θg):
- 입력 노이즈 z를 데이터 공간으로 매핑하는 함수.
- 파라미터 θg를 가진 미분 가능한 다층 퍼셉트론(MLP) 으로 표현됨.
- 출력:
- 학습 목표:
- 생성된 sample이 Discriminator를 잘 속일 수 있도록 D(G(z))의 값이 1에 가까워지도록 학습한다.
- 이때, D(G(Z))는 G가 만든 가짜를 D가 진짜라고 믿을 확률을 의미한다.
🔍Discriminator 학습
- 목표: 입력된 샘플 x가 실제 데이터인지, Generator가 만든 가짜 데이터인지 정확하게 구분하도록 학습한다.
- 구성 요소:
- 입력 샘플 x:
- 실제 데이터 x∼Pdata 또는 Generator가 만든 샘플 X̂ =G(z)∼pg
- Discriminator 함수 D(x;θd) :
- 입력 x가 real인지 fake인지 판별하는 함수
- 파라미터 θd를 가진 다층 퍼셉트론(MLP) 으로 구성됨
- 출력:
- 실수 값 D(x)∈[0,1]
- 1에 가까울수록 real, 0에 가까울수록 fake
- 학습 목표:
- 진짜 샘플에 대해서는 D(x)→1 (진짜라고 판별)
- 가짜 샘플에 대해서는 D(G(z))→0 (가짜라고 판별)
🔍 D와 G에 대한 minmax game의 목적함수

-
Discriminator D
- 진짜 샘플 x∼Pdata에 대해 D(x)→1
- 가짜 샘플 X̂=G(z)에 대해 D(G(z))→0
- 전체 목적 함수 V(D,G)를 최대화하도록 학습
-
Generator G:
- D(G(z))→1이 되도록 훈련 → Discriminator를 속이도록 학습
- 전체 목적 함수 V(D,G)를 최소화하도록 학습
-
결론: 이와 같은 학습 기준 하에서, G와 D에 충분한 표현 능력(capacity)이 주어지고 학습이 잘 진행될 경우, Generator의 분포 Pg(x)는 실제 데이터 분포 Pdata(x)에 수렴하게 된다.
(→ 비모수적 극한(non-parametric limit)에서는 Pg가 Pdata에 수렴함)
🔍실제 구현 관련 이슈 및 해결 전략
- 계산 복잡도 및 과적합 문제
- Discriminator를 매 학습 단계에서 완전히 최적화하는 것은 계산 비용이 매우 크고, 유한한 데이터셋에서는 과적합이 발생할 수 있다.
- 따라서 실전에서는 다음과 같은 전략을 사용한다:
- Discriminator를 k회 업데이트하고, Generator를 1회 업데이트하는 방식으로 번갈아 학습
- Generator가 천천히 변한다는 전제 하에, Discriminator는 항상 거의 최적 상태에 근접한 상태로 유지된다.
- Generator 학습 초기에 발생하는 문제
- 학습 초반에는 Generator가 만드는 샘플이 너무 엉성하여, Discriminator는 이를 너무 쉽게 가짜로 분류하게 된다 → D(G(z)) ≈ 0 → 손실 log(1−D(G(z)))는 gradient가 거의 0이 되어 학습이 멈춤 (gradient saturation 현상)
- 따라서 Generator 손실을 다음과 같이 바꾼다:

- 최종 수렴점(fixed point)은 같지만, 초기 학습 단계에서 더 강한 gradient를 제공하여 Generator가 더 잘 학습될 수 있게 돕는다.
🔍 GAN 학습 과정에 대한 직관적 설명

- 이 그림은 GAN의 학습 과정을 수식 없이 직관적으로 이해할 수 있도록 도와주는 시각적 설명이다
전체 구조
- 검정 점선: 실제 데이터 분포 Pdata
- 초록 실선: Generator가 만들어내는 분포 Pg
- 파란 점선: Discriminator의 출력 D(x)
- 아래 수평선: 노이즈 z의 입력 영역 (균등 분포)
- 위 수평선: 데이터 영역 x (실제 데이터와 생성된 데이터가 모두 존재할 수 있는 영역)
- 위로 향하는 화살표: z→X̂=G(z) (즉, Generator가 노이즈를 데이터로 바꾸는 과정)
- 이때 Generator는 밀도가 높은 영역에서는 수축, 밀도가 낮은 영역에서는 확장하여 실제 분포에 점점 가까워지도록 학습한다.
단계에 따른 설명
- (a) 수렴에 가까운 GAN 상태:
Pg는 Pdata와 유사하고, D는 부분적으로 정확한 Discriminator이다.
- Generator가 만든 데이터 분포 Pg(x)가 실제 데이터 분포 Pdata(x)와 거의 비슷한 상태이다.
- Discriminator는 여전히 진짜와 가짜를 구분하지만, 완벽하지는 않다.
- (b) Discriminator 학습:
D는 학습을 통해 다음과 같은 형태로 수렴한다.

- 이는 Discriminator가 각 데이터 x에 대해 진짜일 확률을 최적으로 판별하는 방법을 수학적으로 나타낸 식.
- 이때 D*(x)는 Discriminator가 최적으로 학습되었을 때의 출력값을 의미한다.
- (C) Generator 학습:
G는 D가 진짜라고 판단할 가능성이 높은 방향으로, G(z)를 조금씩 조정해 나간다.
- 즉, Generator는 D가 "진짜"라고 착각할 수 있는 방향으로 점점 sample을 생성하도록 학습한다.
-
(d) 최종 수렴 상태:
Pg = Pdata가 되면, Discriminator는 두 분포를 구분할 수 없으며 다음과 같이 수렴한다:

- 진짜와 가짜의 구분이 불가능해져, D는 모든 입력에 대해 "진짜일 확률 50%"라고 판단한다.
- 이 상태가 GAN 학습의 이상적인 수렴 목표이다.
Theoretical Results
🔍 Generator의 분포
- Generator G는 노이즈 z∼pz를 입력으로 받아 G(z)라는 샘플을 생성한다.
- 이때 G(z)로부터 생성된 샘플들의 분포를 Pg라고 한다.
- 즉, G는 암묵적으로 Pg라는 확률 분포를 정의하고 있는 것이다.
🔍 Generator의 목표
- 충분한 학습 시간과 표현 능력(모델 용량)이 주어질 경우, Pg≈Pdata (실제 데이터 분포에 가까워지도록) 수렴하길 원한다.
모델이 무한한 복잡도(용량)을 가질때, 확률 밀도 함수 공간에서의 수렴 성질을 탐구한다.
- minimax game이 Global optimum Pg=Pdata를 갖는다는 것을 증명한다.
- Algorithm 1 이론적 목적 함수를 실제로 최적화하고 있다는 것을 보인다.
→ 이를 통해 Generator가 Pdata를 잘 근사한다는 사실을 뒷받침한다

Global optimality of Pg = Pdata
🔍 고정된 G에 대한 최적의 Discriminator
Proposition 1: Generator G가 고정되어 있을 때, Discriminator D는 다음 수식을 만족할 때 최적이다:

- 즉, x가 진짜 데이터일 확률을 나타낸다. (데이터 샘플과 생성 샘플이 섞여 있을 때, 해당 x가 진짜일 확률)
🔬 증명
- 이때, 아래와 같이 치환하면,
- 이때 이 함수는 y에 대해 concav함으로, y에 대해 미분하여 [0, 1] 범위에서 함수가 최대가 되도록 하는 y를 구하면:

-
따라서 최적의 D(x)는:

-
이때 Discriminator는 실제 데이터와 생성 데이터가 정의된 영역 전체에서만 정의되어도 충분하다.

-
이때 Discriminator의 목적함수는 조건부확율 P(Y=y|x)를 추정하기 위한 log-likelihood를 최대화하는 것으로 해석할 수 있다.
-
여기서 Y는x가 실제 데이터 분포 Pdata(즉, Y=1)에서 왔는지, 혹은 생성된 분포 Pg(즉, Y=0)로부터 왔는지를 나타낸다.

-
여기서 C(G)는 Discriminator가 최적일 때, G의 목적함수를 의미한다.
Theorem 1: Generator G의 목적함수인 C(G)의 Global optimum은 Pg = Pdata일 때 달성되며, 이때의 함수값은 −log(4)이다.
🔬 증명
- (⇒ 방향)에 대한 증명: 만약 Pg=Pdata이면, C(G) = −log4
- Discriminator가 최적일 때, G의 목적함수:
- 이전에 증명한 최적의 Discriminator는 다음과 같다:

- 이때 D*를 V(G, D)에 대입하면, Generator의 목적함수 C(G)는 다음과 같이 정리된다:

- Pg = Pdata 일때,
- 즉. 두 분포가 같으면 위 수식은 다음과 같이 단순화된다:

- 즉,

- (⇐ 방향)에 대한 증명: 만약 C(G)=−log4라면, Pg = Pdata
- 이후 이러한 C(G) = V(D*, G)에서 -log(4)를 빼내어서 다음과 같이 KL divergence의 합으로 나타낼 수 있다:

- 이는 바로 두 분포의 Jensen-Shannon divergence(JSD)와 동일한 형태이다.

- 결론적으로 JSD는 항상 0 이상이며, 최솟값의 JSD가 0일때, 즉 Pg = Pdata일 때만 달성된다.
- 이때, C(G)는 -log 4이므로, Generator가 완벽하게 실제 데이터 분포를 복제한 상태이다.
Convergence of Algorithm 1
Proposition 2: G와 D가 충분한 표현력을 가지고, Algorithm 1의 각 단계에서:
- 주어진 G에 대해 Discriminator가 최적 상태에 도달하고,
- Generator의 분포 Pg가 아래의 목적함수를 최적화하도록 업데이트된다면:

→ 이때 Pg는 Pdata에 수렴한다.
🔬 증명
- 목적함수 V(G, D)를 Generator의 분포 Pg에 대한 함수로 보면 V(G, D) = U(Pg, D)로 나타낼 수 있다.
- 이때 U(Pg, D)는 Pg에 대해 convex한 함수이다.
- 이때 다양한 D 중에서 U(Pg, D)를 가장 크게 만드는 D에서의 기울기는, D에 대해 최대값을 갖는 U(Pg, D) 함수 전체(supD U(Pg, D))의 subderivative에 포함된다.
- 즉, D가 최적일때의 그래디언트로 Pg를 업데이트하면 이는 gradient descent와 동일하다.
- 이때 Theorem 1에서 supD U(Pg, D)는 Pg에 대해 convex하며, global optimum은 Pg = Pdata일때만 달성된다.
- 따라서 Generator의 분포 Pg는 충분히 작은 스텝으로 업데이트 될 경우, 결국 Pdata에 수렴하게 된다.
🔬 실제 구현에서의 Generator 최적화
- 실제 GAN 구현에서는 확률분포 Pg 자체를 직접 다루지 않고, Generator 함수 G(z;θg)를 통해 Pg 를 간접적으로 표현합니다.
- 여기서 θg는 Generator의 파라미터이며, 우리는 Pg 대신 θg 를 최적화한다.
- Generator G는 보통 다층 퍼셉트론(Multilayer Perceptron, MLP) 으로 구성되며, 이는 파라미터 공간에 여러 개의 극점(critical points) 을 만들 수 있다.
- 이론적 분석은 제한적이지만, MLP는 실전에서 매우 좋은 성능을 보여주므로 실용적인 선택지로 간주된다.
Experiments
실험 세팅
🔬 데이터셋:
- MNIST
- Toronto Face Database (TFD)
- CIFAR-10
🔬 모델 아키텍처:
Generator
- ReLU와 Sigmoid 활성화 함수를 혼합 사용
- Generator의 입력으로 노이즈를 줌
Discriminator
- Maxout 활성화 함수 사용
- Dropout을 적용하여 학습 성능 향상
🔬 성능 평가 방법:
- GAN은 정밀한 확률 분포 식이 없기 때문에, 직접적인 Likelihood 계산이 불가능함 → 대신 추정 방식 사용
- 평가 방식:
- Generator G로부터 많은 샘플을 생성
- 이 샘플들로 Gaussian Parzen Window를 적합시켜 확률 분포를 근사
- 이 분포를 기준으로 테스트셋의 log-likelihood를 추정
- Gaussian의 분산 (σ)
- σ 값은 validation set을 통해 cross-validation으로 선택
- 특히 TFD는 fold마다 σ를 따로 튜닝하고 평균 log-likelihood를 계산
- 평가 방식의 한계:
- 고차원에서는 Parzen Window 방식이 부정확하고 추정 분산이 크다.
- 하지만, 현재로선 정확한 likelihood는 계산 못하는 생성모델을 평가하는 최선의 방법이다.
실험 결과

- GAN은 MNIST, TFD에서 모두 경쟁력 있는 log-likelihood 결과를 보였다.
시각적 품질

- 가장 오른쪽 열은 각 샘플의 가장 가까운 훈련 이미지(nearest neighbor) 를 함께 보여준다.
- 무작위로 뽑은 sample이며, 좋은 sample만을 선별한 것이 아니다.

- z 공간에서 두 점 사이를 선형 보간한 값들을 Generator의 입력으로 사용하여 생성된 숫자 이미지들
기존 모델보다 낫다고 주장하진 않지만, 기존 방법과 경쟁력 있는 수준이라고 평가한다.
Advantages and disadvantages
![업로드중..]()
Disadvantage
- 명시적 분포 없음: Generator는 확률분포 Pg(x)를 명시적으로 제공하지 않음
- 학습 균형 필요: G가 D보다 빨리 학습되면 collapse 발생 → 생성 데이터의 다양성이 부족
- 훈련 불안정성: D를 충분히 자주 업데이트하지 않으면 학습이 불안정해짐
Advantage
- Markov Chain 불필요: 느리고 복잡한 샘플링 과정 없이 직접 sample 생성 가능
- 역전파만 사용: 별도의 추론 과정 없이 backpropagation으로 학습
- 구조 유연성: 다양한 함수 및 네트워크 구조를 적용 가능
- 데이터 복사 없음: 실제 데이터를 직접 복사하지 않음
- 선명한 분포 표현: Markov 기반 모델보다 더 sharp하거나 even degenerate한 분포도 학습 가능
Conclusions and future work
- Adversarial Framework는 확장성이 뛰어나며, 다양한 방식으로 응용 가능하다:
- 조건부 생성 모델 (Conditional GAN)
- 조건 변수 c를 G와 D의 입력에 추가 → p(x | c) 형태의 데이터 생성 가능
- 추론 네트워크 학습 (Approximate Inference)
- x로부터 z를 추정하는 보조 네트워크 학습 가능
- Wake-Sleep 알고리즘과 유사하지만, 학습 완료된 G를 고정한 상태로 학습 가능
- 조건부 분포 근사 (Conditional Modeling)
- 입력 벡터 x의 일부
S에 대해 p(x_S | x_not_S) 모델링 가능
- 파라미터 공유로 확률적 MP-DBM 구조 구현 가능
- 준지도 학습 (Semi-Supervised Learning)
- D나 추론 네트워크의 중간 피처(feature) 를 활용해
- 라벨이 적은 데이터 환경에서도 분류 성능 향상 가능
- 학습 효율 개선 (Training Efficiency)
- G와 D의 업데이트를 더 잘 조율하거나,
- 더 나은 z 샘플링 전략을 사용해 학습 속도 및 안정성 향상 가능
Adversarial 모델링 프레임워크는 실용적이며, 다양한 분야에 적용 가능함을 입증한다.
위와 같은 연구 방향들은 향후 GAN을 더욱 강력하고 유연한 도구로 발전시키는 데 기여할 수 있다.