2017년 6월 22일 목요일

초짜 대학원생의 입장에서 이해하는 f-GAN (2)

* f-GAN: Training Generative Neural Samplers using Variational Divergence Minimization, Sebastian Nowozin et al. 2016을 바탕으로 한 리뷰

지난 글에서 f-divergence를 estimate하기 위해 시작한 전개로부터 일반적인 GAN objective까지 전개하는 것을 따라가 보았습니다. 이제는 이를 풀 알고리즘과 convergence를 증명하는 부분이 남았는데요. 본격적으로 들어가기 전에 지난 내용을 리뷰하고 GAN formulation과의 관계에 대해 약간 더 구체적으로 이해하기 위해 조금 더 설명을 해보도록 하겠습니다.

먼저 설명의 편의를 위해 지난 글에서 전개했던 variational representation을 가져오면 다음과 같고:

여기서 우리는 맨 마지막 식을 사용하여 true distribution $P$를 generative model $Q$로 estimate할 것입니다.

Variational Divergence Minimization (VDM)


앞서 소개한 f-divergence $D_f(P||Q)$에 대한 lower bound를 살펴보면 식이 상당히 GAN objective와 닮았습니다. 여기서부터는 마치 GAN과 같이 $Q$와 $T$를 neural network를 사용하여 모델링 해보겠습니다.

이 때, $Q$는 random vector를 input으로 받아 우리가 원하는 sample을 내보내는 generative parametric model로 $Q_\theta$라 표현할 수 있고 $T$는 input으로 sample을 받아 scalar 값을 내보내는 variational function으로 $T_\omega$라 표현할 수 있습니다:
$$F(\theta,\omega) = \mathbb{E}_{x\sim P}[T_\omega(x)]+\mathbb{E}_{x\sim Q_\theta}[-f^*(T_\omega(x))]$$
이제 여기에 다양한 종류의 f-divergence를 사용하여 껴넣으면 새로운 GAN objective가 만들어지는 것입니다. 단, 조건이 있죠. 앞서 f-divergence에 사용된 f에 대한 conjugate 함수 $f^*$를 사용하였기 때문에 variational function $T_\omega$의 domain이 $dom_{f^*}$이 되도록 해야합니다. 

이 수식을 조금 더 GAN 형태와 비슷하게 만들기 위해 함수를 함수 $T_\omega(x)$를 output activation function $g_f: \mathbb{R}\rightarrow dom_{f^*}$와 discriminator MLP에 해당할 $V_\omega: \cal{X}\rightarrow\mathbb{R}$로 나누어 생각해보겠습니다:  $T_\omega(x) = g_f(V_\omega(x))$. 그러면 이제 아래와 같은 table에서 이에 맞게 activation function만 잘 조정해주면 원하는 divergence에 대해 새로운 GAN을 만들 수 있게 됩니다:



이렇게 table의 수식으로만 보면 이해가 좀 잘 안 될 수 있으니 함수들이 실제로 어떻게 생겼는지를 보면서 설명을 해드리겠습니다:



GAN으로 따지면 $v$ 값이 discriminator MLP인 $V_\omega(x)$에서 나온 값이라 생각하시면 이해가 쉽습니다. 즉, $V_\omega(x)$는 $x$가 실제 distribution에서 나왔을 확률을 보낸다고 생각하시면 됩니다. 위 그림에서 왼쪽 그래프는 실제 distribution에서 sample이 나왔을 때는 $g_f(\cdot)$ 값이 양수이지만 잘못 분류한 경우($v$ 값이 음수)에 대해서는 penalty를 주는 것을 확인하실 수 있습니다. 오른쪽 그래프로부터는 반대인 경우를 보실 수 있지요. 

"어때요 참 쉽죠?"


Example: Univariate Mixture of Gaussian


물론 앞서 아름답게 논리를 전개해왔지만, 예측한 것과 같이 실제로도 하한 값이 잘 계산되는지 그리고 진짜 solution에 대한 obejective 값과 variational representation으로 얻은 값 사이의 차이가 얼마나 되는지 등을 확인해볼 필요가 있겠죠. 다양한 f-divergence들에 대한 objective 함수를 GAN 알고리즘으로 문제를 풀었을 때, 간단한 예제에 대해 결과를 확인해보면 다음과 같습니다:


왼쪽 테이블을 보시면, 하한(lower bound)인 $F(\hat{\omega},\hat{\theta})$ 값이 실제로 true parameter에 대한 objective 값인 $D_f(P||Q_{\theta^*})$보다 약간 작습니다. 이 차이가 알고리즘을 사용하여 찾은 parameter와 실제 parameter의 차이와도 잘 대응됩니다.

그런데 사실 저는 이 부분보다는 오른쪽 테이블에 정리된 실험이 더 중요한 것 같습니다. 이 테이블은 학습(train)할 때는 특정 divergence로 학습을 시킨 후 generator인 $Q_\theta$를 고정시키고 새로운 divergence에 대해 $T_\omega$를 바꿔 discriminator를 재 학습(test)시킨 다음 true distribution에 대한 objective 값을 비교한 것입니다. 

이렇게 하면 기존에 학습시 사용된 divergence를 이용한 값이 가장 작게 나오는 것을 볼 수 있습니다. 어찌보면 당연하죠. 그런데 이 결과를 곰곰히 생각해보면 상당히 의미있는 결론을 얻을 수 있습니다. 즉, generative model이 덜 학습되어 true distribution을 충분히 잘 포함하고 있지 못하면 모델을 학습할 때 사용된 divergence가 무엇이었는지 그리고 estimation에 어떤 divergence를 사용하냐에 따라 objective function의 값이 매우 다를 수 있다는 것입니다. 

간혹 GAN을 학습하면서 다른 measure를 사용해서 objective 값이 어떻게 나오나 보면, 예를 들어 KL-divergence는 아직 한참 내려가는 중인데 Wasserstein distance는 이미 0이 나오는 경우를 볼 수 있습니다. 즉, measure에 따라 값이 다를 수 있으니 그 measure가 0이라고 해서 실제로 model이 true distribution을 충분히 비슷하게 모사했다고 얘기할 수 없다는 것을 이 실험이 잘 보여주고 있는 것이 아닌가...하고 생각했습니다 (이 부분은 전적으로 제 사견입니다). 

Algorithms for Variational Divergence Minimization


GAN objective 함수를 정의했으니 이를 풀 알고리즘도 봐야겠죠. Vanilla GAN의 경우 이를 alternative methods로 문제를 풉니다. f-GAN의 관점으로 보면 이 방식은 double loop로 이루어진 알고리즘으로 inner loop는 lower bound와 f-divergence 사이의 차이(gap)를 최대한 줄이는 것으로 이해할 수 있고 outer loop는 generator function을 좀 더 낫게 만드는 과정이라고 생각할 수 있습니다. 

그런데 vanilla GAN을 실제로 학습시킬 때는 inner loop 부분은 한 번만 update하는 경우가 많습니다 (당시 기준입니다). 이유는 여러가지가 있을 수 있지만 가장 큰 것으로는 computational cost입니다. 여기에 대해 f-GAN 저자들은 vanilla GAN paper에서 이론적으로 local convergence를 증명한 alternative approach와는 다르게 practical implementation에서 실제로 사용되고 있는 알고리즘은 뭔가 misleading이 있는 것이 아니냐는 의혹을 제기합니다. 

f-GAN 관점에서 바라보면 굳이 double loop 알고리즘이 아니더라도 괜찮기 때문에 아래와 같은 single-step gradient method를 제안하는데요: 


이렇게 하면 back-propagation을 한 번만 하면 된다는 장점?이 있다고 얘기합니다. 다만 새로운 알고리즘을 사용했을때는 이 알고리즘이 우리가 원하는 saddle point로 수렴하는지를 확인해줘야겠죠? 이에 관한 내용이 아래 Theorem입니다:


그런데 잘 보시면 이 theorem은 몇 가지 가정하에서 그것도 local convergence만을 증명해주고 있습니다. 즉, 우리가 saddle point의 근방에 있다면 언제나 saddle point로 수렴한다는 것을 증명한 것이지 global convergence를 증명해주진 못했습니다. 이 부분에 대해서는 f-GAN 저자도 NIPS 2016 workshop에서 다음과 같이 언급하였습니다:
 "우리가 제안한 알고리즘이 멍청한 것은 아니란 것은 증명하였지만 여전히 improve 할 여지가 많이 남아있다."
다만 아래와 같이 간단한 예제에서는 별 문제 없이 saddle point를 잘 찾아간다며 뭐 practically 잘 되니까...하면서 넘어갑니다 ㅋㅋ

이 theorem에 대한 증명은 논문에 supplementary에 들어있는데 아무래도 다음 글에서 다뤄야할 것 같습니다. 생각보다 크게 어렵지 않으니 한 번 혼자 해보시는 것도 나름 재미있는 연습문제가 될 것 같네요. 

물론 저는 paper에 "it is trivial to show...", "it is left as an exercise for the readers..."와 같은 말들을 매우! 싫어하기 때문에 (이 때문에 몇 번이나 좌절했던지...) 다음 글에서 꼭 풀어드리겠습니다ㅋㅋ 걱정마세요. 그럼 다음 글에 이어서 뵙겠습니다.

1.
$V(x,y) =xy+\frac{\delta}{2}(x^2-y^2)$
2.
$V(x,y) =xy^2+\frac{\delta}{2}(x^2-y^2)$

다음 읽을거리



참고문헌:



댓글 5개:

  1. 혹시 WGAN은 포스팅 계획 없으신가요 ㅜ

    답글삭제
    답글
    1. HS Choi님 댓글 감사합니다. 음 WGAN도 옛저녁에 읽었긴 합니다만 WGAN을 하려면 그 이전에 거쳐가야할 논문이 EBGAN이랑 Toward~ 논문이 있어서요ㅋㅋ 그게 순차적으로 하고 나면 하는게 맞지 않나 싶기도 합니다. 차차 할 생각이기는 한데 WGAN은 f-GAN보다 훨씬 수학적 지식이 요구되어서 좀 망설여지기도 합니다..ㅋㅋ

      삭제
    2. 그렇군요... 한 줄기 빛 기대하고 있겠습니다! :)

      삭제
  2. f-GAN 에 대해서 너무 잘 설명해주셔서 이해가 잘 되는데 너무 늦은감이 있지만 한가지 질문을 드려도 될까요.. ㅠ
    Table 2. 에서 GAN의 activation 과 conjugate function 을 variational representation T_w(x)와 f^*(T_w(x)) 에 적용하면 vanilla GAN 과 다른 수식이 도출되는건지 궁금해서요..

    답글삭제
  3. 작성자가 댓글을 삭제했습니다.

    답글삭제