GAN 的理解

理论:

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)))]

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

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

注: D ( x ) ( 0 , 1 ) D(x)\in (0,1) V ( D , G ) ( , 0 ] V(D,G)\in (-∞,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)

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

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

内循环 D D 的迭代次数 k k 也可以多于 G G

参考:机器之心

发布了108 篇原创文章 · 获赞 7 · 访问量 4387

猜你喜欢

转载自blog.csdn.net/weixin_44795555/article/details/104640538
GAN