시작하기에 앞서, Generative Model을 간단하게 살펴보자.
머신러닝에는 크게 지도학습(Supervised Learning), 비지도학습(Unsupervised Learning), 그리고 강화학습(Reinforcement Learning) 3가지로 구분할 수 있다. 이 글에서는 비지도학습중에 대표적으로 클러스터링(Clustering)과 생성모델(Generative Model)이 있다. 오늘은 그중에서도 생성모델에 한번 집중해보자.
생성모델은 주어진 학습 데이터를 학습하여 학습 데이터의 분포를 따르는 유사한 데이터를 생성하는 모델이다. 이러한 생성모델에는 여러 가지 방식들이 있는데, 학습 데이터의 분포를 기반으로 할 것인지(Explicit Density) 혹은 그러한 분포를 몰라도 생성할 것인지(Implicit Density)로 나뉘게 된다. 이러한 학습 데이터를 분포를 구하는 방법은 또 직접적으로 구하는 방법(Tractable Density), 단순히 추정하는 방법(Approximate Density)로 나뉘게 된다. 여러 가지 방식이 있지만 이 글에서 다루게 될 방법은 바로 적대적 생성모델(Generative Adversarial Networks, GAN)이다.
GAN의 장점은 무엇일까?
학습 데이터의 분포를 모르더라도 학습을 진행하면서 학습 데이터의 분포와 가까워지도록 학습한다는 점이 가장 큰 장점이라고 생각한다. 이는 학습 데이터의 분포를 직접적으로 사용하지는 않기에 마르코프 체인이나 특별한 방법이 없이도 학습이 된다는 것이며, GAN의 목적함수를 최적화해보면 학습 데이터의 분포와 생성한 데이터의 차이를 줄여주는 방향으로 학습한다는 것을 확인할 수 있다.
Generative Adversarial Network, GAN
Introduction
Concept of GAN
GAN을 설명하기 위해서, 가장 많이 드는 예시는 위조지폐범과 경찰이다. 위조지폐를 만드는 사람(Generator)은 더욱 진짜 같은 위조 지폐를 만들기 위해서 노력할 것이고, 경찰(Discriminator)은 위조 지폐를 진짜 지폐와 잘 구분하려고 노력할 것이다. 한쪽이 잘하면 반대쪽도 잘하려고 노력할 것이고, 이러한 경쟁(Adversarial)이 반복되면 결국에는 양쪽 모두 정말 뛰어난 실력을 갖추게 되며 위조지폐는 진짜 지폐와 거의 차이가 없을 정도가 될 것이다. 이러한 컨셉이 바로 GAN이다.
여기서 GAN이 끝에 '네트워크(Networks)'라는 단어가 붙은 이유는 바로 이 두 모델이 다층 인공신경망(Multilayer Perceptrons)으로 만들어졌기 때문이다. 두 모델은 역전파(Back Propagation)를 통해서 학습되며, 더 이상 데이터를 생성하는 동안 사용되는 Approximate Inference와 Markov Chains이 필요하지 않게 된다.
Adeversarial Nets
Framework of GAN
즉, 이 GAN이라는 새로운 프레임워크는 동시에 두 가지 모델을 학습하게 된다. 두 가지 모델은 실제 학습 데이터에서 나온 데이터를 구분하여 확률을 추정하는 Discriminator와 실제 학습 데이터를 따라 만드는 Generator이다. 앞서 말했듯, 두 모델은 서로 경쟁하며 학습할 것이고, 이는 'Minmax Game' 이라고도 불린다. (왜 Minmax Game인지는, 아래에서 Object Function과 함께 다루겠다.) 최종적으로는 가짜와 진짜를 구분할 수 없을 정도가 되어 판별하는 확률이 1/2가 되는 것이 이상적이다.
Discriminator
Discriminator는 학습 데이터와 Generator이 생성한 가짜 데이터를 구분하고 확률을 추정한다. Discriminator의 목적함수(Object Function)는 가짜는 가짜로 식별하고, 진짜는 진짜로 식별할 수 있도록 설계한다. 여기서 D(x)는 진짜, D(G(z))는 가짜에 대한 Discriminator가 추정한 확률을 의미한다. Discriminator는 목적함수가 최댓값을 갖도록 학습을 진행하며, D(x)=1, D(G(z))=0 일때 최대값을 갖는다.
Generator
Generator는 무작위로 생성된 Noise(Latent Code)로 가짜를 생성한다. Generator의 목적함수는 Discriminator가 식별하지 못하는 가짜를 생성할 수 있도록 설계한다. 따라서 아래의 목적함수를 최소화하는 방향으로 학습을 진행한다.
Theoretical Results
Why does GAN works?
이를 종합하면, GAN의 목적함수는 다음과 같다. Discriminator는 목적함수가 최대화하는 방향으로, Generator는 목적함수가 최소화하는 방향으로 학습시킬 것이다. 이를 Minmax Game이라고도 한다.
최종적인 목표는 진짜 같은 가짜를 생성하는 것이다. 즉, 학습 데이터의 분포와 유사한 분포를 같은 데이터를 생성하는 것이다. 그렇다면 위 목적함수가 데이터의 분포와의 거리를 좁혀주는 함수라는 것일까? 이를 한번 이론적, 수학적으로 확인해보자.
Optimal Discriminator D
먼저, Generator가 고정되었다고 가정하고 Discriminator를 최적화시켜보자. 우리가 실제로 관찰하는 대상은 z가 아니라 G(z)이다. 따라서, y=G(z)에 대하여 다음과 같이 쓸 수 있고, 이를 기댓값의 정의에 의해 정리하면 다음과 같다..
D에 관한 미분을 통해 최적화된 D를 구하면 다음과 같다.
Global Optimality
최적화된 D를 고정하고 다시 목적함수를 정리해보자.
이때, C(G)의 전역적 최적해(Global Minimum)는 오직 pg = pdata로 유일해를 가진다고 하자. 이때 식을 다시 정리하면, 다음과 같다.
KL, Kullback-Leibler Divergence은 두 모델이 얼마나 비슷하게 생겼는지 알기 위한 척도이며, 근사 시 발생하는 정보 손실량의 기댓값을 의미한다. 이를 Symmetric 하게 개량한 것이 바로 JSD, Jensen-Shannon Divergence이다. 따라서 JSD(g, data) = JSD(data, g)이며, 두 확률 분포 사이의 거리를 의미한다. 다시 말해서, 위의 목적함수를 최적화하면 Generator가 최소화되는 것은 학습 데이터의 분포와 생성된 데이터의 분포가 가까워지는 것이라는 결론을 내릴 수 있다.
pg = pdata의 유일한 전역적 최적해를 갖고, 알고리즘은 이에 수렴하는 방향으로 진행된다는 점에 대한 증명은 여기로 가면 자세하게 정리되어 있다.
Conclusion
GAN의 컨셉과 이론적인 부분을 살펴보았다. GAN 이전의 모델과 비교하면, 상당히 획기적인 모델이라고 생각한다. 물론, 초기 모델이기 때문에 여러 단점도 존재한다. 이는 뒤에 개선하여 발전된 다양한 모델들을 하나씩 살펴보면서 다루기로 하자.
Reference
- Ian J. Goodfellow, Generative Adversarial Nets, 2014
- Ian J. Goodfellow, Tutorial on Generative Adversarial Networks, 2017
- 생성모델(Generative model)이란 무엇일까?
- 쉽게 씌어진 GAN
- Do you know GAN?
의견과 질문은 언제나 감사합니다.
'Paper > Generative Model' 카테고리의 다른 글
Conditional Generative Adversarial Networks (0) | 2022.03.16 |
---|