< Generative Adversarial Nets : GAN >
" 생성사(Generator)와 식별자(Discriminator)의 선의의 경쟁 "
0. Abstract
두 명의 플레이어가 하는 "minmax-game"의 형태이다.
D는 G의 성능을 minimize하는 것, G는 D가 실수할 확률을 최대화(max)하는 것이 학습 과정이다.
최선의 Solution은 G가 기존 training data 분포에서 뽑아내고 D가 식별 할 때,
전체 과정은 Backpropagation으로 학습 가능하다.
1. Introduction
이전의 생성 모델들은 큰 임팩트가 없었는데, MLE와 다른 관련된 과정에서 발생하는 계산 에 있어서, 계산 불가한 확률 연산이 많아서 추정하기가 어려웠기 때문이다.
그리고 생성 환경에서 부분적인 선형 단위의 이점을 활용하기 어려웠던 점도 한 몫 했다.
이 게임내의 경쟁은 모조품을 식별불가하게 만드는 것을 목표로 G,D를 발전시킨다.
G는 위조 지폐를 진짜처럼 만들어내는 것이고, D는 이를 계속 제대로 식별하는 과정을 거치며 훈련하는 것이다.
생성 모델(G)은 random noise를 거치며 multilayer perceptron을 통해 샘플을 생성한다.
식별자(D)도 마찬가지로 multilayer perceptron을 이용한다.
우리는 이러한 경우를 "adversarial nets"라고 부른다.
그리고 우리는 두 가지 모델을 backpropagation과 dropout을 통해서만 학습시킬 수 있다. ( G는 forward propagation만을 사용한다 )
2. Related work
그냥 읽어보면 된다. VAE와 GAN에 대한 간략한 설명이 있다.
3. Adversarial nets
G와 D가 모두 multilayer perceptrons를 이용한다면,
Generator의
Discriminator 또한
D에 대해서는 맞출 확률을 maximization하는 과정을 거친다. 그러면서 동시에 G는 D의 맞출 확률을 minimize하는 과정을 거친다.
D가 너무 잘 분별한다면
하지만 여기서 G가
4. Theoretical Results
generator G는
중요한 것은 global optimum이
수식 그대로, 실제 분포에서 Generator가 데이터를 생성해냈을 때를 말하는 것이다. 그렇게 되면 Discriminator가 제대로 분류를 하지 못하는 상황이 되어
(1) 파란 선 : Discriminative distribution(0 = 가짜, 1 = 실제 데이터 분포로부터 온 데이터 )
(2) 검정 선 : 실제 데이터 분포
(3) 초록 선 : Generator distribution
먼저 (a)를 보면 Generator distribution이 실제 data distribution과는 차이를 보여 초반에는 Discriminative distribution이 1에서 시작해서 점점 0으로 수렴하는 모습을 보인다.
그리고 (b)를 보면 점점 학습과정을 거치면서 Discriminator가 안정적으로 예측을하게 되고
이에 따라, Generator도 실제 data distribution을 닮으려 유사해져가는 모습을 볼 수 있다. 그러면서 Discriminator가 점점 분류하기 어려워지게 된다.
결국에는 (d)처럼 Generator distribution과 실제 data distribution이 동일해지면서 Discriminator가 반반의 확률로 예측을 하게 된다. 이 때가 Global optimum이다.
밑에 직선들은
4-1. Global Optimality of 𝑝𝑔=𝑝𝑑𝑎𝑡𝑎
Proposition 1.
G가 고정됐을 때, optimal discriminator D는 다음과 같다.
이를 증명하기 위해서는
확률이기 때문에 분포를 값에 곱해줘야한다.
여기서
위 식에서 optimum할 때를 찾아야하기 때문에 미분을 해준다.
이를 넘겨서 전개하면 다음과 같다.
이를 y에 대한 식으로 전개하면
그래서 위의
다시 말하지만 D는
max문제를 풀면 위처럼 다시 정의가 된다.
아까전에 global optimum은
이 때
이것이 best possible value of
KL-Divergence식은 두 분포간의 거리를 나타낸다.
왜 뒤에 KL식이 붙었는지는 다음의 과정을 통해 나타난다.
KL-Divergence식이 다음과 같다.
이전에 Global optimum일 때의
여기서
그러면 식이 다음과 같이 바뀐다.
여기서
그래서 이대로 KL-Divergence식을 적용하면
위의 식이 도출되게 되는 것이다.
또한 이는 JSD를 이용해 또 바꿀 수 있다.
여기서 중요한 점은
Proposition 2.
본문을 보면
따라서
5,6,7 은 그냥 읽기 !
GAN을 통해서 데이터와 유사한 이미지들을 생성해낸 모습을 볼 수 있다!
GAN-Zoo에서 더 많은 GAN을 만나볼 수 있다.
https://github.com/soumith/ganhacks/issues
GAN Toy code는 추후에 게시할 것이다!