2017년 1월 15일 일요일

초짜 대학원생 입장에서 이해하는 Generative Adversarial Nets (2)

앞서 초짜 대학원생 입장에서 이해하는 Generative Adversarial Nets (1)에 이어서 큰 줄기 두 가지 중 하나였던 이론적 증명 부분을 정리해보겠습니다.



[Theoretical Results]


이론적 결과 부분도 크게는 두 가지로 나뉘는데 먼저 앞서 소개한 minimax problem이 $p_g = p_{data}$에서 global optimum을 갖는다는 것을 보이고, 이어서 이 논문에서 소개하는 알고리즘이 global optimum을 찾는다는 것을 보여줍니다.

이 때, 지금까지 잘 사용하던 Multilayer perceptron을 사용하여 내용을 이어가는 것이 아니라 이론적 증명을 편하게 하기 위해 약간의 기믹?을 사용합니다. 저자는 non-parametric setting을 사용했다고 표현하는데, 좀 더 풀어 말하면 MLP를 사용하는 것은 결국 parameter $\theta$를 학습하는 것이므로 직접적으로 probability density function을 학습하는 것과는 차이가 있다는 것이죠.

즉, 앞으로 나올 이론적 증명 등은 model이 infinite capacity를 가지고 있으며, 수렴에 관해 애기할 때도 probability density function 공간에서 얘기한다는 것을 염두에 두면 되겠습니다.

그러면 실제로 MLP를 사용할 때는 지금 하려고 하는 증명들이 정확히 적용되는 것은 아니지 않나?......

...맞습니다. 사실 앞서 글에서 나중에 소개하겠다고 하던 MLP를 이용한 것의 장단점이 이로부터 비롯됩니다.

실용적인 측면에서 실제로 학습시킬 때, MLP를 model로 사용하면 성능이 잘 나오기도 하고 MLP를 사용하면 직관적이고 단순하고 강력한 backpropagation을 사용하는 것이 가능하기 때문에 inference를 위한 별도의 가정 등이 필요하지 않다는 장점이 있습니다.
다른 방법들이 많이 사용하듯 굳이 probability distribution을 학습하기 위해 Markov Chain Monte Carlo (MCMC)와 같은 무식한? 방법을 사용하지 않아도 되기 때문에 빠르기도 하죠.

원래도 MCMC 방식은 High dimensional vector space에서 잘 되기 어렵다는 얘기들이 있는데 (어디서 읽었더라...) 사실 직관적으로도 그렇습니다. MCMC를 이용하여 probability distribution를 찾는다고 생각해보면 점을 여러 개?를 뽑아서 distribution을 유추하겠다는 것인데 사실 거의 불가능에 가깝죠 (고차원으로 갈 수록 천문학적인 점들이 필요할테니...).

아무튼 본 주제로 넘어가보겠습니다. 여기서부턴 이 문제를 위해 사용된 알고리즘에 대한 증명 두 가지를 좀 더 쉽게 풀이하려 해보겠습니다.
앞선 글에서 정의했듯이 GAN은 다음과 같은 minimax problem 풀고자 합니다;
$$\min_G \max_D V(D,G) = \mathbb{E}_{x\sim p_{data}~(x)}[log D(x)] + \mathbb{E}_{z\sim p_z(z)}[log(1-D(G(z)))]$$

1. Global Optimality of $p_g = p_{data}$

일단, 첫 번째 주제인 Global Optimality에 관한 얘기를 하기 위해서는 먼저 배우고 넘어가야 할 도구가 하나 있습니다. 
For $G$ fixed, the optimal discriminator $D$ is $$D^*_G(x) = \frac{p_{data}~(x)}{p_{data}~(x)+p_{g}(x)}.$$
The training criterion for the discriminator $D$, given any generator G, is to maximize the quantity $V(G,D)$ $$\begin{align}V(G,D) &= \int_x p_{data}~(x)log(D(x))dx + \int_z p_z(z)log(1-D(G(z)))dz \\ &= \int_x p_{data}~(x)log(D(x)) + p_g(x)log(1-D(x))dx \end{align}$$ For any $(a,b) \in \mathbb{R}^2 \setminus \{0,0\}$, the function $y \rightarrow {\rm a} log(y) + {\rm b} log(1-y)$ achieves its maximum in $[0,1]$ at $\frac{a}{a+b}$. The discriminator does not need to be defined outside of $Supp(p_{data}) \cup Supp(p_g)$, concluding the proof.
(대학원생의 풀이)
앞서 $\frac{a}{a+b}$ 부분을 증명하는 것은 단순한 $y$에 대한 고등학교 수준 미분이므로 어렵지 않습니다. 한 가지 주의점은 (paper에서는 굳이 짚고 넘어가지는 않았지만) $log(\cdot)$ 안의 값이 0이 될 수는 없으므로 미분할 때 $y=0~or~1$인 경우는 따로 빼서 생각해줘야합니다. 두 번째 문장의 $Supp(p_{data}) \bigcup Supp(p_g)$ 부분이 무엇을 의미하는지는 저도 아직 좀 아리송한데...아마도 $V(G,D)$ 전개에서 두 번째 등호로 넘어가며 수식이 모두 $\int_x \cdot~dx$ 안으로 들어갈 때, $p_z(z)\rightarrow p_g(x)$로 바뀌는 부분을 짚은 것인가 싶습니다.

개념적으로 생각해보면 결국, $\mathbb{E}_{z\sim p_z(z)}(log(1-D(G(z))) = \mathbb{E}_{x\sim p_g(x)}(log(1-D(x))$으로 기대값이 같다고 할 수 있기 때문에, 등호가 성립하면서 $\int_x \cdot~dx$로 범위가 $x$로 한정지어져도 된다는 것에 당위성에 대해 얘기하려고 한 것 같네요.

결국  $\min_G \max_D V(G,D)$에서 안 쪽의 max 문제부터 풀어주면 문제가 다음과 같이 reformulate 됩니다:
$$\begin{align} C(G) & = \max_D V(G,D) \\
&= \mathbb{E}_{x \sim p_{data}} \left[ log D^*_G(x) \right] + \mathbb{E}_{z\sim p_z}\left[ log(1-D^*_G(G(z))) \right] \\
&= \mathbb{E}_{x \sim p_{data}} \left[ log D^*_G(x) \right] + \mathbb{E}_{x\sim p_g}\left[ log(1-D^*_G(x)) \right] \\
&= \mathbb{E}_{x \sim p_{data}} \left[ log \frac{p_{data}~(x)}{p_{data}~(x)+p_{g}(x)} \right] + \mathbb{E}_{x\sim p_g} \left[ log \frac{p_{g}(x)}{p_{data}~(x)+p_{g}(x)} \right] \end{align}$$
이제 이 도구를 이용해서 main theorem을 증명해봅시다!

The global minimum of the virtual training criterion $C(G)$ is achieved if and only if $p_g=p_{data}.$ At that point, $C(G)$ achieves the value $-log(4)$.
For $p_g = p_{data}, D^*_G(x)=\frac{1}{2}$ 임은 자명하고 다음 수식도 자연히 따라옵니다; $$C(G) = \mathbb{E}_{x \sim p_{data}} \left[ -log(2)\right] + \mathbb{E}_{x \sim p_{g}} \left[ -log(2)\right]=-log(4).$$ 이 값이 best possible value of $C(G)$란 것을 알기 위해서는 다음과 같이 $C(G)$를 표현하는 것이 증명의 키 입니다: $$\begin{align}C(G) &= -log(4) + KL \left( p_{data} || \frac{p_{data}~+ p_g}{2}\right) + KL \left( p_g|| \frac{p_{data}~+ p_g}{2}\right) \\ &= -log(4) + 2\cdot JSD(p_{data}||p_g) \end{align}$$ 여기서 KL은 Kullback-Leibler divergence이고 JSD는 Jensen-Shannon divergence입니다. JSD는 항상 양수이고 두 distribution이 일치할 때만 $0$이므로 $C^*=-log(4)$가 $C(G)$의 global minimum이며 그 유일한 해가 $p_g = p_{data}$임을 알 수 있습니다.
(대학원생의 풀이)
원래 논문을 보면 증명 사이사이에 논리의 건너뜀이 약간 있고 KL이나 JSD 등 생소할 수 있는 개념이 사용되기 때문에 여기서 잠시 멈칫할 수 있습니다. 하지만 시간을 조금만 투자해서 생각해보면 그리 어렵지 않다는 것을 알 수 있다는 것!
먼저 KL이 뭔지 wiki님께 물어보자(오오 위키가 없었으면 난 어떻게 살았을까..세상의 공돌이들을 위해 기부도 간간히 합니다ㅋㅋ위키의 설립 때 이야기랑 경제 이론 얘기도 썰이 정말 재미있는데 언제 한 번 풀어볼까...).

위키님 가라사대:
$$D_{KL}(P||Q) = \sum_i P(i) log\frac{P(i)}{Q(i)} $$
라십니다. 그냥 $P$라는 distribution이 있을 때, (보통은 estimate한) Q가 P랑 얼마나 다른 지를 측정하는 값입니다.
위에 증명에서 $KL$을 이용해 나타내기 전에 두 단계를 추가해주기만 하면 이해가 상당히 쉬워집니다;
 $$\begin{align}C(G) &= C(G) + log(4) -log(4) \\ &= -log(4) + KL \left( p_{data} || \frac{p_{data}~+ p_g}{2}\right) + KL \left( p_g|| \frac{p_{data}~+ p_g}{2}\right) \\ &= -log(4) + 2\cdot JSD(p_{data}||p_g) \end{align}$$ 
이렇게 $log(4)$를 더하고 빼준 후 $C(G)+log(4)$를 잘 보면;
$$\mathbb{E}_{x \sim p_{data}} \left[ log \frac{p_{data}~(x)}{p_{data}~(x)+p_{g}(x)} \right] + \mathbb{E}_{z\sim p_x(z)} \left[ log \frac{p_{g}(x)}{p_{data}~(x)+p_{g}(x)} \right] + log(2) + log(2)$$
이렇게 각 expectation 안으로 $log(2)$씩 넣어주면 두 번째 등호의 수식에서 나오는 $KL$ 형태로 나오는 것을 알 수 있습니다.

$JSD$ 역시 wiki님께 여쭤보면:
$${\rm JSD}(P \parallel Q)= \frac{1}{2}D_{KL}(P \parallel M)+\frac{1}{2}D_{KL}(Q \parallel M)$$
where $M=\frac{1}{2}(P+Q)$이므로 그대로 원 수식에 비교 대조해보면, 마지막 세 번째 등호의 수식으로 넘어가는 것 역시 자연스럽게 따라옵니다.

좋아! 이제 앞서 정의한 minimax problem을 잘 풀기만 하면 (즉, global optimal을 찾으면), generator가 만드는 probability distribution($p_g$)이 data distribution($p_{data}$)과 정확히 일치하도록 할 수 있다는 것을 알았습니다. 결국, Generator로 부터 뽑은 sample을 Discriminator가 실제와 구별할 수 없게 된다는 것이죠.

다만, "어떤 모델을 사용하고 어떤 알고리즘을 사용해야 이 문제를 "잘" 풀어줄 것이냐?"는 또 별개의 문제인데...


Convergence of Algorithm 1

이 논문에서는 이미  신경망 모델(MLP)을 사용하여 G와 D를 정의하고 각각을 fix한 상태에서 번갈아가며 문제를 풀어주는 전략을 제시했기 때문에 이제 남은 것은 제시한 알고리즘이 문제를 잘 풀어주는가? 혹은 Global Optimum인 $p_g = p_{data}$로 수렴하는가?를 확인하는 것입니다. (알고리즘의 pseudo code를 여기에 넣는 것은 굳이 필요할 것 같지 않아 논문으로 갈음합니다.)
If $G$ and $D$ have enough capacity, and at each step of Algorithm 1, the discriminator is allowed to reach its optimum given G, and $p_g$ is updated so as to improve the criterion $$\mathbb{E}_{x \sim p_{data}} \left[ log D^*_G(x) \right] + \mathbb{E}_{x\sim p_g}\left[ log(1-D^*_G(x)) \right]$$ then $p_g$ converges to $p_{data}$.
Consider $V(G,D)=U(p_g,D)$ as a function of $p_g$ as done in the above criterion. Note that $U(p_g,D)$ is convex in $p_g$. The subderivatives of a supremum of convex functions include the derivative of the function at the point where the maximum is attained. This is equivalent to computing a gradient descent update for $p_g$ at the optimal $D$ given the corresponding $G$. $\sup_D U(p_g,D)$ is convex in $p_g$ with a unique global optima as proven in Thm 1, therefore with sufficiently small updates of $p_g$, $p_g$ converges to $p_{data}$, concluding the proof.

(대학원생의 풀이)
(* 2017.06.05, 이 부분은 약간의 수정이 들어갈 예정입니다. 큰 줄기에서는 틀리지 않습니다만 좀 더 정확한 풀이는 convex conjugate에 대한 이해가 필요합니다. 시간 나는대로 수정하겠습니다.)
일단, 증명에서 얘기한 convex function의 한 가지 성질을 이해해야힙니다.

"The subderivatives of a supremum of convex functions include the derivative of the function at the point where the maximum is attained."

이 문장을 우리의 상황에 맞게 변수를 넣고 수식으로 바꿔 적으면 다음과 같습니다:

If $f(p_g)=\sup_{D\in \cal{D}}f_{D}(p_g)$ and $f_{D}(p_g)$ is convex in $p_g$ every $D$, then $\partial f_{D^*}(p_g) \in \partial f$ if $D^* = arg\sup_{D \in \cal{D}}f_{D}(p_g).$

원래 증명에 써있는 것은 괜히 변수가 다르게 적혀있어서 헷갈릴 수 있는데, 위와 같이 정리해두고 여기서 함수 $f_{D}(p_g)$를 $U(p_g,D)$라 생각하고 찬찬히 고민해보면 그리 어려운 얘기가 아니란 것을 알 수 있습니다.

하나하나 차근차근 뜯어보겠습니다. 위에 본 증명에서 언급한대로 $U(p_g,D)$는 $p_g$에 대해 convex 함수입니다. 그리고 이 함수의 supremum의 subderivatives라 함은 $\partial \left(\sup_D U(p_g,D)\right)$이며 단순하게는 $\partial f$로 나타낼 수 있습니다.
Subderivatives는 집합이기 때문에 $\partial f_{D^*}(p_g) \in \partial f$ 이 될 수 있는 것은 자명합니다. 그런데 하필이면 우리가 앞서 증명한 Thm 1에 의해 "$\sup_D U(p_g,D)$ is convex in $p_g$ with a unique global optima"이므로 $p_g$에 대한 적은 업데이트만으로도 $p_g\rightarrow p_{data}$ 한다는 것을 얘기할 수 있겠습니다.

이제 우리는 여기서 제시한 알고리즘이 실제로 global optimal을 찾아준다는 것까지도 증명했습니다.

단! 글 중간중간 언급하긴 했으나 이 논리에는 약~간 느슨한 부분이 하나 있지요 그 부분에 대해 마지막으로 본문의 글을 인용하여 내용을 정리하면,
"In practice, adversarial nets represent a limited family of $p_g$ distributions via the function $G(z;\theta_g)$, and we optimize $\theta_g$ rather than $p_g$ itself."

이 부분이 아까 전에 짚고 넘어간 부분입니다. 즉, MLP를 model로 사용하면 $G$가 parameter space에서 multiple critical points를 가지기 때문에 완전히 증명한 바와 합치하지는 않다는 것입니다. 다만 성능이 잘 나오는 것으로 미루어봤을 때, MLP가 이론적 보장이 좀 부족할지라도 실용적으로 쓰이기에는 reasonable한 model이라고 할 수 있겠습니다.

이로써 요즘 hot하다는 GAN에 대해 original paper에서 나온 이론적 배경까지 다 살펴보았습니다. 생각보다 쉬운 개념에 수학도 친절하게 나와있어서 굳이 설명이 필요한가도 싶었으나 스스로 정리하며 공부했다는 것에 의의를 둡니다. (하지만 이 이상으로 긴 논문은 review하려면 한 세월이겠구나 싶네요...ㅋㅋ 그런건 안 해야지...그런 의미에서 NIPS 2016 GAN tutorial은 너무 길어...)

다음에는 뭘 해볼까요.. Domain Adaptation Adversarial Network는 toy code도 MATLAB으로 짜보긴 했는데 코드나 정리해서 올려볼까..

다음 읽을거리

참고문헌:
[1] Generative Adversarial Nets - Ian Goodfellow et al. 2014 논문
[2] NIPS 2016 Tutorial: Generative Adversarial Networks



댓글 53개:

  1. 좋은 설명 감사합니다 ㅋㅋ 예전에 읽었다가 가물가물 했었는데 설명글 보고 금방 쉽게 이해가 가네요 ㅎㅎ

    답글삭제
    답글
    1. 이해가 잘 되셨다니 다행입니다 :) 댓글도 달아주시고 보람있군요 ㅎㅎ

      삭제
  2. Supp(Support)는 0이 아닌 지점을 의미하는 수학 용어였던 것으로 기억합니다 ㅎㅎ
    https://en.wikipedia.org/wiki/Support_(mathematics)
    친절한 설명들 잘 읽고 있습니다 고맙습니다

    *글 수정하려다가 지운 흔적이 남아 어지러워졌네요 ㅠ 죄송...

    답글삭제
    답글
    1. 조원익님 안녕하세요 댓글 감사합니다. 맞습니다. Support를 basis set과 같이 이해하고 있는데요 그래서 아마도 integral 안의 range가 마지막에 합쳐지는 것을 짚은 것 같다고 써두긴 했는데.... 딱 깔끔히 와닿지는 않아서 애매하네요 ㅎ

      삭제
  3. 좋은 글 감사드립니다!
    Convergence of Algorithm 1 에서, U(p_g,D)가 왜 convex 인지 알 수 있을까요?!

    답글삭제
    답글
    1. 안녕하세요 Unknown님 댓글 감사합니다. C(G)를 보시면 될 것 같은데요 p_g에 대해 convex인 것을 아실 수 있습니다. log(~/(p_d+p_g) term이 들어가 있는데, 이 때 p_g가 분모에 있고 log는 concave 함수니까 p_g에 대해서는 convex라 생각할 수 있을 것 같네요 이해가 되시는지요?

      삭제
  4. 안녕하세요. 설명 감사드립니다.
    다만, p_g가 expectation안에 들어가있는데 (적분형태), 전체식이 convex인지 어떻게 알 수 있는지 잘 와닿지가 않습니다.
    설명 정말 감사드립니다!
    (특히, 두번째 term의 경우, p_g에 대한 expectation...이며 분자 분모에 모두 p_g가 있는 형태라서 제겐 convex function인 것이 확신이 잘 안듭니다.)

    답글삭제
    답글
    1. 그렇군요 다르게는 JSD(p_d,p_g)로 나타낸 C(G)를 보시면 JSD는 p_g=p_d 외에는 양수이므로 p_g에 대해 convex인 것을 보일 수 있을 것 같습니다.

      삭제
  5. 글 잘봤습니다. 큰 도움이 되었네요.
    main theorem 증명 전 C(G)수식에서 D∗G(s)이 아니라 D∗G(x)가 되어야 할 것 같네요~

    답글삭제
    답글
    1. 댓글 감사합니다! 음 그러네요 ㅎㅎ 수정했습니다.

      삭제
  6. 좋은 글 감사합니다! GAN을 공부하는데 큰 도움이 되었습니다 ㅎㅎ
    질문이 하나 있습니다.
    논문을 읽던 중 Theorem 1. Proof에서 C(G)의 best possible value는 -log4라고 되어있는데, 이때 제가 이해한 바로는 C(G) = V(G,D)가 -log4가 되도록 Network Parameter들을 훈련시켜야 하구나.. 라고 이해했습니다.
    하지만 이 생각은 바로 아래 부분의 KL, JSD로 표현된 식과 충돌됩니다.

    이 부분에 대하여 피드백 부탁드립니다. 감사합니다.

    답글삭제
    답글
    1. Unknown님 안녕하세요 댓글 감사합니다. 이해하신 부분이 맞는 것 같은데 어떤 부분이 충돌된다고 생각하시는지 잘 모르겠네요. 일단 JSD로 나타낸 식을 보시면 -log(4)+JSD이고 이를 최소화하는 것이 풀어야할 문제가 됩니다. 이 때 JSD는 양수이므로 0이 되는 것이 최선이 되겠죠. 그래서 best possible value는 -log(4)가 됩니다. 도움이 되셨나요?

      삭제
    2. 답글을 읽은 후 JSD, KL을 다시 보니 잘못 이해한 것 같습니다.
      많은 도움이 되었습니다ㅎㅎ 감사합니다!

      삭제
    3. 도움이 되셨다니 다행입니다 :)

      삭제
  7. 아 그리고! 오타가 하나 있습니다! proposition 2의 첫번째 expected value 안에 변수가 's' 라고 나와있네요! 'x'가 맞는 것 같습니다

    답글삭제
    답글
    1. 현호님 안녕하세요 오타군요! 감사합니다 ㅎㅎ 수정하였습니다.

      삭제
  8. 안녕하세요! 궁금한점을 말씀드리기전에 무엇보다 너무 잘 설명해주셔서 감사합니다.
    다만 한 가지 궁금한 것이 있습니다. 논문과 재준님의 블로그를 열심히 병행하면서 읽었는데요.

    실제적인 알고리즘이 어떻게 적용되는지에 대해서 약간 애매한 의문이 생깁니다.
    논문에 나온 알고리즘 1: 을 보면, discriminator를 x와, z에 의해서 결정된 Generator 값을 이용하여 gradient ascend 로 학습하는 것을 볼 수 있었습니다. 이 부분은 직관적으로 이해가 갑니다.
    그 뒤에, 다시 z를 이용하여 Generator를 해당 로그식을 gradient descent 하는 방향으로 학습시킨다는 것도 이해가 됩니다.

    하지만
    아래 증명하는 부분에서의 알고리즘을 생각해보면, 마치 EM 알고리즘처럼 현재 Generator에서 생성된 Distribution을 가지고 Discriminator를 optimal 하게 만들고, 그 뒤 다시 optimal한 discriminator를 적용한 식에서 JSD를 최소화 하는 방향으로 Generator를 학습시킨다...라고 생각이 드는데....??!

    맨 위에 알고리즘이 아니라, 지금 제가 이해한 위와 같은 방식으로 이루어지나요? 아니라면 도대체 이건 무슨 소리일까요?
    그리고 optimal discriminator를 구하려고 하면서 왜 갑자기!!!!
    입력값이 둘 다 x가 되는 걸까요?
    무슨 상황인지 이해가 도저히 안가네요 ㅠㅠ. x는 주어진 data sample인데 G(z)가 있어야할 자리에 x가 있다니요..?

    (질문을 수정하느라, 위에 댓글을 삭제하고 다시 올립니다! 죄송합니다.)

    제가 맞게 이해한 걸까요? 아니길 바랍니다 ㅠ

    답글삭제
    답글
    1. 일단 가장 마지막 질문이 확실하여 답변을 드리자면, 여기서 x는 real data 혹은 sample (generator output) 둘 다를 나타냅니다. 잘 보시면 x~p_data 도 있고 x~p_g 도 있지요.

      그리고 앞의 질문은 제가 질문을 제대로 이해한 것이 맞다면 둘 다 맞고 같은 얘기인데요.. Discriminator가 optimal하게 해주는 것이 Discriminator에 대해 GAN objective를 gradient ascend하는 것과 동치가 되고 JSD가 최소화 하는 방향으로 Generator를 학습시키는 것이 Generator에 대해 GAN objective를 gradient descend하는 것과 동치입니다.

      삭제
  9. 답변 감사합니다! 혹시 폐를 끼치는게 아니라면 한가지만 더 질문드릴게요.
    Toy code 를 짜보셨다고 읽었는데 그러면
    Discriminator 를 학습할 때, 제가 이해한 게 맞다면
    굳이 mlp를 써야하나? 싶은데요.
    어떤 generator distribution이 있을 때,
    optimal discrminator 는 위와 같은 식으로 바로 구해내버릴 수 있지 않나요? (P_d / (p_d + p_g)). 굳이 gradient ascend 로 차근차근 구하는 이유가 무엇이죠?
    그 부분에서 변수가 둘 다 x 인 것이 혼동이 됩니다..ㅠ

    답글삭제
    답글
    1. 질문해주시는 것은 제게도 도움이 됩니다. 폐가 아니니 편하게 질문해주세요 :) 먼저 첫번째 질문부터 답을 드려보면 계산을 하고 싶어도 할 수가 없다가 가장 쉬운 얘기일 것 같습니다. 말씀하신 optimal discriminator를 구하려면 p_data를 알아야하죠? 그런데 우리가 p_data를 만약 알고 있다면 이런 어려운 방식을 취해서 p_g가 p_data를 근사하기 위한 알고리즘을 개발할 이유가 없지요. 두 번째로 변수가 모두 x인 것이 혼동이 된다고 하셨는데 위의 질문과 같은 맥락입니다. optimal discriminator가 해당 식이라는 것을 증명하는 것 말미에 보면 support에 대한 얘기를 하죠? ("The discriminator does not need to be defined outside of ~") 이 때문에 integral 안의 범위가 z에서 x로 바뀌는 것을 보시면 왜 그렇게 나타냈는지 아실 수 있으리라 생각합니다.

      삭제
    2. 아..그렇군요!! 감사합니다 제가 생각하는 방향이 아주 틀렸었네요 ㅎㅎ
      저는 data distribution을 그냥 empirical distribution이라고 생각했거든요!

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

    답글삭제
  11. 항상 고맙게 읽고 있습니다. 다만 몇가지 질문이 있습니다.
    C(G)=-log(4) 까지 따라왔습니다. -log(4)값이 최선이라는 것을 보이기위해서, KL을 쓰는 이유를 모르겠습니다. 논문의 식(5)에서 왜 C(G)에 두개의 KL term을 더하는 거죠? 그리고, KL term 안에 (p_data+p_g)/2 는 어디서부터 derived 됐는지 궁금합니다..

    답글삭제
    답글
    1. 일단 질문하신 부분 중 (p_data+p_g)/2 밑에 JSD를 설명하는 부분에서 M의 정의를 그냥 그대로 쓴 것입니다. KL로 나타내는 이유라 하시면 글쎄요 그냥 GAN 수식을 그렇게도 나타낼 수 있다는 것을 보여준 것인데요 GAN 수식이 해주는 역할이 JSD를 최소화하는 것과 같다는 것을 보여준 것입니다.

      삭제
  12. 안녕하세요, 좋은 글 감사합니다. Theorem 1의 KL 부분 논리적 건너뜀을 이해하는데 큰 도움이 되었습니다.

    답글삭제
    답글
    1. Unknown님께, 저도 댓글 감사합니다 :) 도움이 되셨다니 보람이 있군요

      삭제
  13. 안녕하세요. 여기에 질문하는게 나을 것 같아 질문 남깁니다 :) 본문에서 U(p_g, D) 가 convex 한 이유를 잘 모르겠습니다. 위에도 같은 질문이 있긴 한데요, C(G)가 convex 한 것은 D* 에 대한 것이고, non-optimal 한 D 에 대해서는 convex 하다고 할 수 없는 것 같은데, U(p_g, D) 에서의 D 가 D* 를 의미하는건가요?

    답글삭제
    답글
    1. 일단 마지막 질문에 대한 답변을 드리면 U(p_g,D)에서 D는 일반적인 D입니다. 그러니까 사실 저건 U(p_g,D) = V(G,D) = \int_x p_data(x)log(D)+p_glog(1-D)dx를 보시고 여기서 D를 fix한 상태로 G에 대해 미분하시면 됩니다. 이 수식은 proposition 1 proof 부분에 나와있어요. 여기서 p_g에 대해 미분하면 log(1-D)만 남고 이는 fix D에 대해 상수입니다. 따라서 단조감소함수 이며 사실상 convex이며 concave이죠.

      삭제
    2. fixed D 라고 하니까 바로 이해가 되네요! 답변감사합니다 :) 큰 도움이 되었습니당 ㅎㅎ

      삭제
  14. Supp(pdata): set of upper bound in P_data 이겠네요

    답글삭제
    답글
    1. 아 음 제가 저당시는 이해 못했었는데 이제 이해하고 있는 바에 따르면 support를 말하는 것으로 알고 있습니다.

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

      삭제
    3. 아 혹시 제가 잘못 이해하고 있다면 알려주세요 :) 댓글 감사합니다.

      삭제
  15. Proposition 1. 에서 Supp에 관련된 부분은 증명을 위해 앞문장에 대한 부연 설명을 한것으로 이해했습니다. 바로 앞 문장에서 (a,b)가 (0,0)을 제외한 공간상에서 a/(a+b)에서 optimal을 갖는다고 설명했고 여기서 (0,0)을 제외한 공간이 Supp(p_data)USupp(p_g)를 의미하고, 이에 discriminator가 Supp(p_data)USupp(p_g) 상에 있어야 p_data/(p_g+p_data)에서 optimal을 갖게 됩니다. 이를 논문에서는 discriminator가 outside of Supp(p_data)USupp(p_g)에서 정의될 필요가 없다고 하고 증명을 마무리한것이 아닐까 합니다. 이에 대해 어떻게 생각하시는지요?

    덧붙여 equation (3)에서 두번째줄로 넘어가는 부분은, g(z)는 z를 x로 mapping 해주는 함수이고 x공간 상에서 g의 distribution인 p_g(x)와 p_z(z)는 같은 distribution을 의미한다고 생각합니다. 따라서 x공간상으로 표현을 바꾸는데 별다른 가정이 필요없이 넘어갈 수 있다고 이해했습니다.
    앞서 작성한 댓글을 수정하려 했는데 수정이 안되어 삭제했습니다.

    답글삭제
    답글
    1. 안녕하세요 전원석님 댓글 감사합니다. 첫번째 의견에 동의합니다. 글을 쓸 당시에도 그 정도로 생각은 하고 있었는데 확신이 없었던지라 저렇게 써두었었죠. 그런데 두번째 문단에 말씀해주신 eq (3)에서 넘어가는 부분이 정확히 첫번째 부분에서 적어주신 부분과 같은 이야기에서 기인한다고 생각하는게 더 자연스럽다 생각했는데요. 마찬가지로 p_z(z)가 곱해져서 모든 z에 대해 적분해봤자 discriminator가 p_data outside에서 정의될 필요가 없기 때문에 (0이라 생각해도 되기 때문에) 그냥 범위를 줄이면 된다고 같은 맥락에서 해석이 되는 것 같다고 얘기했던 것입니다. 결국에는 원석님이 말씀하신 부분이랑 일치하긴 하는데 약간의 해석 차이가 있는듯 하네요.

      삭제
  16. 수식이 깨져서? 정확하게 확인이 불가능할정도로 이상하게 나옵니다... 수정부탁드려요

    답글삭제
    답글
    1. 어느 웹브라우저에서 그러시는지요? 크롬이나 safari에서는 저와 다른 몇 지인들이 시도해본 결과 수식이 보이는 것에 문제가 없었는데요.

      삭제
    2. 또 다른 컴퓨터에서 안 되는 경우를 확인했습니다. 왜 이런 일이 생기는지 확인 중입니다. 갑자기 왜 이러지..

      삭제
    3. MathJax CDN shutting down on April 30, 2017.
      Alternatives available. https://www.mathjax.org/cdn-shutting-down/ 이 문제 때문에 생기는 것이었네요. 댓글 감사합니다. 지금은 수정했습니다. 이제 잘 보이실거에요

      삭제
    4. 늘 좋은 자료 올려주셔서 감사합니다~

      삭제
  17. 수식이 많아 어려울 수 있는 논문인데 너무 설명을 잘 해주셔서 쏙쏙 머리에 들어오는 느낌입니다..
    혹시 GAN toy code좀 받아 볼 수 있을까요?
    한번 구현해보고싶은데, 너무 막막해서 참조만 좀 하고 싶어서요 ㅎㅎ
    감사합니다^^

    답글삭제
    답글
    1. https://github.com/jaejun-yoo/toyGAN/blob/master/gan_toy.py
      남의 코드를 공부하느라 가져온 것이긴 하지만 제 레포에 있습니다 :) 도움이 되시길.

      삭제
  18. Eq(4) > Eq(5) 수학적으로 어떻게 깔끔하게 할 수 있을까 고민하고 이것저것
    좀 찾아봤는데 change of variables를 적용하면 (x=G(z) > dx = G(z)'dz and p_x(x) = p_z(z)*abs(G^(-1)(z))^(-1)) 좀 더 확실하게 보여줄 수 있을 것 같습니다 ㅎㅎㅎ 같은걸로 다른 분들도 고민하실까봐 올려요

    답글삭제
    답글
    1. Unknown님 부족한 점을 보충해주시는 댓글 감사합니다ㅎㅎ :)

      삭제
  19. 안녕하세요, 포스팅보며 GAN이해에 많은 도움을 받았습니다.
    먼저 감사드립니다. 질문ㅇ 있는데 정리해주신 내용에는 알고리즘이 이론적으로는 수렴한다고 되어 있는데,
    https://www.quora.com/Do-generative-adversarial-networks-always-converge
    위의 글에서는 저자가 직접 open problem이라고 이야기를 하고 있어 조금 혼란스럽습니다. 혹시 어떤 의미에서 재준님의 설명과 다르게
    theory 측면에서도 open이라는 것인지 알 수 있을까요?

    답글삭제
  20. Supp(p_d) U Supp(p_g) 부분은 그냥 D의 영역을 말한 거 같습니다. 적분이랑은 상관이 없는 듯 하고, a, b의 영역에서 (0,0)은 제외되었는데 관심 밖의 영역이기 때문이고, 그래야 optimal D가 a/(a+b)로 잘 정의가 되니까요.

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

      삭제
    2. 아 그리고 무엇보다도 글 재밌게 감사히 잘 봤습니다

      삭제
  21. 안녕하세요. 워낙 오래된 게시글이라 댓글 확인을 하실 지 걱정이지만 혹시나 해서 질문을 남깁니다. proposition1의 증명에서 왜 적분식 안의 값의 최댓값을 구하는 지 모르겠습니다. G가 고정된 상태에서 D의 optimal한 해를 구하기 위해서는 V(G,D) 를 최대로 하는 D를 구해야 하는데, 2번 식을 D에 대해 미분하면 될 것 같은데 왜 갑자기 적분기호 안쪽의 alogy + blog(1-y) 의 최댓값을 구하는지 모르겠습니다 ㅠㅠ

    답글삭제
    답글
    1. 동영님 안녕하세요. 생각해보시면 V(G,D)에서 적분 안에 피적분 함수를 max로 찾으면 결국 upper bound가 되기 때문입니다. 어떤 함수의 max 값들의 합이 그냥 함수들의 적분의 최대가 되겠죠. 혹시 이해가 되셨으려나요?

      삭제
    2. 네 맞는거 같아요. 질문 남기고 오래 고민하고 검색도 좀 해보니까 적분식이 결국 E(V(G,D))이므로 적분(E)을 빼고 안쪽의 V(G,D)를 매 x마다 최대화한다고 생각하면 되겠더라고요. 친절한 답변 감사합니다 :D

      삭제
    3. 넵ㅎㅎ 도움이 되셨다니 다행입니다. 답변이 늦어서 죄송하네요ㅎ

      삭제
  22. 안녕하세요! 포스팅 잘 봤습니다. 혹시 두번째 증명의 "The subderivatives of a supremum of convex functions include the derivative of the function at the point where the maximum is attained." 이 말이 의미하는 바를 직관적으로 설명해주실 수 있으신가요? 이 증명이 왜 p_date = p_g 로 수렴하는 것을 보여주는지 잘 모르겠습니다. 감사합니다.

    답글삭제