李宏毅教授GAN课程笔记总结

本文深入探讨了生成对抗网络(GAN)的基本原理,包括其训练过程、常见变种如DCGAN和WGAN,以及在图像生成、文本到图像转换等领域的应用。同时,文章还讨论了GAN面临的挑战,如模式崩溃、训练稳定性等问题,并提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GAN

参考文献:

 

受限玻尔兹曼机也是生成模型

 

自编码机:

所学得的NN Decoder可以将一个任意生成的向量生成为一张图片

 

VAE(Variational Auto-Encoder)变分自编码器:

为了不使σ 为0,因此加入限制:

目的是为了使得m越接近0越好,相当于L2的正则化,而前一项也越接近0越好

缺点:没有真正去模拟一张图片,无法达到和人一样的识别效果

 

GAN

Dv1可以分辨Gv1和real image之间的差别,Gv2可以产生无法使Dv1识别出来的图片,Dv2可以分辨Gv2和real image之间的差别,以此类推

 

训练过程:

  • 随机初始化一个G,生成一组image,将其标为negative,例如0
  • 将真实的image标为positive,例如1,并将这两组数据作为D的输入
  • 将G和D的网络相连成一个网络,固定D的网络,通过调整G的网络参数使得D输出值最大

 

DCGAN (Deep Convolutional GAN):和原始GAN的区别是其架构全都是CNN

 

GAN基本原理:

原始数据分布为Pdata(x) ,需要寻找一个PG(x;θ) 使其与Pdata(x) 相似:

  • Pdata(x) 中采样数据
  • 计算PG(x;θ)
  • 找到θ* 使得似然 最大化

KL越小,表示两个分布越相近

高斯混合模型无法很逼近原始数据分布,因此生成的图像都是糊成一个色块

因此采用神经网络来解决这个问题

因为G很复杂,即使知道z的先验分布,也难以计算似然,GAN解决了这个问题

 

先固定G,对于每个G找出使其最大的D,然后在所有的最大值中找出其中的最小值,并获得相应的G和D的pair

这里Pdata(x)PG(x) 都是标量,因此用a和b来表示

 

最后推导出的两个KL是对称相等的

可以定义其他的V使得其最后呈现的是其他divergence形式

 

如果分布一致,那么JSD为0;如果完全不一致则为log2

 

将其转化为关于G的损失函数L(G),并求微分

 

存在的问题:更新后的JS并不一定比上一个小

 

实现:无法做积分,因此采用采样的方式

Loss和JSD相反

 

一次迭代:

Pprior(z) 是自己定的,因此知道如何采样

训练D:重复k次,找出让V最大的D。但是实际上,不一定能找到全局最优,只会找到局部最优,也就是下界

训练G:固定D,寻找使V最小的G,通常只会更新一次,由于上述更新问题,更新多次并不一定使得V下降

 

训练开始时,由于G是随机初始化的,因此D(x)的值通常很小,其微分也很小,因此训练速度很慢

因此将函数进行改进,使其微分值变大,也就是最小化reverse KL divergence-2JSD

 

*WGAN

 

实践中D可以轻易认出已经训练地很好的G产生的image,D的loss几乎都为0,可能的原因:

  • 用采样来逼近,没有办法进行积分->解决办法:减少训练次数,减少网络参数等来使其弱化
  • 数据的特性:考虑的数据往往是高维空间中的数据,使其交集过少

 

G需要慢慢演化:

 

解决方法:

增加噪声:①输入增加噪声;②标签增加噪声

使得D无法完美分开真实和生成数据,使得两个分布之间存在交叠,但噪声需要随着时间衰减

 

Mode Collapse

有多个分布,但只能学出一个分布

 

  • PG 尽量覆盖所有的Pdata ,以免产生无穷大的KL
  • 只要PG 产生的image不像是真实的图片,那么reverse KL就会无穷大,因此PG 就会分布得更加保守,因此可能产生同一张image,以免产生无穷大的reverse KL

 

Conditional GAN

控制G产生什么

 

  • 为了对其进行随意的影响可以在输入时加入噪声分布,但在训练中通常会被无视,因此采用dropout的方式使其无法无视噪声的影响
  • 我们需要生成一个image是和c相关的

 

应用:

  • Text-image
  • Image-image translation
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值