일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SRGAN
- Clustering
- 적대적 생성 신경망
- Fast R-CNN
- RPN
- Region Proposal Networks
- 군집
- 군집화
- Object Detection
- hierarchical clustering
- Deep Learning
- Faster R-CNN
- 이미지 초해상화
- GAN
- super-resolution
- CV
- 비지도학습
- K-means
- Today
- Total
수혁지능
[논문리뷰] Generative Adversarial Nets(GAN) 본문
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와 같은 활성화함수가 있다.
그에 반해 deep generative model은 아래의 이유로 인해 작은 impact를 보여주고 있었다.
- 최대우도추정(maximum likelihood estimation)과 관련된 전략들에서 발생하는 많은, 다루기힘든 확률 연산을 추정하는데 어려움이 있었다.
- ReLU와 같은 piecewise linear units의 이점을 생성자 맥락에서 이용하는데 어려움이 있었다.
본 논문에서는 이러한 difficulities를 해결할 수 있는 새로운 generative model을 제안하였다.
제안된 Adversarial nets framework은 다음과 같은 특징을 갖는다.
- Discriminative model(D)과 Generative model(G)는 서로 적대적이다
- D는 sample이 model distribution(G)에서 나왔는지 data distribution에서 나왔는지 구별하도록 학습된다.
G는 D를 속여 sample의 출처를 구별하지 못하도록 학습된다. - 비유를 하면 D는 경찰, G는 위조지폐범으로서 위조지폐범은 경찰에게 잡히지 않으려하고 경찰은 어떻게든 위조지폐범을 잡으려고 한다. 이러한 적대적 경쟁 과정에서 서로의 methods가 향상되는데, 이는 위조지폐범이 만든 위조지폐가 실제 지폐와 구별이 불가능할 때까지 이루어진다.
본 논문에서는 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부터 시작해서 점점 증가) > 그래서 차용
위 그림을 보면서 adversarial net의 훈련과정에 대해 좀 더 알아보자.
- black, dotted line: data의 원본 분포(P(x))에서 뽑은 sample들
- green, solid line: generative distribution
- blue, dashed line: discriminiative distribution
- the lower horizontal line : z가 uniform하게 sampled된 domain
- the upper horizontal line: x의 domain
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)를 표현한 것을 알 수 있다.
각각의 그림은 다음의 설명을 살펴보자.
- (a): data distribution과 generative distribution이 많이 다름. D의 성능도 좋지 않음(들쑥날쑥함)
- (b): D는 inner loop에서 sample이 어디서부터 왔는지 구별할 수 있도록 훈련되며, 결국 Pdata(x) / (Pdata(x) + Pg(x)) 로 수렴함.(D가 sigmoid 형태로 전환된 것을 알 수 있음)
- (c): 어느정도 D가 학습되었을 때, D의 gradient가 G(z)가 어디로 가야 거기에서 추출된 sample이 실제 data 분포로 분류될 수 있는지 이끌어준다.(generative distribution이 data distribution을 따라가고 있는 모습)
- (d): 여러 training step을 거친뒤, G와 D가 enough한 capacity를 가진다면 최적점 Pg = Pdata에 도달하게 되고 D는 더이상 generative distribution과 data distribution을 구별할 수 없어 D(x) = 1/2가 된다.
Theoretical Results
G는 확률분포 Pg를 직접 정의하는 것이 아니라, z로부터 얻어진 G(z)(x로 mapping된 샘플)들의 분포를 바탕으로 암묵적으로 정의한다.(간접적으로 likelihood 최대화)
*likelihood: 데이터가 특정분포로부터 만들어졌을 확률
따라서, 이제 설명하는 알고리즘이 Pdata의 좋은 추정치가 되도록(enough capacity, training time 확보 필요)할 필요가 있다.
알고리즘은 간단하게 다음과 같은 과정을 거친다
- k step의 Discriminator optimizing
- Pg(z)로부터 m개의 노이즈 샘플 추출, Pdata(x)로부터 m개의 실제 데이터 샘플 추출
- stochastic gradient를 높이는 방향으로 Discriminator update(for maximize V(G,D) / sample이 m개이므로 평균을 취해주어 기댓값으로 변환)
2. 1 step의 Generator optimizing
- Pg(z)로부터 m개의 노이즈 샘플 추출
- stochastic gradient를 낮추는 방향으로 Generator update(for minimize V(G,D))
그런데 이런 알고리즘 수행에 앞서 V(G,D)라는 minmax game의 objective가 Pg = Pdata에서 global optimum을 가지고, 위의 알고리즘을 통해 Pg가 Pdata로 수렴할 수 있는지에 대해 증명해보겠다.
위의 증명은 결국 two-player minimax game의 global optimality는 Pg = Pdata일뿐이라는 것을 알려준다.
Experiments
- MNIST, TFD, CIFAR-10등의 데이터를 이용해 adversarial nets를 훈련시킴
- G는 ReLU와 sigmoid activations를 활용했으며, D는 maxout activation과 dropout을 활용했다
- G에서 noise는 input으로 network의 최하층(=the first layer)에서만 사용했다.(이론적으로는 중간에도 삽입 가능)
- 본 논문에서는 G에서 생성된 sample들에 대해 Gaussian Parzen window를 적용하고 이렇게 추정된 분포 하에서 log-likelihood를 확인함으로써 Pg하에서 테스트 데이터의 확률을 추정하였다.
*Gaussian Parzen window: 커널 밀도 추정의 방법 중 하나(데이터가 특정 분포를 따르지 않아도 밀도 추정 가능)
위와 같은 방법으로 실제 데이터에 적용해본 결과, Adversarial nets가 MNIST와 TFD 둘다 좋은 모습을 보여준 것을 확인할 수 있었다.
그러나 이러한 likelihood 추정 방식에는 high variance , not perform well in high dimensional spaces 등의 문제가 있었지만 저자들의 능력상 한계이고, 이것이 최고의 가능한 방법이었다고 한다.
위의 사진은 adversarial net의 generator가 실제로 생성한 sample과 원본 sample을 비교한 사진이다. Sample들은 cherry-picked 되지 않았으며, random-drawed 되었다. (c)와 (d)의 사진들을 잘 보면, 노란색 테두리의 image들은 기존의 sample image와 겹치는 것이 없고 엄밀한 차이를 보여주는 것을 알 수 있다. 이것은 GAN이 training set을 암기하는 것이 아니라는 것을 반증한다.
Advantages and Disadvantages
Advantages
- Markov chain, inference 등이 필요하지 않으며 오직 backpropagation으로 gradients를 얻을 수 있다.
- wide variety of function이 model안에 통합될 수 있다.
- G가 data sample을 직접 학습할 필요 없이 D로부터 흘러들어오는 gradient만으로 학습이 가능하다.(= input이 G의 parameter로 바로 copy되서 들어오지 않는다)
- Markov chain은 blurry한 distribution을 내놓는 반면, adversarial network는 매우 sharp한 distribution 표현이 가능하다
Disadvantages
- Pg(x)에 대한 명시적인 표현이 없다.
- D랑 G는 반드시 잘 맞춰서 훈련이 되야한다. 특히, 균형이 깨져 G가 너무 많이 발전되면 너무많은 z가 동일한 x에 매핑될 수 있다.(z 붕괴)
- 현재의 일반적인 generative adversarial network(GAN)에서 conditional GAN(data distribution: p(x|c))으로 발전될 수 있다.(adding c as input to both G and D)
- Learned approximate inference를 실제 data x가 주어졌을 때 z를 예측하는 보조 네트워크를 훈련하는데 사용할 수 있다.(현재 GAN에서는 사전분포 pz(z)에서 샘플링된 z를 x에 mapping 시키는데, 이의 역과정을 수행할 수 있다는 말인듯하다)
- paremeters를 공유하는 conditional model을 학습함으로써 다른 모든 conditional model들을 근사적으로 모델링 할 수 있다.(모델의 확장)
- Semi-supervised learning: labeled된 data가 적어도 D에서 나온 feature들로 classifier의 성능을 높일 수 있다.
- Efficiency improvements: G와 D를 조정하는 더 나은 방법이나 sample z에 대한 더 좋은 분포를 찾을 수 있다면 학습의 속도는 올라갈 것이다.
Reference
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