adversarial process를 이용한 generative model
두 개의 모델을 동시에 train
1. generative model G
- 데이터 분포 capture
- D가 실수할 확률을 maximize하도록 train
- 화폐 위조자
2. discriminative model D
- 샘플이 training data(실제 데이터, G가 생성한 데이터X) 로부터 나왔을 확률 추정
- 화폐 위조자를 detect하는 경찰
=> 이 둘이 서로 경쟁하는데, G에서 생성된 게 진짜 데이터와 구별할 수 없을때까지 반복
이 논문에서는 특별한 case: adversarial nets에 대해 다룸.
- generative model: multilayer perceptron을 통해 random noise를 passing하면서 샘플 생성
- discriminative mdoel: multilayer percpetron으로 구성
- 이 경우, 두 모델 모두 backpropagation, dropout 알고리즘을 통해 train할 수 있고, 생성 모델에서 데이터 생성의 경우는 forward propagation만 사용.
- approximate inference or Markov chains 필요 X

Value function은 위와 같은데, G는 Value function(V)를 최소로 만들고 싶어하고, D는 V를 최대로 만들고 싶어한다.
이 value function은 loss function과 비슷한 느낌으로 이해해도 될 것 같다?!
하나씩 살펴보면,
D의 입장에서는 classification error를 최소화하는게 목적. 즉, real image에 대해서는 1의 값을, fake image에 대해서는 0의 값을 부여하고싶어한다.
logD(x)+log(1-D(G(z)))에서, D(x)는 real data이므로 1에 가깝게, D(G(z))는 fake data이므로 0에 가깝게 추정?하고 싶을 텐데, 즉 V(D,G)를 최대로 만들고 싶어한다.
G의 입장에서는 D를 속이는게 목적.
log(1-D(G(z)))에서, D(G(z))는 fake data인데, 이거를 1에 가깝게 만들고 싶어한다.
즉, V(D,G)를 작게 만들고 싶어한다.

파란색이 D의 분포, 검정색이 real data인 x의 분포(P_x), 초록색이 fake data, generated data인 G의 분포(P_g)
(a)->(d)로 갈수록, 즉 train과정이 진행될수록 P_g가 P_x에 가까워지고, (d)에서는 둘이 같아짐으로써(gloabl optimum) D가 더이상 구별할 수 없게 된다. 즉, D(x) = 1/2

알고리즘을 살펴보면, 위의 value function이 구현된 것은 동일한데, 한가지 눈에 띄는 부분이 있다.
바로 D와 G를 update하는 방식인데,
하나의 training iteration 동안, k steps만큼 discriminator를 update하고,
그 뒤 1번의 generator update가 일어난다.
(1:1로 반복되는게 X)
=> D를 여러 번 먼저 학습시켜서 어느 정도 적절한 수준의 구분 능력을 갖게 만든 다음, G를 한 번 업데이트 하는 방식을 취함. ?!

theroetical 수식 부분은 일단 MNIST 실습을 먼저 간단히 해보고 나서 다시 살펴보려고한다.
'deep learning' 카테고리의 다른 글
| [논문공부] Learning Transferable Visual Models From Natural Language Supervision - CLIP 논문 (0) | 2025.11.18 |
|---|---|
| GPT 구조 이해하기 (0) | 2025.08.11 |
| BERT 구조 이해하기 (2) | 2025.08.08 |
| [논문 리뷰] Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps (0) | 2025.05.10 |