Generative Adversarial Nets[LSGAN]
0 背景
在这之前大家在训练GAN的时候,使用的loss函数都是sigmoid_cross_entropy_loss函数,然而xudon mao等人发现当使用伪造样本去更新生成器(且此时伪造样本也被判别器判为对的时候)会导致梯度消失的问题。虽然此时伪造样本仍然离真实样本分布距离还挺远。也就是之前的损失函数虽然可以判别是真假,可是对于人肉眼来说,还是违和感太强了,也就是生成的图像质量骗得过机器,却骗不过人。

图0.1 两种损失函数的不同行为
上图中加号表示假样本,圈表示真样本,五角星表示用于更新生成器的伪造样本,红线表示LSGAN的决策面,蓝线表示sigmoid交叉熵的决策面。可以从图0.1.1中看出,sigmoid函数能分真假,可是对距离却并不敏感。
所以,由此,他们提出了更好的损失函数用于将伪造样本的分布推向于决策面(虽然无法直接推向真实样本的分布)。并且从中还发现,用此损失函数,可以增加训练GAN的稳定性。并且之前也有一些论文论述到GAN的不稳定训练一部分归咎于目标函数。特别是最小化之前GAN的目标函数时候的梯度消失问题,会导致更新生成器变得困难,而LSGAN是通过基于距离惩罚那些离决策面远的那些假样本,所以具有更多的梯度用于训练迭代。

图0.2 两个损失函数的函数图
如图0.2所示,最小二乘损失函数只有一个点是平的,而sigmoid交叉熵函数会当x变得足够大时就饱和了。
1. LSGAN
1.1 目标函数
如上面所述,之前的目标函数为:

xudon mao等人提出的目标函数为:

其中a,b,c满足条件:\(b-c=1\) 并且 \(b-a=2\)。
所以他们推荐了两种参数的选择:


1.2 网络结构
xudon mao等人参考了vgg的网络结构,将LSGAN的生成器和判别器的网络结构设置成:

上述网络结构的生成器灵感来自VGG结构,其中激活函数沿用了DCGAN的ReLU用于生成器,LeakyReLU用于判别器。
而且,他们在如何将GAN用于多类图片生成上也做了一些工作,如生成3740类的中文文字图片,这时候,自然灵感来自于条件GAN。所以,此时的网络结构不同于上面:

在进行多类别生成的时候,如果直接将one-hot的很长向量作为条件gan的输入,那么会导致内存损耗和时间损耗,所以在输入到网络之前,先通过一个线性映射层将one-hot映射成一个较小维度的向量,比如上面的256。此时对应的目标函数自然为:

其中\(y\)为one-hot向量
2. 实验结果
xudon mao等人还做了一些实验用于验证LSGAN的训练稳定性,如图

图2.1 关于BN和迭代器的稳定性验证

图2.2 基于高斯混合分布数据集的对比,此时生成器和判别器都有三层fc层

图2.3 生成中文字符图片
Generative Adversarial Nets[LSGAN]的更多相关文章
- Generative Adversarial Nets[content]
0. Introduction 基于纳什平衡,零和游戏,最大最小策略等角度来作为GAN的引言 1. GAN GAN开山之作 图1.1 GAN的判别器和生成器的结构图及loss 2. Condition ...
- 论文笔记之:Conditional Generative Adversarial Nets
Conditional Generative Adversarial Nets arXiv 2014 本文是 GANs 的拓展,在产生 和 判别时,考虑到额外的条件 y,以进行更加"激烈 ...
- (转)Deep Learning Research Review Week 1: Generative Adversarial Nets
Adit Deshpande CS Undergrad at UCLA ('19) Blog About Resume Deep Learning Research Review Week 1: Ge ...
- 论文笔记之:Generative Adversarial Nets
Generative Adversarial Nets NIPS 2014 摘要:本文通过对抗过程,提出了一种新的框架来预测产生式模型,我们同时训练两个模型:一个产生式模型 G,该模型可以抓住数据分 ...
- Generative Adversarial Nets[BEGAN]
本文来自<BEGAN: Boundary Equilibrium Generative Adversarial Networks>,时间线为2017年3月.是google的工作. 作者提出 ...
- Generative Adversarial Nets[CycleGAN]
本文来自<Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks>,时间线为2017 ...
- Generative Adversarial Nets[CAAE]
本文来自<Age Progression/Regression by Conditional Adversarial Autoencoder>,时间线为2017年2月. 该文很有意思,是如 ...
- Generative Adversarial Nets[Wasserstein GAN]
本文来自<Wasserstein GAN>,时间线为2017年1月,本文可以算得上是GAN发展的一个里程碑文献了,其解决了以往GAN训练困难,结果不稳定等问题. 1 引言 本文主要思考的是 ...
- Generative Adversarial Nets[Pre-WGAN]
本文来自<towards principled methods for training generative adversarial networks>,时间线为2017年1月,第一作者 ...
随机推荐
- 【vue】使用vue构建多页面应用
先了解一些单页面和多页面的区别 mm 多页应用模式MPA 单页应用模式SPA 应用构成 由多个完整页面构成 一个外壳页面和多个页面片段构成 跳转方式 页面之间的跳转是从一个页面跳转到另一个页面 页面片 ...
- 动态的根据一个资源名获得到对应的资源id
在做项目的过程中,遇到了一个需求,在Android代码里可以通过图片的ID动态加载图片.要加载Android文件夹里面的图片,我们就要知道它的ID,要动态获取,那么就得动态获取图片的ID. 那么应该怎 ...
- Conccrent中 Unsafe类原理 以及 原子类AutomicXX的原理以及对Unsafe类的使用
Unsafe类的介绍 Java中基于操作系统级别的原子操作类sun.misc.Unsafe,它是Java中对大多数锁机制实现的最基础类.请注意,JDK 1.8和之前JDK版本的中sun.misc.Un ...
- vue 构建项目 文件引入
1.vue引用依赖文件. 举例:axios 先安装 axios.如果直接安装 vue-axios 会报错 npm install axios npm install --save axios vue ...
- MyBatis笔记----MyBatis数据库表格数据修改更新的两种方法:XML与注解
继上 http://www.cnblogs.com/tk55/p/6659285.html http://www.cnblogs.com/tk55/p/6660477.html 注解 将id:8 na ...
- 【MM系列】SAP基本计量单位更改
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP基本计量单位更改 前言部分 ...
- 安装window 7系统----计算机经验
上期我们已经成功制作了U盘启动并且也成功进入了PE系统了,在PE微型系统中,除了简单的装系统来恢复C盘,还有什么功能你们可以使用的呢?如果这一期我没有把其他内容讲解的话,千万别乱搞,到时我可能会讲解几 ...
- Python Numpy-基础教程
目录 1. 为什么要学习numpy? 2. Numpy基本用法 2.1. 创建np.ndarry 2.2. Indexing and Slicing Boolean Index 2.3. Univer ...
- C#基础知识之Partial class
C# 2.0 可以将类.结构或接口的定义拆分到两个或多个源文件中,在类声明前添加partial关键字即可. 例如:下面的PartialTest类 class PartialTest { string ...
- MySQL高级知识(十三)——表锁
前言:锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算机资源(如CPU.RAM.I/O等)的争用外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是 ...