hwchung 님의 블로그
[Paper Review] NeurIPS 2014, Generative Adversarial Nets 논문리뷰 본문
[Paper Review] NeurIPS 2014, Generative Adversarial Nets 논문리뷰
hwchung 2026. 1. 26. 13:56Generative Adversarial Nets
NeuIPS 2014
0. Abstract
We simultaneously train two models: a generative model G that captures the data distribution, and a discriminative model D that estimates the probability that a sample came from the training data rather than G.
→ 하나는 생성 모델 G. 실제 학습 데이터와 구분하기 어려운 가짜 데이터를 만들어 데이터 분포를 모사하려는 역할을 함.
→ 다른 하나는 판별 모델 D로. 입력된 샘플이 진짜 학습 데이터에서 나온 것인지 아니면 생성 모델 G가 만들어낸 가짜 데이터인지를 확률적으로 판단함. 학습 과정에서 G는 D를 속이기 위해 점점 더 그럴듯한 데이터를 생성하려 하고, D는 G가 만든 가짜를 더 정확히 구별하려 하면서 두 모델이 서로 경쟁적으로 adversarial하게 성능을 끌어올림. 이게 반복되면서 최종적으로 G는 실제 데이터 분포에 매우 가까운 샘플을 생성할 수 있게 됨.
1. Introduction
Deep generative models have had less of an impact, due to the difficulty of approximating many intractable probabilistic computations that arise in maximum likelihood estimation and related strategies, and due to difficulty of leveraging the benefits of piecewise linear units in the generative context. We propose a new generative model estimation procedure that sidesteps these difficulties. → 그동안 deep generative 모델은 분류·인식 모델만큼 큰 성공을 거두지 못함. 그 이유는 두 가지. 첫째, 최대우도추정(MLE) 같은 기존 학습 방법에서는 계산이 사실상 불가능한(intractable) 확률 계산들이 많이 등장해서 학습이 매우 어려움. 둘째, 분류 모델에서 큰 장점을 보여준 piecewise linear unit(ReLU 같은 활성함수)의 이점을 생성 모델에서는 제대로 활용하기가 어려움.
This framework can yield specific training algorithms for many kinds of model and optimization algorithm. → 다양한 모델 구조와 최적화 알고리즘에 대해 구체적인 학습 방법을 만들어낼 수 있는 일반적인 frame이라고 할 수 있음.
In this article, we explore the special case when the generative model generates samples by passing random noise through a multilayer perceptron, and the discriminative model is also a multilayer perceptron. → 생성 모델 G: 랜덤 노이즈 → MLP → 샘플 생성, 판별 모델 D: 입력 샘플 → MLP → 진짜일 확률 출력
We refer to this special case as adversarial nets. In this case, we can train both models using only the highly successful backpropagation and dropout algorithms and sample from the generative model using only forward propagation. No approximate inference or Markov chains are necessary.
2. Related Work
GAN과 이전 Related Work와의 차별점
(1) 샘플링에 Markov chain이 필요 없음.
(2) feedback loop 없이 forward pass 한 번이면 됨.
→ ReLU 같은 piecewise linear unit을 문제없이 사용 가능 … Markov chain, feedback loop(출력이 다시 입력으로 들어감.) → 같은 네트워크를 여러 번 반복 적용해서 샘플을 점점 다듬는다고 할 수 있음.
→ GAN은 반복대상이 파라미터이고 Markov chain은 반복대상이 샘플임.
3. Adversarial nets


(1) 생성기 분포 p_g를 학습하기 위해, 먼저 노이즈 변수 p_z에 대한 사전 분포 p_z(z)를 정의함.
(2) 그 노이즈를 데이터 공간으로 보내는 함수 G로 매핑함. (G: MLP, theta_g: 생성기 파라미터)
(3) 판별기 D도 정의. 판별기 D도 마찬가지로 MLP, 스칼라 하나를 출력함. 출력된 스칼라는 1에 가까우면 진짜, 0에 가까우면 가짜.
(4) D의 학습 목표는 진짜 데이터 → 1, G가 만든 가짜 → 0.
(5) G의 학습 목표 D가 가짜라고 판단하지 못하게 만드는 것.
(6) 결과적으로는 D는 V를 최대화하는 게 중요하고, G는 V를 최소화하는 게 중요함.

완전하게 D를 최적화 하는 건 안됨. D를 완벽하게 최적화하면 문제가 두 가지임. 먼저, 계산량이 너무 크고, 유한 데이터에서 D가 과적합될 수 있음.
대신에, D를 k번 업데이트, G를 1번 업데이트하는 것을 반복함. → D가 항상 거의 최적 상태에 있도록 유지하지만 G가 너무 빠르게 변화하지 않게 유지하는 게 중요함.
다만 초기에는 G가 poor함. 그래서 목적함수를 바꿔서 gradient 문제를 피함. 원래의 목적함수로 가면 gradient vanishing 문제가 생길 수 있음.

black은 real data distribution임. 실제로 관측된 학습 데이터가 만들어진 분포라고 할 수 있음. 맞추고 싶은 target이라고 할 수 있음.
green은 G가 만든 data distribution임. 처음에는 조금 엉망이고, 학습하면서 점점 black을 닮아감.
z를 sample 한다는 게 이해가 잘 안 가서 정리를 조금 해봤는데, 노이즈 z를 하나 뽑아서 G를 거치면서 z를 데이터 x로 변환함. x가 곧 가짜 데이터 샘플이 되는 것임.
진짜 데이터가 많은 구간 → z를 많이 보냄, 진짜 데이터가 적은 구간 → z를 덜 보냄.


G는 확률분포를 직접 쓰지 않음. 먼저 노이즈 z를 p에서 샘플링. 그 z를 생성기 G에 넣어서 x = G(z)를 만듦. 이렇게 나온 x들의 집합 전체가 이루는 분포를 p_g(x)라고 부름. 그래서 생성기 분포 p_g가 진짜 데이터 분포를 잘 근사하는 추정치(estimator)가 되는 것이 가능함.