GAN及其变体C_GAN,infoGAN,AC_GAN,DC_GAN(一)

article/2025/3/4 8:54:27

当时害怕篇幅过大,拆分两部分编写,下一篇文章见:GAN及其变体DCGAN, CGAN,infoGAN,BiGAN,ACGAN,WGAN,DualGAN(二)

在介绍GAN之前,我们先了解一些什么是生成模型(Generative Model)和判别模型(Discriminative Model)。

  • 生成模型:学习联合概率分布P(X,Y), 即特征X和标签Y共同出现的概率,然后求条件概率分布P(Y|X)=P(X,Y)/P(X),即为生成模型。简言之,先通过学习先验分布P(x, y)来推导后验分布P(Y|X)
  • 判别模型:学习条件概率分布P(Y|X),即在特征X出现的条件下标记Y出现的概率,简言之,直接学习后验分布P(Y|X)

GAN生成对抗网络

论文:Generative Adversarial Nets(2014)

GAN包含两个部分,即生成器generative和判别器discriminative。以生成图片为例,生成器主要用于学习真实图像分布从而让自身生成的图像更加真实,使得判别器分辨不出生成的数据是否是真实数据。判别器则需要对接受到的图片进行真假判别。整个过程可以看作是生成器和判别器的博弈,随着时间的推移,最终两个网络达到一个动态均衡:生成器生成的图像近似于真实图像分布,而判别器对给定图像的判别概率约为0.5,相当于盲猜。

假设真实数据data分布为P_{data},生成器G学习到的数据分布为P_{g},z为随机噪声,P_{z}为噪声分布,G\left ( z;\theta _{g} \right )为生成映射函数,将这个随机噪声转化为数据x,D\left ( x;\theta _{d} \right )为判别映射函数,输出是判别x来自真实数据data而不是生成数据的概率。训练判别器D使得判别概率最大化,同时,训练生成器G最小化log\left ( 1-D\left ( G\left ( z \right ) \right ) \right ),这个优化过程可以被归结于一个‘二元极小极大博弈’(two-player minimax game),目标函数被定义如下:

          \min_{G}\max_{D}V\left ( D,G \right )=\mathbb{E}_{x \sim p_{data}\left ( x \right )}\left [ logD\left ( x \right ) \right ]+\mathbb{E}_{ z \sim p_{z}\left ( z \right )}\left [ log\left ( 1 - D\left ( G\left ( z \right ) \right ) \right ) \right ] 

从判别器D的角度,D希望它自己能够尽可能地判别出真实数据和生成数据,即使得D(x)尽可能的达,D(G(z))尽可能的小,即V(D,G)尽可能的大。从生成器G的角度来说,G希望自己生成的数据尽可能地接近于真实数据,也就是希望D(G(z))尽可能地大,D(x)尽可能的小,即V(D,G)尽可能的小。两个模型相互对抗,最后达到全局最优。

用图示解释,如图1所示,假设在训练伊始,真实数据分布为图中的黑色点线,生成样本分布为途中绿色实线,判别模型分布为紫色虚线。图一:开始时,判别模型不能很好地区分真实样本和生成样本;图二:当固定生成模型,训练判别模型时,可以看到这时候判别模型有所进步,能够较好的区分真实样本和生成样本;图三:固定判别模型,训练生成模型,可以看出这时候生成模型生成的样本的分布与真实样本的分布更加接近;这样不断迭代,图四:到最后达到一个平衡,生成样本分布和真实样本分布重合,判别模型的识别概率为0.5。

图1:GAN

C_GAN (Conditional Adversarial Net)

论文:Conditional Generative Adversarial Nets(2014)

条件生成式对抗网络C_GAN是对原始GAN的一个扩展,生成器和判别器都增加额外信息y为条件,y可以是任何类型的附加信息,例如类别信息或者来自其他模态的数据。 图2中展示了一个简单的条件生成式对抗网络C_GAN的结构信息。在生成模型中,输入噪声P(z)和条件信息y联合组成了联合隐层表征。对抗训练在隐层表征的组成方式方面相当地灵活。类似的,C_GAN则被看做是带有条件概率的二人极大极小值博弈,目标函数被定义如下:

                                     \min_{G}\max_{D}V\left ( D,G \right )=\mathbb{E}_{x \sim p_{data}\left ( x \right )}\left [ logD\left ( x | y \right ) \right ]+\mathbb{E}_{ z \sim p_{z}\left ( z \right )}\left [ log\left ( 1 - D\left ( G\left ( z | y \right ) \right ) \right ) \right ]

图2:CGAN结构

InfoGAN(Information  Maximizing Generative Adversarial Network)

论文:infoGAN:Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets(2016)

首先我们先介绍一些信息论的一些知识,X和Y之间的互信息(mutual information)I(X;Y)表示变量间相互依赖性的度量。依图3所见,互信息了一看作两个熵的差值,I\left ( X;Y \right )=H\left ( X \right ) - H\left ( X|Y \right )=H\left ( Y \right )-H\left ( Y|X \right )

如果X和Y是独立的,那么I(X;Y)=0。X与Y之间关联性越大,I(X;Y)就越大

图3:互信息

信息最大化生成对抗网络infoGAN的提出是为了无监督学习得到可分解的特征表示。由于原始GAN的生成器的输入仅仅是一个连续的噪声向量z,没有加任何限制,所以是在以一种高度混合的方式使用z,导致生成器无法将z的维度和数据的语义特征联系起来。然而,many domains natually decompose into a set of semantically meaningful factors of variation.

基于上面的分析,在生成器的输入中加入了隐含编码c,现在输入变量包含两部分,不能压缩的噪声z和隐含编码c,所以生成器记作G(z, c)。在原先的GAN中,生成器将会忽略附加的隐含编码c,而仅仅去学习变量分布,P_{G}\left ( x|c \right )=P_{G}\left ( x \right )。因此,作者提出infoGAN,其中info表示生成分布G(z, c)和隐含编码c之间的互信息,而且为了使得x和c之间关联密切,应当最大化I\left ( c;G\left ( z,c \right ) \right )

因此在原始GAN目标函数的基础上,增加了正则项约束,如下:

                                              \min_{G}\max_{D}V_{I}\left ( D,G \right )=V\left ( D,G \right )-\lambda I\left ( c;G\left ( z,c \right ) \right )

实际上,因为需要后验P\left ( c|x \right ),互信息I\left ( c;G\left ( z,c \right ) \right )是很难直接最大化的,我们可以通过定义一个辅助的分布Q\left ( c|x \right )来逼近P\left ( c|x \right ),从而得到P\left ( c|x \right )的变分下界。经过一系列的公式推导和证明,最后目标函数可以等价于:

                                                \min_{G,Q}\max_{D}V_{I}\left ( D,G,Q \right )=V\left ( D,G \right )-\lambda L_{I}\left ( G,Q\right )

其中L_{I}\left ( G,Q \right )=E_{c \sim P\left(c\right), x \sim G\left(z,c\right)}\left [ logQ\left(c|x\right) \right ]+H\left(c \right )

具体实现中,我们使用神经网络来参数化辅助分布Q。在具体实现中,Q和D共用所有的卷积层,并且在最后的全连接层输出条件分布Q(c|x)的参数,因此infoGAN相比于原GAN来说,仅仅增加了微不足道的计算消耗。

ACGAN(Auxiliary Classifier Generative Adversarial Networks)

论文:Conditional Image Synthesis with Auxiliary Classifier GANs (2017)

如上面介绍的CGAN,使用side information扩充原GAN,为了能够生成class conditional samples, 给生成器和判别器提供类别标签(class labels);如上面介绍的infoGAN,调整判别器,使其包含一个辅助解码网络(auxiliary decoder network),网络的输出为生成样本隐含量的一个子集(semi-Supervised GAN中辅助网络输出的是训练数据的类别标签)。结合这两种策略利用side information,因此ACGAN应用而生,ACGAN模型属于class contional, 但是是使用一个辅助的解码器来重建类别标签。盗一个图使得上述语言描述图示化。

ACGAN中,生成器不仅仅包含噪声z,还包含对应的类别标签c \sim p_{c},生成器G使用两者来生成样本X_{fake}=G\left ( c,z \right ),判别器D分别对图像的真假和类别标签给出判别概率,所以目标方程包含两部分,如下所示:

 判别器D训练最大化L_{S}+L_{C},而生成器G训练最大化L_{C}-L_{S},ACGAN学习关于z独立于类标签的表达。

DC_GAN(Deep Convolutional Generative Adversarial Networks)

论文:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks (2016)

CNN在监督学习(supervised learning)领域取得了不俗的成就,相对地,CNN在无监督学习(unsupervised learning)领域却没有很大的进展,为了填补CNN在监督学习和无监督学习之间的gap,此篇论文提出了将CNN和GAN结合的DCGAN(深度卷积生成对抗网络),并且DCGAN在无监督学习中取得不错的结果。

GAN的一大问题是训练不稳定,有时候会得到没有意义的输出,通过对卷积GAN结构添加一些限制,可以使得卷积GAN可以保持稳定,如下所述:

  • 生成器中使用fractional-strided convolutions(deconvolutions)替代池化层,判别器中使用strided  convolutions替代池化层
  • 在生成模型和判别模型中使用batchnorm(直接将BN应用到所有层会导致样本震荡和模型不稳定,在生成器中将BN应用带输出 层,在判别器中将BN应用于输出层可避免这种现象)
  • 对于更深的架构,移除全连接隐含层
  • 在生成器中,除了输出层使用tanh激活函数,其他层都使用ReLU激活函数
  • 在判别器中,所有层中都使用LeakyReLu激活函数
图4:深度卷积生成对抗网络

 如图4所示,DCGAN的输入是个100维的均匀分布的向量,然后经过一系列的反卷积操作输出64*64大小的RGB图像。如下面三张PPT所示,DCGAN的操作恰恰与传统的CNN的计算方向相反,CNN中使用卷积操作,则DCGAN中使用反卷积(deconvolutional/transposed-convolution)。


http://chatgpt.dhexx.cn/article/VCHPBbUd.shtml

相关文章

深度学习《InfoGAN模型》

一:网络介绍 普通的GAN网络的特点是无约束,对网络输入的噪声也不好解释,CGAN中我们通过给噪声合并一些类别数据,改变了输出形式,可以训练出我们指定类别的数据,这一点也是某种程度的解释,但是解…

InfoGAN原理PyTorch实现Debug记录

1. CGAN从无监督GAN改进成有监督的GAN GAN的基本原理输入是随机噪声,无法控制输出和输入之间的对应关系,也无法控制输出的模式,CGAN全称是条件GAN(Conditional GAN)改进基本的GAN解决了这个问题,CGAN和基本…

CGAN和InfoGAN理解

在一些比较经典的GAN模型中(像WGAN、LSGAN、DCGAN等等),往往都是从样本空间里随机采样得到输入噪声,生成的图像究竟属于哪一个类别也是随机的。通过这些模型,我们无法生成指定类别的数据。 举个不恰当的例子&#xff…

InfoGAN

InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets Xi Chen, Yan Duan, Rein Houthooft, John Schulman, Ilya Sutskever, Pieter Abbeel https://arxiv.org/abs/1606.03657 一、从GAN到InfoGAN 1.GAN存在的问题 GAN通…

InfoGAN 生成时序序列

InfoGAN 生成时序序列 简介 完整代码:https://github.com/SongDark/timeseries_infogan 本文介绍用InfoGAN生成多维时序序列。 数据 数据集下载地址 NameClassDimensionTrain SizeTest SizeTruncatedCharacterTrajectories20314221436182 样本介绍 CharacterTr…

InfoGAN详解与实现(采用tensorflow2.x实现)

InfoGAN详解与实现(采用tensorflow2.x实现) InfoGAN原理InfoGAN实现导入必要库生成器鉴别器模型构建模型训练效果展示 InfoGAN原理 最初的GAN能够产生有意义的输出,但是缺点是它的属性无法控制。例如,无法明确向生成器提出生成女…

InfoGAN论文笔记+源码解析

论文地址:InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets 源码地址:InfoGAN in TensorFlow GAN,Generative Adversarial Network是目前非常火也是非常有潜力的一个发展方向&#…

InfoGAN(基于信息最大化生成对抗网的可解释表征学习)

前言: 这篇博客为阅读论文后的总结与感受,方便日后翻阅、查缺补漏,侵删! 论文: InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets 解决的问题: In…

InfoGAN学习笔记

InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets Xi Chen, Yan Duan, Rein Houthooft, John Schulman, Ilya Sutskever, Pieter Abbeel https://arxiv.org/abs/1606.03657 一、从GAN到InfoGAN 1.GAN存在的问题 GAN…

生成对抗网络(十)----------infoGAN

一、infoGAN介绍 infoGAN采用的是无监督式学习的方式并尝试实现可解释特征。原始数据不包含任何标签信息,所有的特征都是通过网络以一种非监督的方式自动学习得到的。使用了信息论的原理,通过最大化输入噪声和观察值之间的互信息来对网络模型进行优化。…

InfoGAN详细介绍及特征解耦图像生成

InfoGAN详细介绍及特征解耦图像生成 一.InfoGAN框架理解特征耦合InfoGANInfoGAN论文实验结果 二.VAE-GAN框架理解VAE-GAN算法步骤 三.BiGAN框架理解四.InfoGAN论文复现使用MNIST数据集复现InfoGAN代码编写初始化判别器初始化生成器初始化分类器训练InfoGAN网络 总结参考文献及博…

InfoGAN介绍

今天给大家分享的是NIPS2016的InfoGAN。这篇paper所要达到的目标就是通过非监督学习得到可分解的特征表示。使用GAN加上最大化生成的图片和输入编码之间的互信息。最大的好处就是可以不需要监督学习,而且不需要大量额外的计算花销就能得到可解释的特征。 通常&#…

10.可视化、可视分析、探索式数据分析

前言:基于人大的《数据科学概论》第十章。主要内容为可视化的定义、可视化的意义、可视化的一般过程、科学可视化与信息可视化、可视化的原则、可视化实例、可视化的挑战和趋势、可视分析技术、探索式数据分析、可视化工具。 一、可视化的定义 可视化是数据的可视表…

国内外大数据可视化分析产品点评

一、KINETICA Kinetica 利用图像处理芯片提供计算支持,允许企业使用机器学习,商业智能分析和可视化技术更快速地分析海量数据; 点评:它的核心技术能力是类MapD的GPU数据库,功能性能较强大,非开源&#xf…

数据分析可视化之模型介绍

一 前言 “数据分析可视化”这条术语实现了成熟的科学可视化领域与较年轻的信息可视化领域的统一。 数据分析可视化:是指将大型数据集中的数据以图形图像形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。 数据可视化已经提出了许多方法&…

5个最受欢迎的大数据可视化软件

数据可视化的本质是视觉对话,数据可视化将数据分析技术与图形技术结合,清晰有效地将分析结果信息进行解读和传达。 大数据可视化是进行各种大数据分析解决的最重要组成部分之一。 一旦原始数据流被以图像形式表示时,以此做决策就变得容易多了…

软件架构-可视化

软件架构-可视化 当我们在讨论系统时,往往都会说这个系统的架构是什么样的,在你口述的同时,如果能借助某些图表,效果会更好,传统的uml建模比较复杂,目前的软件工程大家更关注效率(这里我不谈敏捷…

48 款数据可视化分析工具大集合

作者:DC君 来源:DataCastle数据城堡 本篇专门推荐48款数据可视化工具,全到你无法想象。 1、Excel 作为一个入门级工具,是快速分析数据的理想工具,也能创建供内部使用的数据图,但是Excel在颜色、线条和样式上…

爬取某小说榜单爬虫及可视化分析

爬取某小说榜单爬虫及可视化分析(仅用于学习) gitee代码链接:https://gitee.com/huang_jia_son/duoduo.git 介绍 GUI界面python爬虫数据清洗与处理pyecharts可视化展示软件架构 (1)通过tkinter制作GUI界面&#xf…