GAN学习

开始学习GAN生成对抗网络相关知识,将要点和心得总结于此。

起源

GAN,全名 Generative Adversarial Networks,即生成式对抗网络,是2014年Lan Goodfellow的论文《Generative Adversarial Nets》中提出的一种新的方法,是一种无监督学习模型,通过学习样本分布让算法生成类似分布的图片。

主要思想

GAN的主要灵感来源于博弈论中零和博弈的思想。通过生成网络G(Generator)和判别网络D(Discriminator)不断博弈,进而使G学习到数据的分布,根据一定的映射规则从一段随机数中生成逼真的图像。
G是一个生成网络,输入为一个随机的噪声,输出为的生成图像。
D是一个判别网络,输入为一张图片,输出为真实图片的概率,范围为0-1。
训练过程中,G的目标就是尽量生成真实的图片去欺骗D。而D的目标就是尽量辨别出G生成的假图像。这样,G和D构成了一个动态的“博弈过程”,最终的平衡点即纳什均衡点
G的梯度更新信息来自判别器D,而不是来自数据样本。

特点

GAN 的优点:

  1. GAN是一种生成式模型,相比较其他生成模型(玻尔兹曼机和GSNs)只用到了反向传播,而不需要复杂的马尔科夫链。
  2. 相比其他所有模型, GAN可以产生更加清晰,真实的样本
  3. GAN采用的是一种无监督的学习方式训练,可以被广泛用在无监督学习和半监督学习领域
  4. 相比于变分自编码器, GANs没有引入任何决定性偏置( deterministic bias),变分方法引入决定性偏置,因为他们优化对数似然的下界,而不是似然度本身,这看起来导致了VAEs生成的实例比GANs更模糊
  5. 相比VAE, GANs没有变分下界,如果鉴别器训练良好,那么生成器可以完美的学习到训练样本的分布.换句话说,GANs是渐进一致的,但是VAE是有偏差的
  6. GAN应用到一些场景上,比如图片风格迁移,超分辨率,图像补全,去噪,避免了损失函数设计的困难,不管三七二十一,只要有一个的基准,直接上判别器,剩下的就交给对抗训练了。

GAN的缺点:

  1. 训练GAN需要达到纳什均衡,有时候可以用梯度下降法做到,有时候做不到.我们还没有找到很好的达到纳什均衡的方法,所以训练GAN相比VAE或者PixelRNN是不稳定的,但我认为在实践中它还是比训练玻尔兹曼机稳定的多
  2. GAN不适合处理离散形式的数据,比如文本
  3. GAN存在训练不稳定、梯度消失、模式崩溃(model collapse)的问题(目前已解决)

模式崩溃(model collapse):生成的数据多样性不足。原GAN论文中提出的loss函数经过变换后为KL散度项,KL散度不具有对称性,即KL(A|B)≠KL(B|A)。在这里插入图片描述
故在优化过程中loss对于两种错误的惩罚不同,第一种错误表示样本中包含的数据没有被生成,即缺乏多样性,惩罚微小;第二种错误表示生成的数据在样本中不存在 ,即缺乏准确性,惩罚巨大。由于不平衡的惩罚导致生成器宁可多生成一些重复但是正确的样本,也不愿意去生成多样性的样本,因为那样一不小心就会产生第二种错误。这种现象就是大家常说的collapse mode。

训练技巧

  1. 输入规范化到(-1,1)之间,最后一层的激活函数使用tanh。
  2. 使用wassertein GAN的损失函数。
  3. 使用batch norm 或者instance norm 或者weight norm。
  4. 避免使用Relu和pooling层,可以使用Leaky-Relu激活函数以减少稀疏梯度的可能性。
  5. 梯度下降算法选用Adam,学习率初始参考值1e-4。
  6. 给判别网络D输入端增加高斯噪声(正则化)。

应用场景

  1. GAN本身是一种生成式模型,最常见的是图片生成。
  2. GAN在分类领域也占有一席之地。替换判别器为一个分类器,做多分类任务,生成器辅助分类器训练。
  3. GAN可以和强化学习结合,例如seq-GAN。
  4. GAN在图像风格迁移,图像降噪修复,图像超分辨率都有比较好的结果,详见pix-2-pix GAN 和cycle GAN。
  5. 目前也有研究者将GAN用在对抗性攻击上,就是训练GAN生成对抗文本,有针对或者无针对的欺骗分类器或者检测系统。

GAN应用汇总
常见GAN变体及实现

其他

为什么GAN中的优化器不常用SGD

  1. SGD容易震荡,容易使GAN训练不稳定,
  2. GAN的目的是在高维非凸的参数空间中找到纳什均衡点,GAN的纳什均衡点是一个鞍点,但是SGD只会找到局部极小值,因为SGD解决的是一个寻找最小值的问题,GAN是一个博弈问题。

为什么GAN不适合处理文本数据

  1. 文本数据相比较图片数据来说是离散的,因为对于文本来说,通常需要将一个词映射为一个高维的向量,最终预测的输出是一个one-hot向量,假设softmax的输出是(0.2, 0.3, 0.1,0.2,0.15,0.05)那么变为onehot是(0,1,0,0,0,0),如果softmax输出是(0.2, 0.25, 0.2, 0.1,0.15,0.1 ),one-hot仍然是(0, 1, 0, 0, 0, 0),所以对于生成器来说,G输出了不同的结果但是D给出了同样的判别结果,并不能将梯度更新信息很好的传递到G中去,所以D最终输出的判别没有意义。
  2. 另外就是GAN的损失函数是JS散度,JS散度不适合衡量不想交分布之间的距离。(WGAN虽然使用wassertein距离代替了JS散度,但是在生成文本上能力还是有限,GAN在生成文本上的应用有seq-GAN,和强化学习结合的产物)

GAN及其改进

GAN

G与D的训练过程

如上图所示,生成对抗网络会训练并更新判别分布(即 D,蓝色的虚线),更新判别器后就能将数据真实分布(黑点组成的线)从生成分布 P_g(G)(绿色实线)中判别出来。下方的水平线代表采样域 Z,其中等距线表示 Z 中的样本为均匀分布,上方的水平线代表真实数据 X 中的一部分。向上的箭头表示映射 x=G(z) 如何对噪声样本(均匀采样)施加一个不均匀的分布 P_g。(a)考虑在收敛点附近的对抗训练:P_g 和 P_data 已经十分相似,D 是一个局部准确的分类器。(b)在算法内部循环中训练 D 以从数据中判别出真实样本,该循环最终会收敛到 D(x)=P_data(x)/(P_data(x)+P_g(x))。(c)随后固定判别器并训练生成器,在更新 G 之后,D 的梯度会引导 G(z)流向更可能被 D 分类为真实数据的方向。(d)经过若干次训练后,如果 G 和 D 有足够的复杂度,那么它们就会到达一个均衡点。这个时候 P_g=P_

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值