一. GAN
引言: 生成对抗网络 GAN, 是当今的一大热门研究方向. 在 2014 年, 被 Goodfellow 大神提出来, 当时的 G 神还是蒙特利尔大学的博士生. 据有关媒体统计: CVPR2018 的论文里, 有三分之一的论文与 GAN 有关. 由此可见, GAN 在视觉领域的未来多年内, 将是一片沃土. 而我们入坑 GAN, 首先需要理由, GAN 能做什么, 为什么要学 GAN.
》》GAN 的初衷就是生成不存在于真实世界的数据, 类似于使得 AI 具有创造力或者想象力. 应用场景如下:
》AI 作家, AI 画家等需要创造力的 AI 体;
》将模糊图变清晰(去雨, 去雾, 去抖动, 等);
》进行数据增强, 根据已有数据生成更多新数据供以 feed, 可以减缓模型过拟合现象.
接下来我们对 GAN 进行讨论:
(1)GAN 的思想是是一种二人零和博弈思想(two-player game), 博弈双方的利益之和是一个常数, 比如两个人掰手腕, 假设总的空间是一定的, 你的力气大一点, 那你就得到的空间多一点, 相应的我的空间就少一点, 相反我力气大我就得到的多一点, 但有一点是确定的就是, 我两的总空间是一定的, 这就是二人博弈, 但是呢总利益是一定的.
引申到 GAN 里面就是可以看成, GAN 中有两个这样的博弈者, 一个人名字是生成模型 (G), 另一个人名字是判别模型(D). 他们各自有各自的功能. 比如, 我们有一些真实数据, 同时也有一把乱七八糟的假数据.(G) 拼命地把随手拿过来的假数据模仿成真实数据, 并揉进真实数据里.(D)则拼命地想把真实数据和假数据区分开. 这里,(G)就是一个生成模型, 类似于卖假货的, 一个劲儿地学习如何骗过 (D). 而 (D) 则是一个判别模型, 类似于警察叔叔, 一个劲儿地学习如何分辨出 (G) 的骗人技巧. 如此这般, 随着 (D) 的鉴别技巧越来越牛,(G)的骗人技巧也越来越纯熟了.
相同点是:
这两个模型都可以看成是一个黑匣子, 接受输入然后有一个输出, 类似一个函数, 一个输入输出映射.
不同点是:
生成模型 (G) 功能: 比作是一个样本生成器, 输入一个噪声 / 样本, 然后把它包装成一个逼真的样本, 也就是输出.
判别模型(D): 比作一个二分类器(如同 0-1 分类器), 来判断输入的样本是真是假.(就是输出值大于 0.5 还是小于 0.5).
(2)训练这样的两个模型的大方法就是: 单独交替迭代训练.
我们可以实现定义一个迭代次数, 交替迭代到一定次数后停止即可. 这个时候我们再去看一看噪声 Z 生成的假样本会发现, 原来它已经很真了. 看完了这个过程是不是感觉 GAN 的设计真的很巧妙, 个人觉得最值得称赞的地方可能在于这种假样本在训练过程中的真假变换, 这也是博弈得以进行的关键之处.
(3)生成对抗网络的运作过程:
》》》在 a 图中, 初始状态生成数据与真实数据相比具有很大的差距, 判别器具备初步划分是否是真实数据的能力, 但是由于存在噪声, 效果仍有缺陷;
》》》在 b 图中, 通过对于判别器的训练, 判别器 D 开始逐渐向一个比较完善的的方向收敛;
》》》在 c 图中, 我们让生成数据向真实数据移动, 使得生成数据更容易被判别器判别别为真实数据;
》》》在 d 图中, 达到理想的 p(生成)=p(真实), 此时 D 与 G 都无法再更进一步优化! D(x)=1/2. 我们的生成模型跟源数据拟合之后就没法再继续学习了(因为常数线 y = 1/2 求导永远为 0).
(如下图 a,b,c,d 所示)
(4)GAN 的特点:
● 相比较传统的模型, 他存在两个不同的网络, 而不是单一的网络, 并且训练方式用的是对抗训练方式.
● GAN 中 G 的梯度更新信息来自判别器 D, 而不是来自数据样本.
(5)GAN 的优缺点:
》》》优点:
● GAN 是一种生成式模型, 相比较其他生成模型 (玻尔兹曼机和 GSNs) 只用到了向传播, 而不需要复杂的马尔科夫链;
● 相比其他所有模型, GAN 可以产生更加清晰, 真实的样本;
● GAN 采用的是一种无监督的学习方式训练, 可以被广泛用在无监督学习和半监督学习领域;
● 相比于变分自编码器, GANs 没有引入任何决定性偏置( deterministic bias), 变分方法引入决定性偏置, 因为他们优化对数似然的下界, 而不是似然度本身, 这看起来导致了 VAES 生成的实例比 GANs 更模糊;
● 相比 VAE, GANs 没有变分下界, 如果鉴别器训练良好, 那么生成器可以完美的学习到训练样本的分布. 换句话说, GANs 是渐进一致的, 但是 VAE 是有偏差的;
● GAN 应用到一些场景上, 比如图片风格迁移, 超分辨率, 图像补全, 去噪, 避免了损失函数设计的困难, 不管三七二十一, 只要有一个的基准, 直接上判别器, 剩下的就交给对抗训练了.
》》》缺点:
● 训练 GAN 需要达到纳什均衡, 有时候可以用梯度下降法做到, 有时候做不到. 我们还没有找到很好的达到纳什均衡的方法, 所以训练 GAN 相比 VAE 或者 PixelRNN 是不稳定的, 但我认为在实践中它还是比训练玻尔兹曼机稳定的多
● GAN 不适合处理离散形式的数据, 比如文本
● GAN 存在训练不稳定, 梯度消失, 模式崩溃的问题(目前已解决)
二.DCGAN(深度卷积对抗网络)
来源: https://www.cnblogs.com/SNLYM/p/11510576.html