이번 게시물에서는 GAN의 타당성에 대한 증명 2개를 해보겠습니다.
아직 GAN의 작동 원리에 대한 이해가 깊지 않다면 아래 게시물 ↓ 을 먼저 보고 와주세요 :)
증명에 앞서, GAN을 비롯한 모든 생성 모델 (Generative Model)의 목적을 다시 한번 떠올려보겠습니다.
내가 닮고자 하는 data의 분포와 가장 유사하도록 Generator의 분포를 형성하는것이 바로 그 목적이었습니다.
다른 말로, $P_{data}$와 $P_g$ 거리가 최소가 될 수 있도록 만들어주는 것입니다. 이를 수식으로 표현하면, ↓
$$P_{data} = P_g$$
따라서 GAN은 아래 두가지 를 증명합니다.
1. $P_{data} = P_g$일때가 Global Optimum인가
: $P_{data}$와 gernerative model distribution이 정확히 일치할 때 global optimum이며, 그때 $P_{data} = P_g$를 갖는가?
2. Algorithm1을 수행했을 시 Converge(수렴) 하는가
: 아래의 알고리즘이 실제로 global optimality $P_{data} = P_g$인 해를 찾을 수있는가?
1. Global Optimality of $P_{data} = P_g$
Proposition 1. 어떤 고정된 $G$에 대하여 최적의 Discriminator $D$는 다음과 같다.
$$\frac{P_{data}(x)}{P_{data}(x) + P_g(x)}$$
Proof. [1단계]
GAN의 value function $V(G,D)$는 아래와 같습니다.
$$\underset{G}{min}\underset{D}{max}V(D,G) = E_{x\sim p_{data}(x)}[log D(x)] + E_{z\sim p_{z}(z)}[log(1 - D(G(z)))]$$
여기서 G는 고정이 됐다고 가정을 하면, Value Function을 아래와 같이 새로 쓸 수 있습니다.
$$= D^*(x) = \arg\underset{D}{max} V(D) = E_{x\sim p_{data}(x)}[log D(x)] + E_{z\sim p_{z}(z)}[log(1 - D(G(z)))] $$
※ $D^*(x)$는 optimal D
위 식을 다시 한번 아래와 같이 바꿀 수 있습니다.
$$= E_{x\sim p_{data}(x)}[log D(x)] + E_{x\sim p_{g}(x)}[log(1 - D(x)]$$
※ z를 $P_z$에서 샘플링해서 Generator에 주고 G(z)가 생성한 fake image는 $P_g$를 따르게 됩니다.
※ 이는 곧, x를 $P_g$에서 샘플링하는것과 같다고 할 수 있습니다.
Expectation의 정의 $E_{x\sim p(x)}[f(x)] = \int_{x}^{}p(x)f(x)dx$ 에 의해 적분식으로 바꿔 줍니다.
$$= \int_{x}^{}p_{data}(x) log D(x)dx + \int_{x}^{}p_{g}(x)log(1 - D(x))dx$$
$$= \int_{x}^{}p_{data}(x) log D(x)dx + p_{g}(x)log(1 - D(x))dx$$
결국 아래 적분식을 최대화 해야 한다는 결론에 도달합니다. 적분식을 최대화하는것은 적분식 안의 식을 최대화 하는것과 마찬가지입니다.
$$D^*(x)= \arg\underset{D}{max} V(D) = \int_{x}^{}p_{data}(x) log D(x)dx + p_{g}(x)log(1 - D(x))dx$$
$p_{data}(x) log D(x) + p_{g}(x)log(1 - D(x))$ 에서,
$P_{data}(x) = a, D(x)=y, P_g(x)=b$로 치환을 해주면,
$alogy + blog(1-y)$라는 식이 됩니다.
식을 미분해 y=0인 지점을 구합니다. 그러면 $y = \frac{a}{a+b}$ 에서 최대값을 가지는것을 알 수 있습니다.
따라서 어떤 고정된 $G$에 대하여 최적의 Discriminator $D$는 $\frac{P_{data}(x)}{P_{data}(x)) + P_g(x)}$라는 명제가성립합니다.
Proof.[2단계]
위에서 구한 $D^*$를 이용해 V(D,G)를 다시 쓸 수 있습니다.
$$\underset{G}{min}\underset{D}{max}V(G,D) = \underset{G}{min}V(D^*,G)$$
※G의 역할은 minimize입니다
$$ V(D^*,G) = E_{x\sim p_{data}(x)}[log D^*(x)] + E_{x\sim p_g}[log(1 - D^*(x)]$$
또 다시 Expectation의 정의를 적용합니다.
$$= \int_{x}^{}p_{data}(x)log\frac{P_{data}(x)}{P_{data}(x) + P_g(x)}dx + \int_{x}^{}p_{g}(x)log\frac{P_{data}(x)}{P_{data}(x) + P_g(x)}dx$$
이 식에 -log4 + log4를 더해줍니다. ( log4 = 2log2)
$$= -log4 + {\color{Blue} {log4}} +\int_{x}^{}p_{data}(x)log\frac{P_{data}(x)}{P_{data}(x) + P_g(x)}dx + \int_{x}^{}p_{g}(x)log\frac{P_{data}(x)}{P_{data}(x) + P_g(x)}dx$$
$$= -log4 + \int_{x}^{}p_{data}(x)log\frac{{\color{Blue} 2} \cdot P_{data}(x)}{P_{data}(x) + P_g(x)}dx + \int_{x}^{}p_{g}(x)log\frac{{\color{Blue} 2}\cdot P_{data}(x)}{P_{data}(x) + P_g(x)}dx$$
이제 KL Divergence라는 개념이 등장합니다.
KL Divergence는, 어떤 두 함수의 확률분포가 얼마나 다른지 그 차이를 측정하는 식입니다. 비교하려는 확률질량함수가 A, 기준이 되는 확률질량함수가 B일때, 비교함수-기준함수, $-logA(x) - (-logB(x))$에 기준확률질량함수의 확률분포 기대값을 씌워줍니다. $$D_{KL}(B||A) = E_{x\sim B}[log\frac{B(x)}{A(x)}] =\sum_{x}^{}B(x)log\frac{B(x)}{A(x)}$$ |
KL Divergence를 사용하면 integral(확률질량함수)을 아래와 같이 바꿀 수 있습니다.
$$\int_{x}^{}p_{data}(x)log\frac{2 \cdot P_{data}(x)}{P_{data}(x) + P_g(x)}dx = KL(p_{data}||\frac{p_{data} +p_g}{2})$$
$$ -log4 + \int_{x}^{}p_{data}(x)log\frac{2 \cdot P_{data}(x)}{P_{data}(x) + P_g(x)}dx + \int_{x}^{}p_{g}(x)log\frac{{\color{Blue} 2}\cdot P_{data}(x)}{P_{data}(x) + P_g(x)}dx$$
$$= -log4 + KL(p_{data}||\frac{p_{data} +p_g}{2}) + KL(p_{g}||\frac{p_{data} +p_g}{2})$$
위의 수식은 Jenson-Shannon divergence(JSD)로 다시 정리가 될수 있기 때문에, 최종적으로, 아래의 식을 도출할 수 있습니다.
$$V(D^*,G)= -log4 + 2\cdot JSD(P_{data}||P_g)$$
V(D,G)를 optimize하는것은 JSD값을 minimize하는것과 마찬가지이고, (log4는 고정값이기 때문)
JSD는 Pdata와 Pg가 일치할때만 0, 그외에는 양수값을 지니기 때문에,
V(D,G)의 global minimum은 Pg = Pdata 일 때라는 것을 다시한번 확인할 수 있습니다.
$P_{data}(x) = P_g(x) $ ☞ $D^*(x) = \frac{P_{data}(x)}{P_{data}(x) + P_g(x)} = \frac{1}{2}$
따라서 $P_{data}(x) = P_g(x) $ 일때가 unique solution 임이 증명되었다!
2. Convergence of Algorithm1
'Deep Learning > GAN' 카테고리의 다른 글
[GAN] LSGAN - Paper Review, 리뷰 (0) | 2021.07.08 |
---|---|
[GAN] DCGAN - 논문 리뷰, Paper Review, 설명 (2) (0) | 2021.07.06 |
[GAN] DCGAN - 논문 리뷰, Paper Review, 설명 (1) (0) | 2021.07.06 |
[GAN] Generative Adversarial Nets - Paper Review (1) | 2021.06.29 |