GAN 生成对抗网络 10-6 Tips for improving GAN
在二分类问题中,使用JS散度是不合适的,因为图像的性质,PG和Pdata是不可能重叠的,不重叠的情况下计算出的JS散度永远是log2,所以上图中第一个图和第二个图没有区别,因此在二分类问题中会出现训练困难的问题。
tips1 LSGAN
问题:绿色点为real data,蓝色点为generated data。可能会出现一个状况,如果二分类器训练的太好(即蓝色为0,绿色为1),使用sigmoid函数进行训练会出现训练困难的问题,因为在0处梯度几乎为0。这样generator想把蓝色的点往右移发现会移不动。因此在没有这些tips的时候训练discriminator,不要训练的太差(分辨不出来),也不要训练的太好,一般边吃饭的时候边看输出(hahaha)。
有人提出使用LSGAN,即将sigmoid激活函数换成线性的。
tips2 WGAN
在之前训练GAN的时候,用的都是JS散度或者f散度,这里不再使用它们。
WGAN使用的是Earth Mover‘s Distance来衡量两个分布的差异。
假设有两个data P和G,假设有一台推土机,将P中的土铲到Q中走过的平均的距离即为W,上图假设一维空间下的情形,P和Q都在一个点上,则W=d。
但是该方法会有一个问题:铲土有好多种方法,哪个为所求呢?
一种方法:可以穷举所有铲土的方法,走过距离最小的即为所求。
首先要做一个moving plan。moving plan实质为一个矩阵,矩阵的值越亮代表P的土挪到Q越多。我们可以求出平均距离B(γ),然后穷举所有的B(γ),取最小值。
WGAN的discriminator应该是这样的,P中sample出的data应该尽可能大,G中sample出的data应该尽可能小。但是这样还是不够的,因为这样real会无限大,generated会无限小,永远不会收敛。因此应该加一个限制条件,D要足够平滑。
即输出的变化不能超过输入的变化。
问题是怎么解,如果把constraint拿掉,很好解,但是在D上加了constraint很难解。
解决办法:
最原始的解决办法是梯度裁剪,即权值绝对值超过某个值c,则把weight设置为c,结束。但是该方法达不到1-lipschitz的效果。
后来出现inproved WGAN(WGAN-GP)
上图中,使得D(x)在所有点的梯度小于等于1等价于D满足1-Lipschitz。
但是我们无法sample出所有的x进而计算D(x)的梯度。所以,我们从Ppenalty这个分布中sample x。
Ppenalty指的是:在Pdata中sample一个点,在PG中sample一个点,将两个点相连。若干个这样的连线构成的分布即Ppenalty。
一个直观的理解:WGAN的思想是将PG挪到Pdata,因此它们中间的地方才会有影响。
本来我们要求的是D(x)的梯度大于1有惩罚,小于1没有惩罚。但是WGAN最终做的是,让D(x)的梯度越接近1越好。文章中提出D(x)的梯度越接近1,表现越好。
实际上improved WGAN也是有问题的,比如右下角的图,将黄色的点移动到红色的点,给红色的线penalty,它可能不会沿着黑色的线走。
Spectrum Norm可以使得每个位置的gradient norm都小于1.具体细节请查阅文献。
训练GAN的流程
如果训练WGAN,需要把sigmoid拿掉,带着sigmoid实际上是JS diversion。
对于EBGAN,Generator是不变的,Discriminator使用的AutoEncoder。它的思想是将生成图片通过一个AutoEncoder,与重新生成的图片计算一下loss,将loss✖️-1得到的即为输出。
EBGAN的好处是,AutoEncoder是可以进行预训练的,它可以只用正样本进行预训练,而二分类问题是不行的。使用EBGAN可以对autoEncoder进行预训练,刚开始就可以拿到一个较强的Discriminator,否则需要先训练generator,要训练很久才能得到一个很厉害的Discriminator。
注意EBGAN在训练的时候,我们关注的是real data得分越大越好,并不是generate越小越好,因为建设难破坏容易。比如我们输入一个data,生成一个vector,再由vector重建图像是很困难的;但是加入一个noise就可以使得分很小,这样虽然可以使loss很小,但这不是我们要的,因此在generate的data中设置一个margin,得分小于margin即可。
GAN 生成对抗网络 10-6 Tips for improving GAN相关推荐
- 54_pytorch GAN(生成对抗网络)、Gan代码示例、WGAN代码示例
1.54.GAN(生成对抗网络) 1.54.1.什么是GAN 2014 年,Ian Goodfellow 和他在蒙特利尔大学的同事发表了一篇震撼学界的论文.没错,我说的就是<Generative ...
- 深度学习(九) GAN 生成对抗网络 理论部分
GAN 生成对抗网络 理论部分 前言 一.Pixel RNN 1.图片的生成模型 2.Pixel RNN 3.Pixel CNN 二.VAE(Variational Autoencoder) 1.VA ...
- 深度学习 GAN生成对抗网络-1010格式数据生成简单案例
一.前言 本文不花费大量的篇幅来推导数学公式,而是使用一个非常简单的案例来帮助我们了解GAN生成对抗网络. 二.GAN概念 生成对抗网络(Generative Adversarial Networks ...
- 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 下
文章目录 1 测试鉴别器 2 建立生成器 3 测试生成器 4 训练生成器 5 使用生成器 6 内存查看 上一节,我们已经建立好了模型所必需的鉴别器类与Dataset类. 使用PyTorch构建GAN生 ...
- 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 上
文章目录 1 数据集描述 2 GPU设置 3 设置Dataset类 4 设置辨别器类 5 辅助函数与辅助类 1 数据集描述 此项目使用的是著名的celebA(CelebFaces Attribute) ...
- 【轩说AI】生成模型(2)—— GAN生成对抗网络 + WGAN + Conditional GAN + Cycle GAN
文章目录 GAN生成对抗网络(Generative Adversarial Network) 神经网络的本质就是一个函数,一个用于拟合的函数 生成模型面临的前所未有的问题 GAN解决这一问题的思想 O ...
- 生成对抗网络(Generative Adversarial Network,GAN)
生成对抗网络(Generative Adversarial Network,GAN) Generative:生成式模型 Adversarial:采取对抗的策略 Networks:网络(不一定是深度学习 ...
- GAN (生成对抗网络) 手写数字图片生成
GAN (生成对抗网络) 手写数字图片生成 文章目录 GAN (生成对抗网络) 手写数字图片生成 Discriminator Network Generator Network 简单版本的生成对抗网络 ...
- 生成对抗网络(Generative Adversarial Networks,GAN)
目录 生成对抗网络(Generative Adversarial Networks,GAN) 一.什么是GAN 二.GAN的模型结构 三.实战案例 3.1 使用GAN生成人脸照片 四.深入理解GAN模 ...
- GAN -- 生成对抗网络
GAN -- 生成对抗网络 生成对抗网络(英语:Generative Adversarial Network,简称GAN)是非监督式学习的一种方法,通过让两个神经网络相互博弈的方式进行学习.该方法由伊 ...
最新文章
- 静态库符号文件冲突的解决办法,已实践OK, mark
- echarts图例(legend)
- Xposed学习一:初探
- oracle自动提交没有生效,JBoss对Oracle的自动提交始终不起作用
- Java加个书名编号约束条件_java 按照题目所给变量名称、类型和方法名称进行编程 求帮助...
- AltiumDesigner14.3.X系列软件安装及破解过程
- 使用eclipse调试ns3配置说明
- 发布 项目_项目发布会活动到底应该怎么办
- IDEA 2021.1正式发布,新增了这几个超实用功能!
- 2020山东省计算机专科学校排名,2021山东专科学校排名 最好的高职院校排行榜
- set学习(系统的学习)
- jquery遍历元素children、find、parent、parents、parentsUntil、next、prev、siblings、closest、filter、not
- c语言指针 r,C语言指针的高级操作
- IndexedDb、Web Sql、localStorage以及localForage使用
- 什么样的家具拆单软件才能称之为好用?全屋定制拆单 衣柜橱柜拆单 sketchup拆单 拆单软件 有屋拆单软件 筑木
- python考勤统计_公司HR统计考勤用这个函数公式,快速、准确完成,再也不加班了...
- 千千静听皮肤急速合成器
- 886. 可能的二分法
- Python解析器安装后测试打开微软商店
- Java教程:如何使用Jib插件容器化SpringBoot应用?
热门文章
- 阿里云服务器远程又链接不上 链接一下就闪烁一下又回到登陆界面,控制台重启一下才可以连接
- D. Bouncing Boomerangs
- bootstrap table合并单元格
- java 生成缩略图_java实现图片生成缩略图
- 搭建Prometheus监控报警系统
- 7-38 数列求和-给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。
- LOG4cxx安装指南
- HTML超链接标签—链接QQ在线聊天
- python画几种树
- JAVA有没有moba游戏_你了解MOBA么?——MOBA游戏类型介绍(上)