淘先锋技术网

首页 1 2 3 4 5 6 7

简要说明

Generative Adversarial Nets1 被认为是生成式对抗网络的鼻祖。文中提出的模型成为了后续各式各样GAN模型的基础。

模型介绍

简述

在文中提出了被简称为GAN的模型。其核心思想为该模型由生成器 G G G和判别器 D D D组成。其中 G G G负责生成新的样本,而 D D D负责鉴别样本真伪。在理想情况下的最终结果为 G G G能够生成以假乱真的样本,而 D D D的Loss为 1 / 2 1/2 1/2

在原文中使用了印假钞的犯罪分子与辨识假钞的警察为例。犯罪分子希望能够印刷骗过警察的假钞,而警察希望能够辨识出假钞。在一次次的博弈中,警察的辨识手段越来越丰富,而犯罪分子的技术也越来越高明。最后,假钞能够以假乱真,而警察完全无法辨识。其中犯罪分子对应 G G G,而警察对应 D D D

模型结构

模型分为 G G G D D D两部分。生成器 G G G输入噪声 z z z生成样本。判别器 D D D输入真实样本 x x x G G G生成的样本 G ( z ) G(z) G(z),并输出表示输入的样本是否为真实样本概率的一个标量。 D D D希望最大化甄别真实样本的概率 E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})] Expdata (x)[logD(x)]和甄别生成样本的概率 E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log (1-D(G(\boldsymbol{z})))] Ezpz(z)[log(1D(G(z)))]。而 G G G的目标则是最小化这两项。文中使用 V ( G , D ) V(G,D) V(G,D)来表述这一过程:
min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( 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)))]
在实际操作中, G G G不需要关注 E x ∼ p data  ( x ) [ log ⁡ D ( x ) ] \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}(\boldsymbol{x})}[\log D(\boldsymbol{x})] Expdata (x)[logD(x)],并且由于在训练刚开始时 D D D能够轻易分辨生成样本,导致 log ⁡ ( 1 − D ( G ( z ) ) ) \log(1-D(G(z))) log(1D(G(z)))过小。因此文中建议在训练 G G G时最大化 log ⁡ D ( G ( z ) ) \log D(G(z)) logD(G(z))代替最小化 log ⁡ ( 1 − D ( G ( z ) ) ) \log(1-D(G(z))) log(1D(G(z))),即
max ⁡ G V ′ ( D , G ) = E z ∼ p z ( z ) [ log ⁡ D ( G ( z ) ) ] \max _{G} V'(D, G)=\mathbb{E}_{\boldsymbol{z} \sim p_{\boldsymbol{z}}(\boldsymbol{z})}[\log D(G(\boldsymbol{z}))] GmaxV(D,G)=Ezpz(z)[logD(G(z))]
log ⁡ ( x ) \log(x) log(x)图像:
log(x)
log ⁡ ( 1 − x ) \log(1-x) log(1x)图像:
log(1-x)
可以看出对于 log ⁡ ( 1 − x ) \log(1-x) log(1x) x x x趋近于0时梯度较小而 log ⁡ ( x ) \log(x) log(x)则能能在趋近于0时提供较大梯度。

训练过程

训练过程
图中黑色虚线为实际样本分布 p d a t a p_{data} pdata,蓝色虚线为 D D D的分布,绿色实线为 G G G的分布 p g ( G ) p_{g}(\mathrm{G}) pg(G)。水平线 x x x为被生成样本 x x x的空间, z z z为噪声 z z z的空间。水平线中间的箭头代表了从 z z z中取样后经过 G G G映射到 z z z的过程。

在训练过程中,首先固定 G G G,在 p d a t a p_{data} pdata p g p_{g} pg中各取出 m m m个样本,进行梯度上升
∇ θ d 1 m ∑ i = 1 m [ log ⁡ D ( x ( i ) ) + log ⁡ ( 1 − D ( G ( z ( i ) ) ) ) ] \nabla_{\theta_{d}} \frac{1}{m} \sum_{i=1}^{m}\left[\log D\left(\boldsymbol{x}^{(i)}\right)+\log \left(1-D\left(G\left(\boldsymbol{z}^{(i)}\right)\right)\right)\right] θdm1i=1m[logD(x(i))+log(1D(G(z(i))))]
将此过程重复 k k k次后, G G G能够拟合 p d a t a p_{data} pdata p g p_{g} pg,如状态(b)。此时 D ∗ ( x ) = p data  ( x ) p data  ( x ) + p g ( x ) D^{*}(\boldsymbol{x})=\frac{p_{\text {data }}(\boldsymbol{x})}{p_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})} D(x)=pdata (x)+pg(x)pdata (x)。随后 G G G D D D进行梯度下降
∇ θ g 1 m ∑ i = 1 m log ⁡ ( 1 − D ( G ( z ( i ) ) ) ) \nabla_{\theta_{g}} \frac{1}{m} \sum_{i=1}^{m} \log \left(1-D\left(G\left(\boldsymbol{z}^{(i)}\right)\right)\right) θgm1i=1mlog(1D(G(z(i))))
图(c)为新的状态。至此为一次完整的训练。

将训练重复数次后 D D D G G G将达到平衡,此时 p d a t a = p g p_{data} = p_{g} pdata=pg,即 D ∗ = 1 / 2 D^* = 1/2 D=1/2。至此 D D D将完全无法分辨样本来源。

证明过程

对于给定 G G G D D D的最优解为 p data  ( x ) p data  ( x ) + p g ( x ) \frac{p_{\text {data }}(\boldsymbol{x})}{p_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})} pdata (x)+pg(x)pdata (x)

在训练过程中实际工作内容为 max ⁡ V ( G , D ) \max V(G,D) maxV(G,D)
V ( G , D ) = ∫ x p data  ( x ) log ⁡ ( D ( x ) ) d x + ∫ z p z ( z ) log ⁡ ( 1 − D ( g ( z ) ) ) d z = ∫ x p data  ( x ) log ⁡ ( D ( x ) ) + p g ( x ) log ⁡ ( 1 − D ( x ) ) d x \begin{aligned} V(G, D) &=\int_{\boldsymbol{x}} p_{\text {data }}(\boldsymbol{x}) \log (D(\boldsymbol{x})) d x+\int_{\boldsymbol{z}} p_{\boldsymbol{z}}(\boldsymbol{z}) \log (1-D(g(\boldsymbol{z}))) d z \\ &=\int_{\boldsymbol{x}} p_{\text {data }}(\boldsymbol{x}) \log (D(\boldsymbol{x}))+p_{g}(\boldsymbol{x}) \log (1-D(\boldsymbol{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 ) ∈ R 2 \ { 0 , 0 } (a, b) \in \mathbb{R}^{2} \backslash\{0,0\} (a,b)R2\{0,0},方程 a log ⁡ ( y ) + b log ⁡ ( 1 − y ) a \log (y)+b \log (1-y) alog(y)+blog(1y)总是能够在 y = a a + b y=\frac{a}{a+b} y=a+ba时取到最大值, y ∈ [ 0 , 1 ] y \in [0,1] y[0,1]。在原式中 a = p d a t a ( x ) , b = p g ( x ) a=p_{data}(x), b=p_{g}(x) a=pdata(x),b=pg(x)。因此求得 D ∗ = p data  ( x ) p data  ( x ) + p g ( x ) D^*=\frac{p_{\text {data }}(\boldsymbol{x})}{p_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})} D=pdata (x)+pg(x)pdata (x)

当且仅当 p g = p d a t a p_{g} = p_{data} pg=pdata时达到全局最优点

D ∗ ( x ) = p data  ( x ) p data  ( x ) + p g ( x ) D^{*}(\boldsymbol{x})=\frac{p_{\text {data }}(\boldsymbol{x})}{p_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})} D(x)=pdata (x)+pg(x)pdata (x)带入 V ( G , D ) V(G,D) V(G,D)
C ( G ) = max ⁡ D V ( G , D ) = E x ∼ p data  [ log ⁡ D G ∗ ( x ) ] + E z ∼ p z [ log ⁡ ( 1 − D G ∗ ( G ( z ) ) ) ] = E x ∼ p data  [ log ⁡ D G ∗ ( x ) ] + E x ∼ p g [ log ⁡ ( 1 − D G ∗ ( x ) ) ] = E x ∼ p data  [ log ⁡ p data  ( x ) P data  ( x ) + p g ( x ) ] + E x ∼ p g [ log ⁡ p g ( x ) p data  ( x ) + p g ( 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 {data }}}\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))]=Expdata [logPdata (x)+pg(x)pdata (x)]+Expg[logpdata (x)+pg(x)pg(x)]
p g = p d a t a p_{g} = p_{data} pg=pdata时, D ∗ ( x ) = 1 2 D^*(x) = \frac{1}{2} D(x)=21
C ( G ) = E x ∼ p data  [ − log ⁡ 2 ] + E x ∼ p g  [ − log ⁡ 2 ] = − log ⁡ 4 \begin{aligned} C(G) &= \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}[-\log 2] + \mathbb{E}_{\boldsymbol{x} \sim p_{\text {g }}}[-\log 2]\\ &=-\log 4 \end{aligned} C(G)=Expdata [log2]+Exp[log2]=log4
C ( G ) = V ( D G ∗ , G ) C(G)=V\left(D_{G}^{*}, G\right) C(G)=V(DG,G)中减去 E x ∼ p data  [ − log ⁡ 2 ] + E x ∼ p g [ − log ⁡ 2 ] = − log ⁡ 4 \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}[-\log 2]+\mathbb{E}_{\boldsymbol{x} \sim p_{g}}[-\log 2]=-\log 4 Expdata [log2]+Expg[log2]=log4可得
C ( G ) + log ⁡ ( 4 ) = E x ∼ p data  [ log ⁡ p data  ( x ) P data  ( x ) + p g ( x ) ] + E x ∼ p g [ log ⁡ p g ( x ) p data  ( x ) + p g ( x ) ] − E x ∼ p data  [ − log ⁡ 2 ] − E x ∼ p g  [ − log ⁡ 2 ] C ( G ) = − log ⁡ ( 4 ) + E x ∼ p data  [ log ⁡ 2 ⋅ p data  ( x ) P data  ( x ) + p g ( x ) ] + E x ∼ p g [ log ⁡ 2 ⋅ p g ( x ) p data  ( x ) + p g ( x ) ] = − log ⁡ ( 4 ) + K L ( p data  ∥ p data  + p g 2 ) + K L ( p g ∥ p data  + p g 2 ) = − log ⁡ ( 4 ) + 2 ⋅ J S D ( p data  ∥ p g ) \begin{aligned} C(G) + \log (4) &= \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\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] \\ & \quad -\mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}[-\log 2] - \mathbb{E}_{\boldsymbol{x} \sim p_{\text {g }}}[-\log 2]\\ C(G) &= -\log(4) + \mathbb{E}_{\boldsymbol{x} \sim p_{\text {data }}}\left[\log \frac{2\cdot 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{2\cdot p_{g}(\boldsymbol{x})}{p_{\text {data }}(\boldsymbol{x})+p_{g}(\boldsymbol{x})}\right] \\ &= - \log (4)+K L\left(p_{\text {data }} \| \frac{p_{\text {data }}+p_{g}}{2}\right)+K L\left(p_{g} \| \frac{p_{\text {data }}+p_{g}}{2}\right) \\ &=-\log (4)+2 \cdot J S D\left(p_{\text {data }} \| p_{g}\right) \end{aligned} C(G)+log(4)C(G)=Expdata [logPdata (x)+pg(x)pdata (x)]+Expg[logpdata (x)+pg(x)pg(x)]Expdata [log2]Exp[log2]=log(4)+Expdata [logPdata (x)+pg(x)2pdata (x)]+Expg[logpdata (x)+pg(x)2pg(x)]=log(4)+KL(pdata 2pdata +pg)+KL(pg2pdata +pg)=log(4)+2JSD(pdata pg)
其中 J S D ( P 1 ∥ P 2 ) = 1 2 K L ( P 1 ∥ P 1 + P 2 2 ) + 1 2 K L ( P 2 ∥ P 1 + P 2 2 ) JSD\left(P_{1} \| P_{2}\right)=\frac{1}{2} K L\left(P_{1} \| \frac{P_{1}+P_{2}}{2}\right)+\frac{1}{2} K L\left(P_{2} \| \frac{P_{1}+P_{2}}{2}\right) JSD(P1P2)=21KL(P12P1+P2)+21KL(P22P1+P2)

由与 J S D JSD JSD为非负数并且当且仅当 p g = p d a t a p_{g} = p_{data} pg=pdata C ( G ) C(G) C(G)达到全局最小值 − log ⁡ ( 4 ) -\log(4) log(4)。此时 p g p_{g} pg完美复制了样本的分布。

模型表现

优点

由于不是逐像素对比,模型生成的图片清晰度高。

缺点

模型难以训练。在训练 G G G的过程中若 D D D没有及时更新则容易发生模式崩塌。


  1. Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A. and Bengio, Y., 2014. Generative adversarial nets. In Advances in neural information processing systems (pp. 2672-2680). ↩︎