生成模型 GAN和VAE


一个关于GAN综述的很好的总结

GAN和VAE的对比

  • 相同点:都假设隐变量z服从某种分布,然后学习一个映射 X = G ( z ) X=G(z) X=G(z),完成隐变量到真实数据的转换。
  • 不同点:
    • GAN比较粗暴,直接通过判别器度量生成器映射的优劣;
    • VAE通过约束隐变量z服从标准正态分布(KL散度)以及重构数据实现了转换映射。

结果:

  • VAE的生成结果会oversmooth,GAN的生成会更清晰一些。

GAN

理论存在的问题

  • GAN网络训练时往往需要权衡训练的生成器与鉴别器的参数来防止崩溃的发生,从而使得GAN的收敛不稳定,难以训练。
  • GAN通常使用的两种判别器loss
    在这里插入图片描述

训练存在的问题

  • GAN的优化是一个极小极大的问题(生成器的时候最小化判别器的adv_loss,判别器的时候最大化fake_loss)。训练的时候是迭代优化的,正常需要迭代很多次。如果只迭代一次判别器,然后迭代一次生成器,如此循环,很容易变成极大极小问题,优化出错。
  • 正确的训练过程:生成器先生成一些样本,判别器先判别为错误,惩罚生成器调整生成的概率分布。但是这样会导致mode collapse,即生成器只生成一些简单的、重复的样本,缺乏多样性。

DCGAN:deep conv GAN

self.loss_func = keras.losses.BinaryCrossentropy(from_logits=True)
loss = self.loss_func(label, pred)
  • 对应的损失函数曲线和梯度曲线,可以看出,在x极大极小的情况下,模型都会没有梯度。
    在这里插入图片描述

pixelRNN & pixel CNN是最早的自回归生成模型,像素值逐个生成,WaveNet也是这种原理。
在这里插入图片描述

LSGAN:least square GAN

  • 通过修改判别器的损失函数使得模型收敛更稳定。传统的GAN网络判别器损失函数是sigmoid CE loss,LSGAN则是引入最小方差损失函数,让模型在训练的过程中更多的关注真实度不高的样本,对于那些训练较好的样本则是花较小的关注度。
    在这里插入图片描述
  • 一般取值 a = − 1 , b = 1 , c = 0 a=-1, b=1, c=0 a=1,b=1,c=0或者 a = − 1 , b = c = 1 a=-1, b=c=1 a=1,b=c=1,但是有实验者发现这个参数设置和模型结构似乎有关系。
  • 结果:相比于DCGAN,基于minist数据集,可以在更少的step生成比较清晰的图片。
    在这里插入图片描述

WGAN:WassersteinGAN

WGAN 的提出是旨在解决 GAN 存在的问题,其在 GAN 的基础上做了些许的变动,论文证明了 GAN 的梯度消失和不稳定的问题。改进是对生成样本和真实样本加噪 声,直观上说,使得原本的两个低维流形“弥散”到整个高维空间,强行让它们产生不可忽略的重叠;用 Wasserstein 距离代替 JS 散度,Wasserstein 距离相 比 KL 散度、JS 散度的优越性在于,即便两个分布没有重叠,Wasserstein 距离仍然能够反映它们的远近。WGAN 的实验结果上确实是得到了不小的提高。每次 迭代更新权重后做 weight clipping,把权重限制到一个范围内(例如限定范围[-0.1,+0.1],则超出这个范围的权重都会被修剪到-0.1 或 +0.1)。

VAE

在这里插入图片描述
在这里插入图片描述

  • 直接求后验概率没办法求,求一个概率最大近似的近似。并不是说z一定是高斯分布,而是用多个高斯表征z的分布。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值