PaperNotes(7)-GANs模式坍塌/训练不稳定

GANs-模式坍塌-训练不稳定

  • 1.训练不稳定问题相关文章
    • 1.1 DCGAN
    • 1.2Big-GAN
    • 1.3WGAN 、WGAN-GP、SN-WGAN
    • 1.4其他工作
  • 2.模式坍塌问题相关文章
    • 2.1 MAD-GAN
    • 2.2 Unrolled GAN
    • 2.3 DRAGAN
    • 2.4 D2GAN
    • 2.5 InfoGAN
    • 2.6 Deligan
    • 2.7 EBGAN
    • 2.8 Maximum Entropy Generators for Energy-Based Models

1.训练不稳定问题相关文章

综述-分析-归纳

1.1 DCGAN

2016-ICLR
abstract,related work --没说稳定性的问题
DCGAN的出发点:CNN结构+GANs模型学习,质量优良的图像表征。其后将生成器或者和判别器作为监督学习的特征提取器
3. aproach and model architecture
也有很多人尝试将CNN与GAN模型结合,但是没有成功。

作者认为在GANs模型提出后关于GAN模型学习过程的理解和可视化的工作缺乏,并且GANs模型中生成器和判别器的大多使用多层感知机的全连接结构。(不稳定性基本上没有分析),他们将卷积神经网络引入到GANs模型中,利用大量的实验寻找合适的的结构致力于解决GANs模型训练不稳定问题。

DC-GAN利用卷积提取图像的层次视觉特征,其有利于提升判别网络能力。DC-GAN通过调整卷积神经网络的结构以提高样本的质量和收敛速度,这些调整包括:取消所有Pooling 层;在生成网络和判别网络中均使用Batch-Normalization[13]操作;去掉全连接层,使网络变为全卷积网络;生成网络中使用ReLU[14]作为激活函数,最后一层使用Tanh[15]作为激活函数,判别网络使用LeakyReLU[16]作为激活函数等。图2-4为DC-GAN生成网络的结构图。图2-5为DC-GAN使用大规模场景数据集LSUN[17] 房间子集训练的模型生成的房间场景图像。

1.2Big-GAN

文章出发点:高清,真实图像生成。
通过实验探索了:不同的训练批次大小(BatchSize) 、每层卷积通道(Channel)数、Shared、Hierarchical Latent Space对GANs 模型性能的影响。文章表明:对于BatchSize,简单的增大BatchSize 可以使模型性能获得较好的提升,但会使训练稳定性下降;对于Channel数,一定范围内增加卷积通道数,对提升模型性能有益处;但是超过一定的范围之后,性能不升反降。

然后:分析训练崩溃现象发生时网络权重参数有啥表现
判别网络权重矩阵的前三个奇异值毛刺多,在发生崩溃时有一个突跃向上。生成网络权重矩阵奇异值曲线平滑,但是崩溃时有一个突跃向上。

反制措施:
针对G:限制奇异值大小
针对D:D网络的梯度惩罚

1.3WGAN 、WGAN-GP、SN-WGAN

(推荐)令人拍案叫绝Wasserstein GAN—https://zhuanlan.zhihu.com/p/25071913

TOWARDS PRINCIPLED METHODS FOR TRAINING
GENERATIVE ADVERSARIAL NETWORKS
WGAN前作:分析了GANs模型目标函数的缺陷:会导致训不动和训练不稳定。

WGAN:正式提出WGAN,但是Lipschitz约束采用截断判别器参数的方式实现,不够优雅。

WGAN-GP:Lipschitz约束使用判别器梯度惩罚的方式实现。
SN-WGAN:Lipschitz约束使用判别器参数每一层W频谱范数限制为1的方式实现。

1.4其他工作

f-gan将所有GAN模型统一到f-divergence 下,是一个比较优雅的工作。不过没有致力于解决训练不稳定问题吧。
Improved techniques for training gans:包含了很多促进GAN稳定训练的启发式技巧。

2.模式坍塌问题相关文章

从纳什均衡点来说模式坍塌问题:说有两种方案来解决模式坍塌:

https://zhuanlan.zhihu.com/p/86683281:修改网络结构MAD-GAN。

https://zhuanlan.zhihu.com/p/84072188:提高网络能力Unrolled GAN。

有个现象:当判别器在训练样本附近更新参数时,其梯度值非常大

http://blog.itpub.net/69946223/viewspace-2658454/:在训练样本附近增加梯度惩罚DRAGAN(与上面两篇文章是同一个作者)

2.1 MAD-GAN

MAD-GAN-2017:单个生成器会产生模式坍塌现象,多个生成器结合起来可以保证样本的多样性,但是简单添加多个彼此鼓励的生成器并没有很大的意义,这些可能最终都会归并到相同状态。希望让多个生成器彼此联系,不同的生成器尽量产生不相似的样本。MAD-GAN中包括K个初始值不同的生成器和一个判别器,判别器通过交叉熵损失使得每个生成器只生成某一类模式的样本。生成器使用的一个自定的相似性项惩罚生成器,以达到各个生成器产生不同的样本的目的。治标不治本,没有提高单个生成器的能力。

疑惑:多个生成器最后如何确定输出?随机?还是要利用判别器?

(提供bib文件。)也希望大家贡献一些。

多生成器的结构也有很多种,文章中使用多生成器来提高生成数据的多样性。

relate work :InfoGAN [5], ModeGAN[4],UnrolledGAN[17],Coupled GAN,

2.2 Unrolled GAN

https://arxiv.org/abs/1611.02163

Unrolled GAN-2017:由于生成器缺乏先见之明,生成器每次更新参数时只是考虑当前的判别器下能够获得的最优解,并不能判断当前的最优解从长运啊来看是否时最优解。目标是:提高生成器的先见之明。具体做法当前的生成器在更新时不仅能够考虑当前生成器的状态,还会考虑K次更新后判别器的状态。

(还能够稳定训练过程。)一个缺点是提高了计算的复杂度。

(按照unroll 的说法,质量越好,其实越容易发生模式坍塌现象)

(公式中两项的差别就是:第K次更新这个事实。)

2.3 DRAGAN

DRAGAN:(实验)发现一个有趣的现象,判别器具在训练样本附近更新参数时,梯度值非常大,考虑在训练样本附近增加一个梯度惩罚。具体就是通过训练样本扰动然后,计算梯度,再惩罚。注意与WGAN-GP的区别,WGAN-GP在具体实现时是在真假样本之间增加惩罚。

与博文中分析的结论殊途同归的感觉:
https://zhuanlan.zhihu.com/p/56545779
基于能量视角,我们可以得到“对真样本进行以 0 为中心的梯度惩罚”比较好,因为这意味着(整体上)要把真样本放在极小值点处。

2.4 D2GAN

D2GAN–2017: 再添加一个判别器,亏你们想的出来。

https://blog.csdn.net/weixin_33958585/article/details/90329616-说的不够直接。

生成模型最大似然方法对应于求解 模型分布 与 数据分布 之间的KL散度。
GANs对应的是求 解数据分布 与 模型分布 之间的KL散度。

正反向KL散度

DKL(pmodel∣∣pdata)D_{KL}(p_{model}||p_{data})DKL(pmodelpdata):会凭空产生一些潜在的不希望的样本。

DKL(pdata∣∣pmodel)D_{KL}(p_{data}||p_{model})DKL(pdatapmodel):Pmodel集中在Pdata的单一模式,而忽略了其他模式,产生模式坍塌现象。

拥有两个判别器,判别器和原始GANs模型中的判别器功能类似,用于鉴别一个样本是真样本的概率,而判别器2用于鉴别样本是来自生成分布而不是真实分布,通过结合KL和反KL散度生成一个统一的目标函数,从而利用了两种散度的互补统计特性,缓解了模式坍塌问题。

2.5 InfoGAN

https://zhuanlan.zhihu.com/p/55945164
https://blog.csdn.net/u011699990/article/details/71599067

InfoGAN:通过引入c来约束输出,使得C的维度于输出的语义特征相对应。为了使的x与c之间关联密切,所以我们需要最大化互信息的值。据此对原始GAN模型的值函数做了一点修改,相当于加了一个互信息的正则化项。核心是如何实现互信息的计算(通过一个辅助分布)
简单理解,生成的数据能够依据条件改变的话,那么条件多了,生成的数据自然也就多了

2.6 Deligan

认为一般的GAN模型都需要大量的训练数据,才能够使生成器捕获完整的数据模态。对于样本数量有限的复杂数据集,DeliGAN借助变分推断中的思想, 将输入隐空间重参数成混合高斯,这些混合高斯分布是样本高概率出现的隐空间,混合高斯分布的参数随GANs的参数一同训练。通过实验证明了在受限数据集上生成器生成丰富多样的数据,缓解模式坍塌问题。

主要针对点:受限数据集

2.7 EBGAN

http://www.mamicode.com/info-detail-2221093.html

EBGAN:将D视作一个能量函数,能量越小,输入越真。AE中的重构误差作为能量函数。
和解决多样性没有直接关系,最主要的还是训练的稳定性

We show that this form of EBGAN exhibits more stable behavior than regular GANs during training.

2.8 Maximum Entropy Generators for Energy-Based Models

Rithesh Kumar–在基于能量的生成式模型中,最大化生成数据的熵,能够提高数据的多样性。从能量的角度来诠释了GAN模型。通过非参数互信息最大化技术间接实现最大化生成数据的熵。(比较抽象难理解)

苏剑林的博客:https://zhuanlan.zhihu.com/p/56545779
表示GAN不需要带动量的优化方法:要的是最近的最小值,而不是更小的最小值。带动量可能会损失多样性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

thinkphp框架起步认识

先看看thinkphp的文档吧:这是我在网上找的一个不错的链接地址,对自己有用,同时相信对读者也有用吧。 http://doc.thinkphp.cn/manual/class.html ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说…

leetcode403 青蛙过河

一只青蛙想要过河。 假定河流被等分为 x 个单元格,并且在每一个单元格内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。 给定石子的位置列表(用单元格序号升序表示)&#xff…

PaperNotes(8)-Stein Variational Gradient Descent A General Purpose Bayesian Inference Algorithm

通用贝叶斯推理算法-Stein Variational Gradient DescentAbstract1 Introduction2 Background3 Variational Inference Using Smooth Transforms3.1 Stein Operator as the Derivative of KL Divergence定理3.1引理3.23.2 Stein Variational Gradient Descent4 Related Works5 …

thinkphp的增删改查

ThinkPHP 添加数据 add 方法 ThinkPHP 内置的 add 方法用于向数据表添加数据,相当于 SQL 中的 INSERT INTO 行为。ThinkPHP Insert 添加数据添加数据 add 方法是 CURD(Create,Update,Read,Delete / 创建,修改,读取,删除)中的 Create 的实现&a…

leetcode115 不同的子序列

给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。 一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是…

ThinkPHP 模板循环输出 Volist 标签

volist 标签用于在模板中循环输出数据集或者多维数组。volist 标签在模块操作中&#xff0c;select() 方法返回的是一个二维数组&#xff0c;可以用 volist 直接输出&#xff1a;<volist name"list" id"vo"> 用 户 名&#xff1a;{$vo[username]}&l…

MachineLearning(9)-最大似然、最小KL散度、交叉熵损失函数三者的关系

最大似然-最小KL散度-最小化交叉熵损失-三者的关系问题缘起&#xff1a;给定一组数据(x1,x2,...,xm)(x^1,x^2,...,x^m)(x1,x2,...,xm),希望找到这组数据服从的分布。此种情况下&#xff0c;分布规律用概率密度p(x)表征。 问题归处&#xff1a;如果能够建模/近似建模p(x)&#…

ThinkPHP redirect 页面重定向使用详解与实例

ThinkPHP redirect 方法ThinkPHP redirect 方法可以实现页面的重定向&#xff08;跳转&#xff09;功能。redirect 方法语法如下&#xff1a;$this->redirect(string url, array params, int delay, string msg) 参数说明&#xff1a;url 必须&#xff0c;重定向的 URL 表达…

PaperNotes(9)-Learning deep energy model: contrastive divergence vs. Amortized MLE

Learning deep energy model: contrastive divergence vs. Amortized MLEabstract1 Introduction2 Background2.1 stein variational gradient descent2.2 learning energy model**contrastive Divergence**abstract 受SVGD算法的启发,本文提出两个算法用于从数据中学习深度能…

windows下的gvim配置

首要任务是下载安装Gvim7.3 。 安装完后&#xff0c;gvim菜单中文出现乱码&#xff0c;在_vimrcset文件中增加&#xff1a; " 配置多语言环境,解决中文乱码问题 if has("multi_byte") " UTF-8 编码 set encodingutf-8 set termencodingutf…

leetcode104 二叉树的最大深度

给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&#xff0c; 3 / \ 9 20 / \ 15 7 返回它的最大深度…

C++的安全类型转换的讨论

关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_ca…

PaperNotes(10)-Maximum Entropy Generators for Energy-Based Models

Maximum Entropy Generators for Energy-Based ModelsAbstract1 Introduction2 Background3 Maximum Entropy Generators for Energy-Based Models4 Experiments5 Related Work6 Conclusion7 AcknowledgementsAbstract 由于对数似然梯度的难以计算&#xff0c;能量模型的最大似…

leetcode105 前序中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如&#xff0c;给出 前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a; 3 / \ 9 20 / \ 15 7 思路&#xff1a; 1、…

c++的虚拟继承 的一些思考吧

虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class …

对于linux socket与epoll配合相关的一些心得记录

对于linux socket与epoll配合相关的一些心得记录 没有多少高深的东西&#xff0c;全当记录&#xff0c;虽然简单&#xff0c;但是没有做过测试还是挺容易让人糊涂的int nRecvBuf32*1024;//设置为32Ksetsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int))…

leetcode144 二叉树的前序遍历

给定一个二叉树&#xff0c;返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单&#xff0c;你可以通过迭代算法完成吗&#xff1f; 思路&#xff1a;模仿递归的思路压栈即可。 /*** Definition for a bi…

AJAX大总结

1、AJAX概述 1.1 什么是AJAX AJAX&#xff08;Asynchronous Javascript And XML&#xff09;翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互&#xff0c;传输的数据为XML&#xff08;当然&#xff0c;传输的数据不只是XML&#xff09;。 …

我对STL的一些看法(一)初步认识STL

后面一段时间我将会给大家分享我自己学到STL以及应用的时候遇到的问题还有他的一些精髓,可能开始的逻辑会有些乱吧,不过后面还会不断的整理和优化,让自己看明白也让更多的读者看的清楚。 最近刚闲下来,先说说什么是STL: 不知道你是否有过这样的经历。在大学,你准备着手完…

PaperNotes(12)-Autoregressive Quantile networks for generative modeling

Autoregressive Quantile networks for generative modeling3 autoregressive implicit quantiles3 autoregressive implicit quantiles autoregressive&#xff1a;自身做回归变量&#xff0c;用之前若干时刻的随机变量 来建模 之后某些时刻 随机变量的模型。 N维随机变量的…