提出一个GAN
(Generative Adversarial Nets)
1 方法
(1)生成模型G(Generative),是用来得到分布的,在统计学眼里,整个世界是通过采样不同的分布得到的,生成东西的话,目前就是要抓住一个数据的分布,
(2)辨别模型D(D) ,他是来辨别你的样本究竟是从真实世界来的呢,还是来自于生成模型G
想象一场假币制造比赛,有两名参赛者:造币专家(生成器)和验币专家(判别器)。
-
造币专家(生成器):这位专家的任务是制造伪造的硬币,希望这些伪造硬币尽量像真正的硬币一样。生成器开始时可能只是随机制造硬币,但通过不断练习,它学会了如何制造更加逼真的伪造硬币。
-
验币专家(判别器):验币专家的任务是检查硬币,确定它们是真正的还是伪造的。判别器开始时可能很容易识别伪造硬币,但随着时间的推移,它变得越来越擅长区分真伪。
比赛的规则如下:
-
造币专家(生成器)制造了一些伪造硬币,并将它们交给验币专家(判别器)。
-
验币专家(判别器)尝试检查硬币,然后告诉造币专家哪些硬币是伪造的,哪些是真的。
-
造币专家(生成器)收到反馈后,尝试改进伪造硬币的制造方法,以使它们更难被验币专家(判别器)识别。
-
验币专家(判别器)也在不断提高自己的检测技能,以侦测越来越逼真的伪造硬币。
这个过程不断重复,生成器和判别器互相竞争,生成器努力制造更逼真的伪造硬币,判别器努力提高自己的验币技能。随着时间的推移,生成器越来越擅长制造逼真的伪造硬币,而判别器越来越擅长检测它们。最终,生成器制造的伪造硬币变得如此逼真,以至于判别器几乎无法区分真伪。
2 可视化举例
以一维度数据做可视化
紫色线条是判别器D,绿色线条是生成器G,黑色线条是真实分布
图(a)初始状态 此时可以观察到 真实分布(黑色)和生成器(绿色)的分布差别较大,判别器(紫色)
图(b)更新判别器(紫色) 此时可以观察到 判别器(紫色)可以分辨的比较好了,黑色线附近为1 ,绿色线附近为0
图(c)更新生成器(绿色) 此时可以观察到 生成器(绿色)像真实数据分布靠近,为了使得判别器不分别出来
图(d)不断反复,可以看到 绿色生成器要尽量靠近黑色生成数据,当足够接近的时候,会发现判别器输出就是0.5了,此时就无法分辨了
3 算法流程
最简单的应用是G和D是MLP
如图所示
(1)从噪声中采样m个样本得到z,从真实数据中采样m个样本得到x
(2)先更新判别器,增强判别器
D(x) 表示把真实分布采样得到的数据放到辨别器里,假如辨别器是完美的,那么D(x)是1 log(D(x))是0,如果不完美,则 log(D(x))为负数
G(z)表示把噪音分布采样得到的噪音放到生成器里,会生成伪真实x,再放入D判别器,假如辨别器是完美的,那么D(x)是0 整体log(1-D(G(x)))是0 ,如果不完美的话,也会输出负数
所以要最大化如下函数,使得接近0
使得判别器函数输出尽可能正确,尽可能完美区分
(3)再更新生成器,使得生成器尽可能糊弄判别器
使得后面一项尽可能小
这样就会导致生成器尽可能糊弄判别器
k是一个超参数,要保证我们的G和D每次进步差不多,这样才能保证我们自己的一个有效性
外面的这个for loop就是说我们要迭代N次文章来源:https://www.toymoban.com/news/detail-675265.html
怎么判断收敛是一个比较难的点,因而有些时候不是很有效文章来源地址https://www.toymoban.com/news/detail-675265.html
到了这里,关于GAN | 论文精读 Generative Adversarial Nets的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!