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]的更多相关文章

  1. Generative Adversarial Nets[content]

    0. Introduction 基于纳什平衡,零和游戏,最大最小策略等角度来作为GAN的引言 1. GAN GAN开山之作 图1.1 GAN的判别器和生成器的结构图及loss 2. Condition ...

  2. 论文笔记之:Conditional Generative Adversarial Nets

    Conditional Generative Adversarial Nets arXiv 2014   本文是 GANs 的拓展,在产生 和 判别时,考虑到额外的条件 y,以进行更加"激烈 ...

  3. (转)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 ...

  4. 论文笔记之:Generative Adversarial Nets

    Generative Adversarial Nets NIPS 2014  摘要:本文通过对抗过程,提出了一种新的框架来预测产生式模型,我们同时训练两个模型:一个产生式模型 G,该模型可以抓住数据分 ...

  5. Generative Adversarial Nets[BEGAN]

    本文来自<BEGAN: Boundary Equilibrium Generative Adversarial Networks>,时间线为2017年3月.是google的工作. 作者提出 ...

  6. Generative Adversarial Nets[CycleGAN]

    本文来自<Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks>,时间线为2017 ...

  7. Generative Adversarial Nets[CAAE]

    本文来自<Age Progression/Regression by Conditional Adversarial Autoencoder>,时间线为2017年2月. 该文很有意思,是如 ...

  8. Generative Adversarial Nets[Wasserstein GAN]

    本文来自<Wasserstein GAN>,时间线为2017年1月,本文可以算得上是GAN发展的一个里程碑文献了,其解决了以往GAN训练困难,结果不稳定等问题. 1 引言 本文主要思考的是 ...

  9. Generative Adversarial Nets[Pre-WGAN]

    本文来自<towards principled methods for training generative adversarial networks>,时间线为2017年1月,第一作者 ...

随机推荐

  1. loadrunner 脚本录制-录制选项设置HTML-based URL-based Script

    脚本录制-录制选项设置, HTML-based Script与URL-based Script by:授客 QQ:1033553122 Access:Vugen->Tool->Record ...

  2. java面试整理(会持续更新..)

    本人出道至今,经历了大大小小百余场战斗,,,下面整理的面试题有些有答案,有些没答案,那个谁说过:"要抱着怀疑的态度去编程,所以,即便有答案,也不一定正确,即便我本地正确,但是由于屏幕前的你和 ...

  3. 添加用户到sudoers

    ** is not in the sudoersfile.  This incident will bereported.” (用户不在sudoers文件中……) 处理这个问题很简单,但应该先理解其原 ...

  4. PyCharm 专业版激活方法

    郑重声明: JetBrains公司的PyCharm专业版是收费的,本文所述激活方法仅限于短时内体验和试用PyCharm专业版,使用后请当天立即删除.若需要继续使用PyCharm专业版,请在官网购买.当 ...

  5. EF Code First列名 'Discriminator' 无效的问题

    新建了一个类继承EF  Model类,运行报错 EF Code First列名 'Discriminator' 无效 EF会把项目中在DbContext中引用的所有的Model类及这些Model类对应 ...

  6. c/c++ 标准库 vector

    c/c++ 标准库 vector 标准库 vector的小例子 test1~test7 #include <iostream> #include <vector> using ...

  7. Selenium Webdriver 中的 executeScript 使用方法

    1.使用executeScript 返回一个WebElement . 下例中我们将一个浏览器中的JavaScript 对象返回到客户端(C#,JAVA,Python等). IWebElement el ...

  8. 【算法】LeetCode算法题-Valid Parentheses

    这是悦乐书的第147次更新,第149篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第6题(顺位题号是20),给定一个只包含字符'(',')','{','}','['和'] ...

  9. 卸载安装node npm (Mac linux )

    1. 卸载node npm (1) 先卸载 npm: sudo npm uninstall npm -g (2) 然后卸载 Node.js. (2.1) 如果是 Ubuntu 系统并使用 apt-ge ...

  10. JavaScript显示文本框后自动获取焦点

    废话少说,见官方文档: 他的用法是:document.getElementById('username').focus();                   这样写在display:block;显 ...