Reference
•
Github repository: https://github.com/goodfeli/adversarial
•
Tutorial Code: Colab Notebook
그 유명한 GAN이다. GAN은 1) Generative: 특정한 분포(i.e. 사람의 얼굴 이미지의 픽셀 값 분포)와 최대한 유사한 분포의 데이터를 생성하는 모델인데, 2) Adversarial: 특정한 분포를 모사하여 데이터를 생성하는 모델(Generator)과 주어진 데이터가 목적하는 분포에서 발생했는지, 그렇지 않은지(G에서 생성된 데이터인지)를 구별하는 모델(Discriminator)을 경합시킴으로써 Generator를 학습시키며, 3) Net: 인공 신경망으로 모델을 구성한다. 한 마디로 두 반대되는 목적을 가진 모델 G와 D를 경쟁시킴으로써 특정 데이터의 분포를 모사하는 모델 G의 성능을 끌어올리는 알고리즘이다.
Adversarial Nets
모델 자체는 간단하다. 우선 모델 는 random noise variable 로부터 목적하는 데이터의 분포인 로의 mapping을 학습하는 모델이다. 이 때 mapping은 와 같이 표기할 수 있고, 이러한 mapping은 미분 가능한 다층 신경망으로 표현되는 함수이다. 한편 모델 는 어떠한 데이터가 주어졌을 때 그 데이터가 원래 분포인 로부터 왔는지, 그렇지 않은지(로부터 왔는지)를 구별해내는 모델이다. 즉 는 데이터 가 원래 분포 로부터 왔을 확률을 나타낸다. 역시 미분 가능한 다층 신경망으로 표현되는 함수이다.
이제 의 학습 목표는 를 최대한 속이는 것이며, 의 학습 목표는 를 최대한 알아차리는 것이다. 즉 는 가 최대한 1에 가까운 값을 출력하도록 학습되어야 한다. 한편 는 가 최대한 1에 가까운 값을 출력하는 동시에 가 최대한 0에 가까운 값을 출력하도록 학습되어야 한다. 이는 다음과 같은 함수 에 대한 two-player minimax game으로 표현될 수 있다.
이제 위와 같은 목적 함수를 가지고 와 를 번갈아가며 학습하면 된다. 이 때 논문에서는 한 번의 iteration마다 를 번, 그리고 를 1번 학습함으로써 가 optimal solution과 가까이 유지되면서 천천히 를 개선하는 방식을 권한다. (그 이유는 Optimizing D to completion in the inner loop of training is computationally prohibitive, and on finite datasets would result in overfitting이라고 쓰여 잇는데 무슨 소리인지 잘 모르겠다. 차라리 밑의 theoretical results를 보고 나면 이해가 된다.) 또 의 경우 discriminator가 뛰어난 성능을 보일 경우 가 0에 매우 가까울 것이기 때문에(그리하여 학습이 잘 이루어지지 않을 것이기 때문에) 를 최소화하는 것보다는 를 최대화하는 식으로 학습하는 것을 권한다.
위의 알고리즘을 pseudo code로 표현하면 다음과 같겠다. Mini(Generator)Max(Discriminator) game이기 때문에 를 업데이트할 때는 gradient ascending, 를 업데이트할 때는 gradient descending이 필요하다는 점에 주의하자.
for _ in range(num_iters):
for _ in range(k):
z = sample m noise samples from p_z
x = sample m real data samples from p_d
update discriminator by _ascending_ gradient dV(D, G)_d
z = sample m noise samples from p_z
update generator by _descending_ gradient dV(D, G)_g
Python
복사
Theoretical Results
한편 이 논문에서는 굉장히 훌륭하게도 알고리즘을 소개하는 데에 그치지 않고, 이러한 알고리즘의 이론적 토대를 제공한다. 요는 "표현력의 제한이 없다는 가정 하에, 소개된 minimax game은 에서 global optimum을 가지고, 소개된 알고리즘을 통해 이러한 global optimum에 도달할 수 있다"는 것이다.
위의 statement를 증명하기 위해 논문에서는 먼저 1) 주어진 임의의 에 대한 optimal discriminator 라는 것을 보이며, 2) 이러한 optimal discriminator 에 대해 의 training criterion의 global minimum이 일 때만 달성된다는 것을 보인다. 그리고 마지막으로 3) 표현력의 제한이 없는 상황에서 소개된 알고리즘의 매 iteration에서 가 optimum에 도달할 수 있고, 가 업데이트되어 로 수렴할 수 있음을 보인다.
첫 두 증명은 따라갈 만 한데, 마지막 부분의 증명이 매우 까다롭다. 왜 에 대한 criterion function 가 convex function인지 등... 어쨌거나 하고자 하는 말은 잘 알겠다! 물론 neural networks에 표현력의 제한이 없는 것은 아니지만, neural networks가 모든 함수에 대한 approximation을 할 수 있다는 측면에서 위의 이론적 토대를 뒷받침할 수 있는 (현재까지는) 가장 든든한 모델일 것이다.
예시 코드는 맨 위에서 언급된 나의 colab notebook에서 볼 수 있다. MNIST 데이터를 모사하는 매우 간단한 문제이지만, 이러한 직관적인 알고리즘이 괜찮게 작동한다는 측면에서 굉장히 신기하다.
E.O.D.