《生成对抗网络》原理

1.符号表示
Pg P_{g} Pg
表示生成器的分布。
pz(z) p_{z}(z) pz(z)
表示输入噪声变量的先验。
G(z;θg) G\left(z ; \theta_{g}\right) G(z;θg)
表示由噪声所生成的分布,其中 G 是由网络层和参数 θ表示的可导函数。
D(x;θd) D\left(x ; \theta_{d}\right) D(x;θd)
是判别器,D(x) 表示 x 来自数据集而不是pg的概率。

训练 D 的目标是最大化给训练集和生成数据分配正确标签的概率。同样情况下我们训练G来最小化
log⁡(1−D(G(z))) \log (1-D(G(z))) log(1D(G(z)))
此时的G和D在进行零和博弈,通过价值函数 V(G,D)表示为
min⁡Gmax⁡DV(D,G)=Ex∼pdata (x)[log⁡D(x)]+Ez∼pz(z)[log⁡(1−D(G(z)))] \min _{G} \max _{D} V(D, G)=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] GminDmaxV(D,G)=Expdata (x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

文中采用的方法是:在优化判别器D的k个步骤和优化生成器G的一个步骤之间交替进行。这样做的结果是:只要G改变的足够慢,D将被保持在最优值的附近。具体算法为:

事实上,这场minimax游戏的全局最优解是:pg=pdata p_{g}=p_{\mathrm{data}} pg=pdata下面阐述证明。

首先,我们考虑对于任意的生成器G,存在最优判别器D
命题一:固定G,最优判别器DDG∗(x)=pdata(x)pdata(x)+pg(x) D_{G}^{*}(x)=\frac{p_{\text {data}}(x)}{p_{\text {data}}(x)+p_{g}(x)} DG(x)=pdata(x)+pg(x)pdata(x)
证明:
对于任意生成器G,最大化V(G,D),此时令 g(z)=xV(G,D)=∫xpdata (x)log⁡(D(x))dx+∫zpz(z)log⁡(1−D(g(z)))dz=∫xpdata (x)log⁡(D(x))+pg(x)log⁡(1−D(x))dx \begin{aligned} V(G, D) &=\int_{x} p_{\text {data }}(x) \log (D(x)) d x+\int_{z} p_{z}(z) \log (1-D(g(z))) d z \\ &=\int_{x} p_{\text {data }}(x) \log (D(x))+p_{g}(x) \log (1-D(x)) d x \end{aligned} V(G,D)=xpdata (x)log(D(x))dx+zpz(z)log(1D(g(z)))dz=xpdata (x)log(D(x))+pg(x)log(1D(x))dx
对于任意(a,b)∈R2 \{0,0},函数 y→alog⁡(y)+blog⁡(1−y)y \rightarrow a \log (y)+b \log (1-y)yalog(y)+blog(1y)aa+b\frac{a}{a+b}a+ba 处取得最大值。所以,等式1可以改写成:
C(G)=max⁡DV(G,D)=Ex∼pdata [log⁡DG∗(x)]+Ez∼pz[log⁡(1−DG∗(G(z)))]=Ex∼pdata [log⁡DG∗(x)]+Ex∼pg[log⁡(1−DG∗(x))]=Ex∼pdita [log⁡pdata (x)Pdata (x)+pg(x)]+Ex∼pg[log⁡pg(x)pdata (x)+pg(x)] \begin{aligned} C(G) &=\max _{D} V(G, D) \\ &=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log D_{G}^{*}(\boldsymbol{x})\right]+\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}}\left[\log \left(1-D_{G}^{*}(G(\boldsymbol{z}))\right)\right] \\ &=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log D_{G}^{*}(\boldsymbol{x})\right]+\mathbb{E}_{\boldsymbol{x} \sim p_{g}}\left[\log \left(1-D_{G}^{*}(\boldsymbol{x})\right)\right] \\ &=\mathbb{E}_{\boldsymbol{x} \sim p_{\text {dita }}}\left[\log \frac{p_{\text {data }}(\boldsymbol{x})}{P_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})}\right]+\mathbb{E}_{\boldsymbol{x} \sim p_{g}}\left[\log \frac{p_{g}(\boldsymbol{x})}{p_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})}\right] \end{aligned} C(G)=DmaxV(G,D)=Expdata [logDG(x)]+Ezpz[log(1DG(G(z)))]=Expdata [logDG(x)]+Expg[log(1DG(x))]=Expdita [logPdata (x)+pg(x)pdata (x)]+Expg[logpdata (x)+pg(x)pg(x)]

上面式子用积分形式可以表示为:∫pdata (x)log⁡pdata (x)pdata (x)+pε(x)dx+∫pε(x)log⁡pε(x)pdata (x)+pε(x)dx \int p_{\text {data }}(x) \log \frac{p_{\text {data }}(x)}{p_{\text {data }}(x)+p_{\varepsilon}(x)} \mathrm{d} x+\int p_{\varepsilon}(x) \log \frac{p_{\varepsilon}(x)}{p_{\text {data }}(x)+p_{\varepsilon}(x)} \mathrm{d} x pdata (x)logpdata (x)+pε(x)pdata (x)dx+pε(x)logpdata (x)+pε(x)pε(x)dx

运用KL散度和JS散度的概念,将其改写为:
max⁡DV(G,D)=−log⁡(4)+KL(pdata ∥pdata +pg2)+KL(pε∥pdata +pε2)=−log⁡(4)+2×JSD(pdata ∥pg) \begin{aligned} \max _{D} V(G, D) &=-\log (4)+\mathrm{KL}\left(p_{\text {data }} \| \frac{p_{\text {data }}+p_{g}}{2}\right)+\mathrm{KL}\left(p_{\varepsilon} \| \frac{p_{\text {data }}+p_{\varepsilon}}{2}\right) \\ &=-\log (4)+2 \times \mathrm{JSD}\left(p_{\text {data }} \| p_{g}\right) \end{aligned} DmaxV(G,D)=log(4)+KL(pdata 2pdata +pg)+KL(pε2pdata +pε)=log(4)+2×JSD(pdata pg)

所以,当 pg=pdata 时,C(G)取得全局最小值 -log(4),生成模型完美地重现数据分布。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值