Abstract
본 논문에서는 적대적 과정을 통해 generative model을 추정하는 새로운 framework를 제안하였다.
데이터의 분포를 포착하는 생성자 G와 sample이 G가 아닌 training data로부터 나왔을 확률을 추정하는 판별자 D가 동시에 train되는 것이 핵심이다.
G는 D가 실수를 할 확률을 최대화하는 방향으로 학습되고 D는 그 실수를 최대한 줄이려는 방향으로 학습된다. 즉, 게임이론의 한종류인 minimax two-player game(추정되는 최대의 손실을 최소화하는 기법, 서로 최선의 선택을 한다고 가정)으로 귀결된다.
이 게임에서는 G가 training data distribution을 갖게되고, D가 sample을 맞게 분류할 확률이 1/2에 도달하게 되는 unique한 solution이 존재한다.
G와 D가 multilayer perceptrons로 정의된다면, 전체 시스템이 backpropagation으로 훈련될 수 있으며, 더 이상 기존의 기법들이었던 Markov chain이나 근사추론방법들은 training이나 generation of samples에서 사용할 필요가 없다.
Introduction
2014년 당시 딥러닝의 잠재력은 많은 인공지능 응용 분야에서의 데이터의 확률 분포를 표현할 수 있는 풍부하고도 계층적인 모델을 만들 수 있는 것에 있었다. 가장 striking한 success는 바로 discriminative model이었다. 이 model은 고차원이고, 풍부한 감각 데이터를 class label로 분류하는 역할을 하였다. 이 성공은 backpropagation과 dropout algorithm에서부터 기인하였고, piecewise linear units을 사용해 well-behaved gradient를 가지게 된 것도 한몫하였다.(gradient vanishing 문제를 해결)
What is piecewise linear unit?
구간이 나눠진 선형함수로서 대표적으로 ReLU, leaky ReLU와 같은 활성화함수가 있다.
continuous piecewise linear unit
그에 반해 deep generative model은 아래의 이유로 인해 작은 impact를 보여주고 있었다.
본 논문에서는 이러한 difficulities를 해결할 수 있는 새로운 generative model을 제안하였다.
제안된 Adversarial nets framework은 다음과 같은 특징을 갖는다.
본 논문에서는 G가 multilayer perceptron(MLP)에 random noise를 통과시켜 sample을 생성하는 방법을 소개하고 있으며, D 역시 MLP이다. 이러한 case를 adversarial nets라고 정의하였다. 또한, Markov chain이나 다른 근사 추론 방법을 제외하고 오직 backpropagation, droput, ReLU와 only forward propagation을 이용한 G에서 나온 sample을 가지고 두 모델(G와 D)를 훈련시킬 수 있다.
Adversarial nets
이제 앞서 정의한 adversarial nets의 구조와 훈련과정에 대해 좀 더 알아보자.
G의 분포 P(g)를 원본 sampling data x에 대해 학습하기 위해, G의 input noise 변수(z)에 대해 사전분포 Pz(z)(=noise로 sampling을 할 수 있는 확률 분포)를 정의하였다.(What is 사전분포?) 노이즈 변수의 데이터공간에의 매핑은 G(z; θ(g))로 표현하고, 이는 G가 θ(g)라는 파라미터를 가진 MLP임을 의미한다.
D도 마찬가지로 D(x;θ(d))인 MLP이고 output으로 x가 p(g)가 아닌 원본 data distribution에서 왔을 확률을 반환한다.
D는 training example과 G로부터 나온 sample을 정확하게 맞는 라벨에 할당하는 확률을 최대화하게끔 훈련되고, G는 동시에 log(1-D(G(z))를 최소화시키도록 훈련된다.
즉, 아래와 같은 two-player minimax game이 value function V(G,D)라는 이름으로 진행된다.
이론적으로, G와 D가 enough capcity를 갖고 있으면(정확히 무슨말? 충분한 데이터셋?) G가 원본 data generating distribution을 모사할 수 있다.
실증적으로는, 이 minimaxgame은 iterative하고 numerical한 approach를 사용해야한다.(한번에 끝나지 않음)
만약에 D를 inner loop에서 혼자 optimizing시킨다면, 많은 계산을 필요로하게 되고 유한한 데이터일경우 overfitting문제가 발생한다. 이를 방지하고자, 저자들은 k steps of optimizing D and one step of optimizing G라는 적절한 교차 훈련방법을 제시하였다. 덕분에 G는 천천히 변화하면서 D는 optimal solution에 근접할 수 있게 된다.
그러나, 실제로 위의 V(G,D)를 adversarial Nets의 학습에 이용하면 G에게 gradient를 주지 못할 수 있다. 만약, G가 Pg가 Pdata을 따라가지 못한다면, D는 높은 확률로 G에서 나온 샘플을 가짜로 구별한다. 이때 log(1-D(G(z))를 이용하면 초기 그래디언트가 너무 작아 학습이 원활하게 이루어지지 않는다. 본 논문에서는 이를 방지하기 위해 minimize log(1-D(G(z))를 maximize log(D(G(z))로 대체하여 초기에 강한 gradient를 주었다고 한다.(혹은 minimize -log(D(G(z)))
*개인적인 생각: log(1-x)의 형태보다 log(x)의 형태가 초반 기울기가 훨씬 크다(x가 0부터 시작해서 점점 증가) > 그래서 차용
Generative adversarial nets의 training 과정
위 그림을 보면서 adversarial net의 훈련과정에 대해 좀 더 알아보자.
horizontal line을 먼저 살펴보면 z에서 x로 화살표가 향하면서 x = G(z)로 mapping이 되는 것을 볼 수 있다. 이때 매핑된 z의 샘플들은 uniform distribution에서 뽑혔지만, non-uniform distribution인 P(g)를 표현하게 된다. 그림을 보면 G는 G(z)을 나타내는 arrow들이 밀집된 곳에 high density를 부여하고, 그렇지 않은 곳에는 low density를 부여해서 확장함으로써 P(g)를 표현한 것을 알 수 있다.
각각의 그림은 다음의 설명을 살펴보자.
Theoretical Results
G는 확률분포 Pg를 직접 정의하는 것이 아니라, z로부터 얻어진 G(z)(x로 mapping된 샘플)들의 분포를 바탕으로 암묵적으로 정의한다.(간접적으로 likelihood 최대화)
*likelihood: 데이터가 특정분포로부터 만들어졌을 확률
고정된 파라미터 세타를 가지는 분포
일반 likelihood
log-likelihood
따라서, 이제 설명하는 알고리즘이 Pdata의 좋은 추정치가 되도록(enough capacity, training time 확보 필요)할 필요가 있다.
GAN algoithm의 pseudo-code
알고리즘은 간단하게 다음과 같은 과정을 거친다
2. 1 step의 Generator optimizing
그런데 이런 알고리즘 수행에 앞서 V(G,D)라는 minmax game의 objective가 Pg = Pdata에서 global optimum을 가지고, 위의 알고리즘을 통해 Pg가 Pdata로 수렴할 수 있는지에 대해 증명해보겠다.
위의 증명은 결국 two-player minimax game의 global optimality는 Pg = Pdata일뿐이라는 것을 알려준다.
Experiments
위와 같은 방법으로 실제 데이터에 적용해본 결과, Adversarial nets가 MNIST와 TFD 둘다 좋은 모습을 보여준 것을 확인할 수 있었다.
그러나 이러한 likelihood 추정 방식에는 high variance , not perform well in high dimensional spaces 등의 문제가 있었지만 저자들의 능력상 한계이고, 이것이 최고의 가능한 방법이었다고 한다.
맨 오른쪽 열 노란색 그림: generator가 생성한 sample들
위의 사진은 adversarial net의 generator가 실제로 생성한 sample과 원본 sample을 비교한 사진이다. Sample들은 cherry-picked 되지 않았으며, random-drawed 되었다. (c)와 (d)의 사진들을 잘 보면, 노란색 테두리의 image들은 기존의 sample image와 겹치는 것이 없고 엄밀한 차이를 보여주는 것을 알 수 있다. 이것은 GAN이 training set을 암기하는 것이 아니라는 것을 반증한다.
Advantages and Disadvantages
likelihood
https://process-mining.tistory.com/93
Kullback-Leibler divergence
https://engineer-mole.tistory.com/91
커널 밀도 추정(feat.Gaussian Parzen window)
https://jayhey.github.io/novelty%20detection/2017/11/08/Novelty_detection_Kernel/
GAN
논문 리뷰
https://tobigs.gitbook.io/tobigs/deep-learning/computer-vision/gan-generative-adversarial-network
https://velog.io/@changdaeoh/Generative-Adversarial-Nets-GAN
댓글 영역