avatar

Gan网络全局最优解推导

引言

本文是对GAN网络中目标函数全局最优解情况的推导,推导过程在原论文有给出。这里再对其进行一个推导。

推导

首先重新看一下目标函数$$\underset Gmin\underset Dmax V(D,G)=E_{x_\tilde{} p_{data}}(x)[logD(x)]+E_{z\tilde{} p_z(z)}[log(1-D(G(z)))]$$

我们可以先固定G,来求一下D在什么情况下使得函数最大。就变成了求$$\underset Dmax V(D,G)$$

求解$\underset Dmax V(D,G)$

我们先对V(D,G)变一下形,即$$\int_x p_{data}(x)log(D(x))dx+\int_zp_z(z)log(1-D(g(z)))dz$$$$=\int_xp_{data}(x)log(D(x))+p_g(x)log(1-D(x))dx$$

我们知道对于形如$alog(y)+blog(1-y)$的函数它在[0,1]区间内在$\frac{a}{a+b}$取得最大值,区间为[0,1]是因为x表示的概率分布是[0,1]之间的。所以V(D,G)在$D_G^* = \frac{p_{data}(x)}{p_{data}(x)+p_g(x)}$取得最大值。

接下来就是求解$\underset GminV(D,G)$。

求解$\underset GminV(D,G)$

将$\underset DmaxV(D,G)$的$D^* $的值带入原目标函数,则变成了$$C(G) = \underset Dmax V(D,G)$$
$$= E_{x_\tilde{} p_{data}}[logD_G^* (x)]+E_{z\tilde{} p_z}[log(1-D_G^* (G(z)))]$$
$$=E_{x_\tilde{} p_{data}}[logD_G^* (x)]+E_{x\tilde{} p_g}[log(1-D_G^* (G(x))]$$
$$=E_{x_\tilde{} p_{data}}[log\frac{p_{data}(x)}{p_{data}(x)+p_g(x)}]+E_{x\tilde{} p_g}[log\frac{p_g(x)}{p_{data}(x)+p_g(x)}]$$
$$=E_{x_\tilde{} p_{data}}[log(\frac{p_{data}(x)}{(p_{data}(x)+p_g(x))/2}* \frac{1}{2})]+E_{x\tilde{} p_g}[log(\frac{p_g(x)}{(p_{data}(x)+p_g(x))/2}* \frac{1}{2})]$$
$$=KL(p_{data}||\frac{p_{data}+p_g}{2})+KL(p_g||\frac{p_{data}+p_g}{2})-log4$$
由KL散度性质得知当两个分布相等的时候,KL散度为0,所以C(G)在$p^* _g=p_d$的时候最小。把$p^* _g=p_d$再带回$D_G^* $得到$D_G^* =\frac{1}{2}$,这个就是目标函数的全局最优解。

文章作者: Matthew Yue
文章链接: https://ninghaiywx.github.io/2020/04/18/Gan网络全局最优解推导/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MatthewY's Blog

评论