GAN 的理解

简介

在这里插入图片描述
上图中 P G P_G PG P d a t a P_{data} Pdata我们都是不知道的,因此无法表示他们,故无法计算KL散度(Div表示KL Divergence)。GAN神奇的地方就是不直接计算两个概率分布的KL散度,而是通过判别器来解决这个问题,如上图中所示,引出目标函数 V ( G , D ) V(G,D) V(G,D),通过最优化这个目标函数来达到最小化KL散度的目标。

理论:

m i n G m a x D V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] \mathop{min}\limits_{G}\mathop{max}\limits_{D}V(D,G)=E_{x\sim p_{data}(x)}[logD(x)]+E_{z\sim p_(z)}[log(1-D(G(z)))] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezp(z)[log(1D(G(z)))]

其中 V V V表示Value, x x x表示真实数据, z z z表示噪声, G ( z ) G(z) G(z)表示生成器生成的样本, E E E表示期望。

D D D想增加这个值Value(通过对 D ( x ) D(x) D(x)输出1, D ( G ( z ) ) D(G(z)) D(G(z))输出0,即正确分类,使V接近0), G G G想减小这个值(通过让 D D D G ( z ) G(z) G(z)分为1,使V负无穷)。当二者达到纳什平衡时,它们各自达到最优。

注: D ( x ) ∈ ( 0 , 1 ) D(x)\in (0,1) D(x)(0,1) V ( D , G ) ∈ ( − ∞ , 0 ] V(D,G)\in (-∞,0] V(D,G)(,0]

实际:

根据前面价值函数 V(G,D) 的定义,我们需要求两个数学期望,即 E[log(D(x))] 和 E[log(1-D(G(z)))],其中 x 服从真实数据分布,z 服从初始化分布。但在实践中,我们是没有办法利用积分求这两个数学期望的,所以一般我们能从无穷的真实数据和无穷的生成器中做采样以逼近真实的数学期望,即:
m i n G m a x D V ~ ( D , G ) = 1 m ∑ i = 1 m log ⁡ D ( x i ) + 1 m ∑ i = 1 m log ⁡ ( 1 − D ( G ( z i ) ) ) \mathop{min}\limits_{G}\mathop{max}\limits_{D}\tilde{V}{(D,G)}=\frac{1}{m} \sum_{i=1}^{m} \log D\left(x^{i}\right)+\frac{1}{m} \sum_{i=1}^{m} \log \left(1-D\left(G(z^i)\right)\right) GminDmaxV~(D,G)=m1i=1mlogD(xi)+m1i=1mlog(1D(G(zi)))

训练时,分别固定 G G G,最大化 L ( D ) L(D) L(D)和固定 D D D,最小化 L ( G ) L(G) L(G)

伪代码:在这里插入图片描述
第一步我们训练D,D是希望V(G, D)越大越好,所以是加上梯度(ascending)。第二步训练G时,V(G, D)越小越好,所以是减去梯度(descending)。整个训练过程交替进行。

内循环 D D D的迭代次数 k k k也可以多于 G G G。因为有一个好的判别器才能引导生成器的学习。

参考:机器之心

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值