상세 컨텐츠

본문 제목

[6주차 / 신인섭 / 논문리뷰] Generative Adversarial Nets

방학 세션/CV

by inseop 2023. 2. 21. 23:31

본문

동시에 두가지 모델을 학습하는 것을 목적으로 한다.

생성모델이 G와 식별 모델인 D를 대상으로 진행이 되며, G 모델은 D가 잘 못 구별하는 가능성을 최대화하는 것을 목표로 하고, D는 학습 데이터와 G의 데이터를 구분하는 것을 목표로 한다. (minimax two player game)

G는 D의 구별이 언제나 1/2 이 될 수 있도록  

 

1. Introduction

지금까지 딥러닝은 데이터에 대해 근사하는 확률 분포를 나타내는 계층 모델 발견하는 것이었다.

well-behaved gradient를 갖는 선형 활성화 함수들을 사용한 역전파, dropout 알고리즘이었다.

 

Deep generative models은 두가지 어려움으로 인해 임팩트가 적었다.

- maximum likelihood estimation 간련 전략에서 나온 확률 연산들을 근사하는 어려움

- generative context에서 영향력이 있던 선형 함수들을 가져오는 것에 대한 어려움

 

adversarial nets framework에서, 생성모델은 적대적인 특징이 있다. 

Discriminative model은 sample data가 model로 부터 온것인지, 데이터에 있었던 것인지 판별하는 것을 학습한다.

이 생성 모델은 걸리지 않는 위조 지폐를 만드는 위조지폐범과 유사하다.

그리고 discriminative model은 경찰의 역할을 맡아, 진짜 화폐와 가짜 화폐를 완벽이 판별하여 위조범을 검거하는 것을 목표로 한다.

이러한 경쟁이 반복되며, 위조지폐범은 진짜와 다를게 없는 위조지폐를 만들 수 있고, 

그렇게 된다면, 경찰의 위조 판별 확률이 50%로 수렴하게 되면서, 경찰이 구분하지 못하는 지경에 이르도록 한다.

 

이 프레임워크는 다양한 모델에 대한 학습 알고리즘과 최적화 알고리즘을 낸다.

generative 모델은 multi layer perceptron을 통해 샘플을 생성하고, discriminative 모델또한 multi layer perceptron의 구조를 따른다. 이런 경우를 adversarial nets라고 부른다.

두 모델 다 근사 추론이나, Markov chain 없이, 매우 성공적인 순/역전파와 dropout 알고리즘을 사용하여 학습시킬 수 있다.

 

3. Adversarial nets

adversarial modeling 프레임워크는 multi layer perceptron을 적용한다.

데이터 x에 대한 generator의 분포 p_g를 학습하기 위해, input noise 변수 p_z(x)를 정의하고, data space에 매핑하는 G(z;theta_g)를 나타낸다. 

G는 theta_g로 구성된 미분가능한 multi layer perceptron이다. 

또한 출력이 단일 스칼라인 두번째 multilayer perceptron인 D(x;theta_d)를 정의해야한다. 

D는 입력 데이터가 p_g가 아닌 진짜 데이터 분포일 확률을 single scalar로 나타내는 함수이다.

 

위와 같이 정의한 G, D 모델을 학습을 시켜야한다. 

D는 학습 데이터 셋과 G에서 만든 데이터에 정확한 label을 할당할 확률을 최대값으로 만드는 것이 목표이며,

G는 D가 정확한 label을 붙이지 못하도록 학습데이터 셋과 유사한 데이터를 만드는 것이 목표이다. => log(1 - d(G(z))) 최소화

이제 Adversarial nets를 이론적으로 분석해보자.

이론적 분석은 Training criterion이 데이터 생성분포를 G로 복구하고, D가 non-parametric limit 상황에서 충분한 기능을 하는 것을 보여준다.

D를 inner loop에서 최적화하는 건 많은 계산과 유한 데이터 셋에서 오버피팅을 초래한다. -> k step 만큼 D를 최적화하고 G는 1 step 만큼 최적화하도록 한다. 

학습 초반엔 G의 성능이 좋지 않기에 D가 너무 잘 구별을 하게 된다. 이 경우 log(1 - D(G(z)))가 발산한다. 

따라서 G를 훈련하기 위해 log(1-D(G(z)))를 최소화하기보다, log(D(G(z))를 최대화 할 수 있게 학습하는 것이 더 좋다.

검정: 실제 이미지의 분포/ 초록 : G가 맵핑하는 이미지의 분포 / 파랑 : 구분자의 분포

(a) : 학습 초기에는 진짜 가짜 분포가 현저히 다르고, D의 성능 또한 좋지 않음

(b) : D가 (a) 처럼 진동하지 않고 조금더 분명하게 판단함, -> D의 성능이 향상됨

(C) : 어느 정도 D가 학습이 이뤄지면 G는 실제 데이터 분포를 따라가게 되며 D가 구별하기 어려워짐

(d) : 과정의 반복의 결과로 진짜 가짜 구분이 어려워짐. 결국 D의 확률이 1/2로 수렴하게 됨.

 

4. Theoretical Results

G는 확률 분포 p_g를 샘플 G(z)의 분포로 정의했다. 그래서 아래 알고리즘 1이 G(z)를 p_data에 수렴 할 수 있도록 원했다.

이런 결과는 non-parameter setting에서 시행되었다. 즉, 확률 밀도 함수에 수렴하는 걸 학습함으로써 무한한 능력의 모델을 나타낸다는 걸 알 수 있다.

4.1 global optimality of p_g = p_data

최적의 D가 있다고 가정하자

- Proposition 1

고정된 G가 있을 때, 최적의 D는 다음 식과 같다.

* proof

어떤 G가 있을 때, D의 training criterion은 V(G,D)를 최대값으로 만드는 것이다.

V(G,D)는 다음과 같다.

(0,0)이 아닌 (a,b) ∈ R^2가 있을 때, y → a x log(y) + b x log(1 − y)는 최대값을 a/(a + b)에서 가진다.

a = p_data(x), b = p_g(x)로 바꾸면 p_data(x)/(p_data(x) + p_g(x))가 된다.

 

이 식을 보면 D를 학습하는 목적은 조건부 확률 P(Y = y | x)의 log-likelihood를 최대화하는 것으로 해석이 가능하다.

Y는 x가 진짜 데이터인지 (y = 1), G에서 만들어진 건지 (y = 0)을 나타내는 변수이다.

 

그렇다면 다음 minimax game 식은  

global minimum of the virtual training criterion C(G)로 식을 고쳐 쓸 수 있다.

C(G)가 global minimum을 가지려면 p_g = p_data를 만족해야한다. 이때 C(G)는 -log4를 얻는 다.

* proof

p_g = p_data 이면, 

이 식은 0.5가 된다.

그러면 C(G)는 C(G) = log 1 /2 + log 1 / 2 = − log 4 가 된다. 

위 식의 세번째 식과 네번째 식을 보면 알 수 있듯이 쿨백 라이블러 식으로 변형이 가능하며, 이또한 jesen-Shannon 발산으로 변형이 가능하다.

Jensen-Shannon 발산에 따르면, 두 분포가 같다면 non-negative 하고 0이 나온다. 따라서 p_g= p_data 이어야 global minimum, -log(4)가 나오게 되는 것이다.

즉 G 가 실제 데이터의 분포와 완전히 동일해야 global minimum을 얻을 수 있다.

 

4.2 Convergence of Algorithm 1

- Proposition 2

G,D가 충분한 능력이 되고, 알고리즘 1의 각 스텝에 있을 때, D는 G가 최적의 상태에 도달하도록 하고, p_g는 criterion이 향상하는 방향으로 업데이트가 되며, p_data로 수렴하게 된다.

* proof

앞서 말한 criterion에 있는 p_g의 함수인 V(G, D) = U(p_g, D)를 보자.

U(pg, D)는 p_g에서 볼록하다는 걸 염두해야한다. 볼록 함수의 supremum을 하위미분한 것은 최대값을 얻을 수 있는 점에서 함수를 미분한게 포함되어 있다.

즉, 'f(x) = supα∈A fα(x) 와 fα(x)가 모든 α에 대해 x에서 convex일 때, β = argsupα∈A f_α(x)인 조건 아래 ∂fβ(x) ∈ ∂f 이다'로 표현할 수 있다.

corresponding한 G가 있을 때 최적의 D에서의 p_g를 만드는데 사용될 gradient를 계산하는게 U(p_g, D)에 들어있다

supD U(pg,D)는 unique global optima를 가진 p_g에 있는 convex이다. 그러므로 p_g를 조금씩, 그러나 충분할 정도로 업데이트 하다보면 p_g는 p_x에 수렴하게 된다.

 

adversarial nets은 G(z; θ_g)를 통해 제한된 값의 집합의 p_g 분포를 나타내게 된다. 그래서 p_g 대신 θ_g(G의 파라미터)를 최적화 하였다. p_g로 수렴시키는 걸 증명한 것이 적용되지 않지만 최적화된 θ_g의 G는 reasonable 한 성능을 보였다.

5. Experiments

MNIST, TFD, CIFAR-10 대상으로 실험

활성화 함수로 G는 렐루와 시그모이드의 혼합된 함수를 사용하고, G는 maxout을 활성화 함수로 사용했다.

G는 노이즈를 입력 받아 데이터를 생성했다.

p_g의 test set data들의 확률은 G로 생성된 샘플들에 Gaussian Parzen window을 맞추는 방식으로 측정하고, p_g에 속한 log likelihood로 변환합니다.

이 때 Gaussian의 표준편차 σ는 검증 데이터셋의 교차 검증을 통해 값을 정한다. 이는 실제 likelihood를 다루는 다양한 생성모델에 적용된다.

결과는 다음과 같다

고차원 데이터에서 좋은 효과를 보지 못했지만, 가장 최선의 방식이었다.

다음은 학습이 끝난 생성모델의 생성된 데이터이다.

6. Advantages and disadvantages

단점 : p_g를 확실하게 표현하지 못하는 한계, Helvetica scenario 에 빠지지 않게 G와 D가 잘 동기화 되어야한다.

장점 : 역전파를 사용하기에 Markov chain 사용 안함. inference 필요 없는 학습과정, adversarial nets framework와 다양한 함수를 결합할 수 있다.

7. Conclusions and future work

이 프레임워크는 많은 단순한 확장을 가능케 한다.

1. G,D에 C를 input으로 추가하면 conditional generative model p(x | c)를 얻을 수 있다.

2. auxiliary network가 x를 가지고 z를 예측하도록 학습시키면 Learned approximate inference를 수행할 수 있다.

이는 wake-sleep 알고리즘으로 학습된 inference net과 비슷하지만 auxiliary network는 학습이 끝난 generative model을 위해 학습될 것이라는 이점을 가지고 있다.
3. 가중치를 공유하는 조건부 모델의 family가 x의 모든 부분집합 S에 대한 조건부 확률 p(xS | x̸S)을 나타내게끔 학습시킬 수 있다.
4. Semi-supervised learning : 라벨링된 데이터가 적을 때, discriminator or inference net에서 얻은 특성들이 classifier의 성능을 향상시킬 수 있다.
5. Efficiency improvements : 학습하는 동안 z를 sample하는 더 나은 방식을 만들어내어 학습을 엄청 가속화 시킬 수 있다. 여기서 방식은 'G, D를 조정하거나 더 나은 분포를 결정하는 방식'을 말한다.

 

 

 

 

 

 

 

 

 

관련글 더보기

댓글 영역