#深度解析# GAN(生成对抗神经网络)
生成对抗神经网络借鉴了零和博弈的思想,主要用于样本的生成,属于非监督学习
简单总结一下 GAN 的基本思想(参考下图):
- GAN由两部分网络组成,一个是生成网络,一个是判别网络
- 生成网络类似于(变分自编码器)网络的Decoder部分,用于生成新样本
- 判别网络本质上是一个二分类分类器,用于识别输入的样本是真实样本还是生成的假样本;
- 训练GAN网络时,判别网络会不断提高识别能力,而生成网络会不断提高生成能力从而降低判别网络的判别能力;这两种网络相互竞争从而提高网络生成新样本的能力:
GAN网络的损失函数如下:
符号说明:
D:判别函数,输出值范围0~1,0表示预测为生成样本,1表示预测为真实样本
G:生成函数,用于生成样本数据
Ex~pdata(x) :表示对真实样本求期望(本身无意义,表示求后边中括号内公式的期望)
Ez~pz(z):表示对生成样本分别求期望(本身无意义,表示求后边中括号内公式的期望)
这个公式我们可以如此理解,
- 首先来看函数V(D,G),这个函数就是用来衡量判别式性能的,当D性能最优时,第一项中D(x)的期望=1,第一项整体期望等于0,第二项D(G(z)) 的期望等于0 第二项整体期望等于0,V(D,G)=0;D的性能越差,同理可知 公式中中的两项都会越小(且为负值)V(D,G)越小
- 将max(G)V(D,G)看作一个整体,这一步表示将V(D,G)损失函数按最大值优化,根据第一点可知,得到最优的判别式网络D
- 然后看最外边的min(G),表示找到最优的判别式网络D的基础上,通过最小化V(D,G)这个损失函数的方式,找到最优的生成网络G;因为得到最优的生成网络G,等价于让判别网络无法识别生成网络G生成的样本,等价于降低判别式网络D的性能。
根据上边的叙述可知,训练GAN时并不是同时训练D和G,而是在固定一个网络的同时训练另一种。
此外,我们一般先训练数次判别网络,然后进行D和G网络的交替训练;之所以要训练k次判别器,再训练生成器,是因为要先拥有一个好的判别器,使得能够教好地区分出真实样本和生成样本之后,才好更为准确地对生成器进行更新。
GAN的基本流程如下:
- 初始化判别器D的参数和生成器G的参数。
- 从真实样本中采样 m 个样本,从先验分布噪声中采样n个噪声样本并通过生成器获取 n 个生成样本。固定生成器G,训练判别器D尽可能好地准确判别真实样本和生成样本,尽可能大地区分正确样本和生成的样本。
- 循环k次更新判别器之后,使用较小的学习率来更新一次生成器的参数,训练生成器使其尽可能能够减小生成样本与真实样本之间的差距,也相当于尽量使得判别器判别错误。
- 多次更新迭代之后,最终理想情况是使得判别器判别不出样本来自于生成器的输出还是真实的输出。亦即最终样本判别概率均为0.5(纳什均衡)。
GAN存在的问题
梯度弥散
- 如果GAN中的判别网络过于强大,那么无论生成网络生成什么样的图片,判别网络都能判别为假,导致生成网络无法获得梯度(梯度弥散),从而导致网络进行更新
- 相反,如果判别网络一开始就很弱,无论输入真假样本,判别网络都随机的输出0,1,那么生成网络得到的梯度就会是不准确的,因此生成网络也无法正常更新
- 因此判别网络既不能太强,也不能太弱,在训练GAN过程中,要平衡好两者的能力,使其旗鼓相当。
模式崩溃
在训练GAN的过程中,生成网络可能会逐渐生成某一类型的样本,因为生成网络发现只要生成这种的样本,判别网络就无法识别;这无疑会丧失生成网络生成样本的多样性。
解决方法:
使用 wasserstein GNNs 或 Unrolled GNNS
Wasserstein GANs (WGAN)
- 判别网络使用 EMD距离(Earth Mover’s Distance)衡量两张图片之间的距离
- WGAN 中的判别网络和生成网络不再使用同一个损失函数,因此不再存在零和博弈的限制
名词注释: - WGAN中的判别函数优化的目标是增加真实样本和生成样本之间的EMD距离;而生成函数的目的是增大生成样本计算得到的某个值
此外还有很多优秀的GAN模型 如 deep convolutional GANs,styleGAN,cycleGAN 等
零和博弈(纳什均衡):游戏存在如下均衡:总收益为0,一方胜利,另一方就输,
pytorch deep convolutional GANs 代码 :https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html
参考文章:
通俗理解生成对抗网络GAN
#深度解析# GAN(生成对抗神经网络)相关推荐
- 深度学习 GAN生成对抗网络-1010格式数据生成简单案例
一.前言 本文不花费大量的篇幅来推导数学公式,而是使用一个非常简单的案例来帮助我们了解GAN生成对抗网络. 二.GAN概念 生成对抗网络(Generative Adversarial Networks ...
- 赠书 | 读懂生成对抗神经网络 GAN,看这文就够了
生成对抗神经网络(Generative Adversarial Nets,GAN)是一种深度学习的框架,它是通过一个相互对抗的过程来完成模型训练的.典型的GAN包含两个部分,一个是生成模型(Gener ...
- 深度学习之生成对抗网络(6)GAN训练难题
深度学习之生成对抗网络(6)GAN训练难题 1. 超参数敏感 2. 模式崩塌 尽管从理论层面分析了GAN网络能够学习到数据的真实分布,但是在工程实现中,常常出现GAN网络训练困难的问题,主要体现在G ...
- 深度学习之生成对抗网络(4)GAN变种
深度学习之生成对抗网络(4)GAN变种 1. DCGAN 2. InfoGAN 3. CycleGAN 4. WGAN 5. Equal GAN 6. Self-Attention GAN 7. Bi ...
- 深度学习之生成对抗网络(2)GAN原理
深度学习之生成对抗网络(2)GAN原理 1. 网络结构 生成网络G(z)\text{G}(\boldsymbol z)G(z) 判别网络D(x)\text{D}(\boldsymbol x)D(x) ...
- 论文盘点:GAN生成对抗样本的方法解析
©PaperWeekly 原创 · 作者|孙裕道 学校|北京邮电大学博士生 研究方向|GAN图像生成.情绪对抗样本生成 引言 对抗样本的生成方式很多.一般情况下会分成三大类,第一种是基于梯度的生成方式 ...
- 【深度学习】生成对抗网络(GAN)的tensorflow实现
[深度学习]生成对抗网络(GAN)的tensorflow实现 一.GAN原理 二.GAN的应用 三.GAN的tensorflow实现 参考资料 GAN( Generative Adversarial ...
- 深度学习(九) GAN 生成对抗网络 理论部分
GAN 生成对抗网络 理论部分 前言 一.Pixel RNN 1.图片的生成模型 2.Pixel RNN 3.Pixel CNN 二.VAE(Variational Autoencoder) 1.VA ...
- 深度学习之生成对抗网络(1)博弈学习实例
深度学习之生成对抗网络(1)博弈学习实例 博弈学习实例 在 生成对抗网络(Generative Adversarial Network,简称GAN)发明之前,变分自编码器被认为是理论完备,实现简单, ...
- DLbest系列1——GAN生成对抗网络2
GAN 6 COGAN(耦合生成对抗网络,1个模型2个用途) 7 LSGAN(最小二乘GAN,均方差替换交叉熵) 7.1 训练思路 8 CycleGAN(风格转换) 8.1 训练思路 9 SRGAN( ...
最新文章
- Ubuntu开机自启动与sh脚本
- TYAN_S8230做硬Raid
- 机房收费系统之处理流程图与DFD图
- 系统架构师-基础到企业应用架构-服务层
- javaweb中报404错误
- 【写作技巧】本科毕业论文开题报告写作攻略
- 倪光南院士:云计算发展须和云安全同步推进
- Python——EM(期望极大算法)实战(附详细代码与注解)(二)
- php访问oracle写sql不能换行
- 4.Mongodb之js脚本
- 3DMAX最强搭配神器,一键清理病毒,让你学习工作更流畅!
- 微信小程序查询数据库总条数
- 微信模板消息发送帮助类
- Java-Poi导入导出excel工具类
- excel筛选中文或者筛选数字
- 2022-VS2015-ACE+TAO(7.0.5)+CIAO+OpenDDS 3.16 编译
- 使用Xcode的Instruments检测解决iOS内存泄露(leak)
- ECshop4.1版本搭建
- 计算机博后 国外招聘,全额奖学金机会,香港理工计算机系博后/博士/研究助理招收中...
- YBT进阶一年游P1 递归与递推
热门文章
- jq UI-引入、拖动效果、api文档位置
- linux 中文显示乱码解决办法
- 主成分分析法(PCA方法)计算OBB包围盒
- 单片机仿真软件proteus实验测试,基于单片机仿真软件proteus的流水灯实验报告.doc...
- 一个下载网页视频的方法
- 高中 信息科技 计算机网络 课件,高中信息技术计算机网络.ppt课件.ppt.ppt
- Python爬虫 糗百段子
- VS2008 安装顺序
- 用户画像——《大数据用户画像的方法及营销实践》演讲
- McAfee迈克菲最新杀毒防火墙软件安装McAfeeEndpointSecurity10.6.1 百度云下载