若何来找到更接近的分布,这就是 GAN 的供献了。先给出 GAN 的公式:

这个式子的好处在于,固定 G,max V(G,D) 就表示 PG 和 Pdata 之间的差别,然后要找一个最好的 G,让这个最大年夜值最小,也就是两个分布之间的差别最小。

外面上看这个的意思是,D 要让这个式子尽可能的大年夜,也就是对于 x 是真实分布中,D(x) 要接近与 1,对于 x 来自于生成的分布,D(x) 要接近于 0,然后 G 要让式子尽可能的小,让来自于生成分布中的 x,D(x) 尽可能的接近 1。
如今我们先固定 G,来求解最优的 D:



可以获得:


JS divergence 是 KL divergence 的对称腻滑版本,表示了两个分布之间的差别,这个推导就注解了膳绫擎所说的,固定 G。

表示两个分布之间的差别,最小值是 -2log2,最大年夜值为 0。
接着,开端练习出二代的 generator,它能生成稍好一点的图片,可以或许让一代的 discriminator 认为这些生成的图片是真实的图片。然后会练习出一个二代的 discriminator,它能精确的辨认出真实的图片,和二代 generator 生成的图片。以词攀类推,会有三代,四代。。。n 代的 generator 和 discriminator,最后 discriminator 无法分辨生成的图片和真实图片,这个收集就拟合了。
如今我们须要找个 G,来最小化

不雅察上式,当 PG(x)=Pdata(x) 时,G 是最优的。
4.练习
有了膳绫擎推导的基本之后,我们就可以开端练习 GAN 了。结合我们开首说的,两个收集瓜代练习,我们可以在起先有一个 G0 和 D0,先练习 D0 找到 :

然后固定 D0 开端练习 G0, 练习的过程都可以应用 gradient descent,以词攀类推,练习 D1,G1,D2,G2,...
然则这里有个问题就是,你可能在 D0* 的地位取到了:

然后更新 G0 为 G1,可能

了,然则并不包管会出现一个新的点 D1* 使得

如许更新 G 就没达到它本来竽暌功该要的效不雅,如下图所示:

避免上述情况的办法就是更新 G 的时刻,不要更新 G 太多。
知道了收集的练习次序,我们还须要设定两个 loss function,一个是 D 的 loss,一个是 G 的 loss。下面是全部 GAN 的练习具体步调:

上述步调在机械进修和深度进修中也长短经常见,易于懂得。
5.存在的问题
然则膳绫擎 G 的 loss function 照样有一点小问题,下图是两个函数的图像:
然则 auto-encoder 生成 image 的效不雅,当然看着很别扭啦,一眼就能看出真假。所今后来还提出了比如VAE如许的生成模型,我对此也不是很懂得,在这就不细说。

log(1-D(x)) 是我们计算时 G 的 loss function,然则我们发明,在 D(x) 接近于 0 的时刻,这个函数十分腻滑,梯度异常的小。这就会导致,在练习的初期,G 想要骗过 D,变更十分的迟缓,而膳绫擎的函数,趋势和下面的是一样的,都是递减的。然则它的优势是在 D(x) 接近 0 的时刻,梯度很大年夜,有利于练习,在 D(x) 越来越大年夜之后,梯度减小,这也很相符实际,在初期应钙揭捉?练速度更快,到后期速度减慢。
推荐阅读
【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路! UPS不间断电源持续扩大年夜应>>>详细阅读
本文标题:开发者自述:我是这样学习 GAN 的
地址:http://www.17bianji.com/lsqh/36217.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示