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 生成中文字符图片

原文地址:https://www.cnblogs.com/shouhuxianjian/p/8467845.html

时间: 2024-08-06 04:58:15

Generative Adversarial Nets[LSGAN]的相关文章

论文笔记之:Generative Adversarial Nets

Generative Adversarial Nets NIPS 2014 本文通过对抗过程,提出了一种新的框架来预测产生式模型,我们同时训练两个模型:一个产生式模型 G,该模型可以抓住数据分布:还有一个判别式模型 D 可以预测来自训练样本 而不是 G 的样本的概率.训练 G 的目的是让 D 尽可能的犯错误,让其无法判断一个图像是产生的,还是来自训练样本.这个框架对应了

论文笔记之:Conditional Generative Adversarial Nets

Conditional Generative Adversarial Nets arXiv 2014   本文是 GANs 的拓展,在产生 和 判别时,考虑到额外的条件 y,以进行更加"激烈"的对抗,从而达到更好的结果. 众所周知,GANs 是一个 minmax 的过程: 而本文通过引入 条件 y,从而将优化的目标函数变成了: 下图给出了条件产生式对抗网络的结构示意图: 是的,整个过程就是看起来的这么简单,粗暴,有效. 实验部分,作者在 Mnist 数据集上进行了实验: 然后是,给图像

(转)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: Generative Adversarial Nets Starting this week, I’ll be doing a new series called Deep Learning Research Review. Every couple weeks or so, I’ll be summa

Generative Adversarial Nets[pix2pix]

本文来自<Image-to-Image Translation with Conditional Adversarial Networks>,是Phillip Isola与朱俊彦等人的作品,时间线为2016年11月. 作者调研了条件对抗网络,将其作为一种通用的解决image-to-image变换方法.这些网络不止用来学习从输入图像到输出图像的映射,同时学习一个loss函数去训练这个映射.这让传统需要各种不同loss函数的问题变成了可以采用统一方法来解决成为可能.作者发现这种方法在基于标签map

Generative Adversarial Nets[Wasserstein GAN]

本文来自<Wasserstein GAN>,时间线为2017年1月,本文可以算得上是GAN发展的一个里程碑文献了,其解决了以往GAN训练困难,结果不稳定等问题. 1 引言 本文主要思考的是半监督学习.当我们说到学习一个概率分布,人们传统的意思是学习一个概率密度.这通常是通过定义一个参数化概率密度\((P_{\theta})_{\theta\in R^d}\)家族,然后基于收集的数据进行最大似然:如果当前有真实样本\(\{x^{(i)}\}_{i=1}^m\),那么是问题转换成: \[\unde

Generative Adversarial Nets——解析

摘要 本文提出了一个通过对抗过程来预测产生式模型的新框架.在新框架中我们同时训练两个模型:一个用来获得数据分布的生成模型G,和一个用来估计样本来自训练数据而不是G的概率的判别模型D,G的训练过程是最大化D产生错误的概率,让其无法判断一个图像是由生成模型产生的,还是来自训练样本.这个框架相当于一个极小化极大的双方博弈.在任意函数G 和D 的空间中存在唯一的解,其中G恢复训练数据分布,并且D处处都等于12. 在G和D 由多层感知器定义的情况下,整个系统可以用反向传播进行训练.在训练或生成样本期间不需

Generative Adversarial Nets[Vanilla]

引言中已经较为详细的介绍了GAN的理论基础和模型本身的原理.这里主要是研读Goodfellow的第一篇GAN论文. 0. 对抗网络 如引言中所述,对抗网络其实就是一个零和游戏中的2人最小最大游戏,主要就是为了处理下面的函数\(V(G,D)\): 在实现过程中,如果将D和G都写入同一个循环中,即迭代一次D,迭代一次G,这种情况会让在有限的数据集基础上会导致过拟合.所以Goodfellow推荐:先训练D模型K步,然后再训练G一步.这样可以让D很好的接近最优解,并且让G改变的足够慢. 图0.1 GAN

Generative Adversarial Nets[Improved GAN]

0.背景 Tim Salimans等人认为之前的GANs虽然可以生成很好的样本,然而训练GAN本质是找到一个基于连续的,高维参数空间上的非凸游戏上的纳什平衡.然而不幸的是,寻找纳什平衡是一个十分困难的问题.在现有的针对特定场景算法中,找不适合GAN游戏的算法,因为GAN的实现通常是使用梯度下降的方法去训练GAN网络的目标函数,而不是真的找零和游戏中的纳什平衡.且目标函数本身是非凸函数,其中是连续参数且参数空间维度很高,所以如果真的去搜寻纳什平衡,那么这些算法都是无法收敛的. 当游戏中每个人都认为

Generative Adversarial Nets[EBGAN]

0. 背景 Junbo Zhao等人提出的"基于能量的GAN"网络,其将判别器视为一个能量函数而不需要明显的概率解释,该函数可以是一个可训练的损失函数.能量函数是将靠近真实数据流形的区域视为低能量区域,而远离的视为高能量区域.和"概率GAN"相似,训练中,生成器会尽可能生成最小能量时候的伪造样本,而此时判别器会被赋值为高能量(因为是伪造的).通过将判别器看成一个能量函数,就可以使用更多更广泛的网络结构和损失函数,而不只是logistic输出的二值分类器.其中Junb