티스토리 뷰

 이 글은 GAN이 처음 나타난 논문 「Generative adversarial nets」을 바탕으로 작성하였습니다.

Goodfellow, I. J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A., and Bengio, Y. (2014). Generative adversarial nets. In NIPS’2014

https://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf

 

 GAN에 대한 대략적인 설명은 이전 글에서 하겠습니다.

 이전 글 https://rython.tistory.com/9

 

GAN(Generative Adversarial Network) 개요

 GAN은 최근 가장 각광받고있는 모델이다. GAN은 아주 다양한 분야에 응용될 수 있고 굉장히 다양한 변형 GAN들이 나타나고 있다. 각각의 모델들의 구조와 구현은 따로 글을 포스팅할 것이고 각각�

rython.tistory.com

배경

 논문에서 GAN의 등장 배경이 나오기에 간략하게 정리를 해보았습니다.

 기존에 있던 딥러닝들은 다양한 분야에서 좋은 성능을 보여주었지만 생성 모델으로 사용한 경우 그렇지 못했다고 합니다. 그 원인으로 어려운 확률 계산을 근사하는 것과 생성 모델에서 선형 단위의 장점을 활용하기 어렵다는 것을 들었습니다. 따라서 논문의 저자들은 이러한 문제들을 피할 수 있는 새로운 모델을 제안하게 됩니다.

용어 정의

 우선 논문에서 정의한 몇 개의 변수들과 함수에 대해 알아봅시다.

$p_{data}$

   data의 확률 분포, 확률 밀도 함수입니다.

$p_{\mathbf{z}}$

   input vector의 확률 분포, 확률 밀도 함수입니다.

 

 $\mathbf{x}\sim p_{data}$와 $\mathbf{x}\sim p_{data}(\mathbf{x})$, $p_{data}(\mathbf{x})$가 값으로 사용되는 표현이 혼용되고있는데 이를 잘 구분하지 않은 것으로 보입니다. 제 나름대로 통일을 해보도록 하겠습니다.

 

$G(\mathbf{z};\theta_{g})$

   input vector의 공간에서 data 공간으로의 사상으로 미분가능해야 합니다. 여기서는 파라미터로 $\theta_{g}$를 가지는 MLP model이 가장 잘 작동한다고 하고 이를 사용합니다. 확률 분포 $p_{\mathbf{z}}$의 입력으로 만들어진 $G$의 확률 분포와 확률 밀도 함수를 $p_{g}$라고 합니다.

$D(\mathbf{x};\theta_{d})$

   data $\mathbf{x}$를 input으로 받아 $\mathbf{x}$가 $p_{g}$에서 나오지 않았을 확률, 즉 G에 의해 만들어진 것이 아니라 $p_{data}$에서 나온 실제 데이터일 확률을 output으로 가집니다.

 

 $D$와 $G$는 $V(G,D)$값에 대해 minimax game를 하며 train 한다고 합니다.(*논문에서는 오타인 것 같지만 $V(G,D)$라고 쓰기도 했다가 $V(D,G)$라고 쓰기도 하는 등 통일되어있지 않은데 이 글에서는 $V(D,G)$로 통일하겠습니다. 대소문자도 섞여있어요)

$$\min_{G} \max_{D} V(G,D)$$

$$V(G,D)=\mathbb{E}_{\mathbf{x} \sim p_{data}}[\log D(\mathbf{x})]+\mathbb{E}_{\mathbf{z} \sim p_{\mathbf{z}}}[\log(1-D(G(\mathbf{z})))]$$

 

 GAN의 최종적인 목표는 $p_{g}$가 $p_{data}$와 같아지게 하는 것입니다. 그러기 위해서는 두 확률 분포 사이의 유사도를 나타내는 방법을 알아야 합니다. 잠시 이와 관련된 Kullback-Leibler divergence와 Jensen-Shannon divergence에 대해 알아봅시다.(갑자기 이걸 설명하는 이유는 증명 과정에 갑자기 나오기 때문입니다.)

Kullback-Leibler divergence

 두 확률 분포 $P$와 $Q$에 대해 Kullback-Leibler divergence는 $\text{KL}(P||Q)=\int_{X} p(x)\log\frac{p(x)}{q(x)}dx$로 정의됩니다. $KL(P||Q)$로 나타내기도 하고 $D_{KL}(P||Q)$ 등 여러 표기가 있지만 논문의 표기를 사용하겠습니다. 이는 상대 엔트로피라고 표현하기도 하는데 식을 조금만 정리해주면 $P$와 $Q$의 cross entropy와 $P$의 entropy의 차로 나타낼 수 있는 것을 알 수 있습니다.

$$\text{KL}(P||Q)=\int_{X} p(x)\log\frac{p(x)}{q(x)}dx=-\int_{X}p(x)\log q(x)dx +\int_{X}p(x)\log p(x)dx$$

 또한 이 값은 항상 0 이상인 것을 증명할 수 있는데 이는 $\log$함수를 이용하여 젠센 부등식을 이용하면 어렵지 않게 증명할 수 있습니다. 이 값은 대칭적이지 않은데($\text{KL}(P||Q)\neq \text{KL}(Q||P)$) 이 때문에 거리(metric)으로 사용할 수 없다고 합니다.

Jensen-Shannon divergence

 이 또한 두 확률 분포 사이의 유사도를 나타내는 수치로 Kullback-Leibler divergence를 이용하여 아래와 같이 정의됩니다.

$$\text{JSD}(P||Q)=\frac{1}{2}(\text{KL}(P||M)+\text{KL}(Q||M)), M=\frac{1}{2}(P+Q)$$

이 값은 Kullback-Leibler divergence와 달리 거리(metric)으로 사용할 수 있습니다. 또한 KL을 계산할 때 밑이 2인 $\log$를 사용한다면 JSD는 0이상 1이하의 값을 가진다고 합니다.

증명할 내용

 논문에서는 크게 2가지를 증명하는 것으로 구성되어 있습니다.

  1. 위에서 정의한 minimax game의 global optimum은 $p_{g}=p_{data}$로 유일하다.

  2. 논문에서 정의한 Algorithm 1은 1에서의 global optimum으로 수렴한다.

 2의 경우 논문에 7줄만에 증명하는데 저는 이해가 잘 안 갑니다. 1에서 증명한 바에 의해 convex 함수의 특징상 성립한다는 내용인 것 같지만 Algorithm 1과 어떤 연관인지 이해하지 못해서 넘어가겠습니다.

증명 과정

 먼저 $G$를 고정시키고 이에 따른 최적의 $D$인 $D^{*}_{G}$ 대해 생각해봅시다. 최적의 $D^{*}_{G}$는 직관적으로도 다음을 만족해야 한다는 것을 생각해볼 수 있습니다.

$$D^{*}_{G}(\mathbf{x})=\frac{p_{data}(\mathbf{x})}{p_{data}(\mathbf{x})+p_{g}(\mathbf{x})}$$

 위 성질을 증명해봅시다.

 $G$가 고정된 상태에서 $D$는 $V(G,D)$를 최대로 만들어야합니다. 기댓값의 정의에 따라 식을 풀어주게 되면 $V(G,D)$를 다음과 같이 나타내볼 수 있습니다.

$$V(G,D)=\int_{X}p_{data}(\mathbf{x})\log(D(\mathbf{x})))dx+\int_{Z}p_{\mathbf{z}}(\mathbf{z})\log(1-D(G(\mathbf{z})))dz\\=\int_{X}p_{data}(\mathbf{x})\log(D(\mathbf{x}))+p_{g}(\mathbf{x})\log(1-D(\mathbf{x}))dx$$

 두 번째 줄로 넘어가는 부분은 $p_{g}$가 어떻게 정의되었는지를 생각해보면 이해하실 수 있을 것입니다. 수학적으로는 치환적분법을 사용하면 될 것 같네요. $\int$ 속을 보면 $D(\mathbf{x})$에 대해 $a\log(y)+b\log(1-y)$ 형태인 것을 알 수 있습니다. 구간 $[0,1]$에서 $y$에 대해 미분하여 0이 되는 곳을 찾아보면 최대로 만드는 $y$를 찾을 수 있을 것입니다.

$$\frac{\partial}{\partial y}a\log(y)+b\log(1-y)=\frac{a}{y}-\frac{b}{1-y}=0$$

$$y=\frac{a}{a+b}$$

$\int$는 무한합으로 생각할 수 있으므로 각각을 최소화하는 것을 생각해본다면 $D^{*}_{G}$의 성질이 증명됩니다.

 

 이제 이 값을 $V(G,D)$에 대입해봅시다. 여기까지의 식은 $\max_{D} V(G,D)$으로 생각할 수 있고 이를 $C(G)$로 나타내 봅시다. $G$는 이 값을 최소화해야 합니다.

$$C(G)=\mathbb{E}_{\mathbf{x}\sim p_{data}}\left[\log\frac{p_{data}(\mathbf{x})}{p_{data}(\mathbf{x})+p_{g}(\mathbf{x})}\right]+\mathbb{E}_{\mathbf{x}\sim p_{g}}\left[\log\frac{p_{g}(\mathbf{x})}{p_{data}(\mathbf{x})+p_{g}(\mathbf{x})}\right]$$

$$=\mathbb{E}_{\mathbf{x}\sim p_{data}}\left[\log\frac{p_{data}(\mathbf{x})}{\frac{p_{data}(\mathbf{x})+p_{g}(\mathbf{x})}{2}}-\log2\right]+\mathbb{E}_{\mathbf{x}\sim p_{g}}\left[\log\frac{p_{g}(\mathbf{x})}{\frac{p_{data}(\mathbf{x})+p_{g}(\mathbf{x})}{2}}-\log2\right]$$

$\mathbb{E}$에서 상수는 그대로 나올 수 있으므로

$$=-\log4+\text{KL}\left(p_{data}\bigg|\bigg|\frac{p_{data}+p_{g}}{2}\right)+\text{KL}\left(p_{g}\bigg|\bigg|\frac{p_{data}+p_{g}}{2}\right)$$

$$=-\log4+2\text{JSD}(p_{data}||p_{g})\geq -\log4$$

 등호가 성립할 조건은 JSD가 0이 될 때이며 이는 $p_{data}=p_{g}$일 때만 성립합니다.

$\square$

한계

 논문에서는 실제 구현할 때는 $G$에 대해 $\log(1-x)$를 최소화 하는 부분을 $\log x$를 최대화하는 것으로 바꾸는 것을 권고합니다. 이는 단순히 경험적으로 Gradient가 너무 작아서... 라고 하는데 수학적으로 저렇게 하는 근거는 없지만 구현은 잘 된다고 합니다.

 또한 위의 증명에서 볼 수 있듯이 증명은 확률 밀도 함수에서 이루어졌습니다. 하지만 우리가 실제 사용하는 데이터는 무한하지 않으므로 확률 밀도로 근사하는 것이 되고 이해하지 못해서 여기서 다루지는 못했지만 2번 증명에서 몇 가지 가정을 하게 됩니다. MLP 모델이 '충분한' 용량을 가지고 있어야 하고 매 iteration마다 $G$에 최적화된 $D$를 가정하는데 이는 현실적으로 거의 불가능합니다.

 

 

 쓰다보니 알게 되었는데 말투가 이전 글들이랑 바뀌었네요. 앞으로도 그럴거 같으니 미리 적어둡니다. 

 

Written by Xylene

'Deep Learning > GAN' 카테고리의 다른 글

GAN(Generative Adversarial Network) 개요  (0) 2020.08.24
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함