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

article/2025/3/4 11:15:02

前言: 

这篇博客为阅读论文后的总结与感受,方便日后翻阅、查缺补漏,侵删!

论文:

  • InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets

 

解决的问题:

InfoGAN,它是对生成性对抗网络(GAN)的一个信息论扩展,因此,它是对原有模型的改进。InfoGAN能够以完全无监督的方式学习分离的表示,我们知道在GAN 提到,生成器(generator)和判别器(discriminator)的对抗学习,它的目标其实是得到一个与真实数据分布一致以假乱真的数据分布。但是由于generator的输入是一个连续的噪声信号z,并且没有任何约束,导致GAN将z的具体维度与无法的语义特征无法对应起来,可解释性很差;以手写数据集为例,比如笔画粗细,倾斜度等。

如何解决:

  • 简介

InfoGAN是一个生成性的对抗网络,它也最大化了一小部分潜在变量和观测值之间的相互信息。我们得到了一个可以有效优化的互信息目标的下界。具体来说,InfoGAN成功地从MNIST数据集上的数字形状、3D渲染图像的光照姿势和SVHN数据集上的中心数字中分离出了书写风格。它还发现了一些视觉概念,包括发型、是否戴眼镜以及人脸数据集上的情绪。实验表明,InfoGAN学习的可解释表示与现有的有监督表示学习方法学习到的具有竞争性。

  • 背景:生成性对抗网络

古德费罗等人,介绍了生成性对抗网络(GAN),它是一个使用博弈对策训练深层生成模型的框架。目标是学习与实际数据分布P_{data}(x)匹配的生成器分布P_{G}(x)。GAN没有试图显式地将概率分配给数据分布中的每个x,而是通过将噪声变量z\sim P_{noise}(z)转换为样本G(z)。该生成器通过与鉴别器网络D进行训练,鉴别器网络D旨在区分来自真实数据分布P_{data}和生成器生成的分布P_{G}的样本。因此,对于给定的生成器,最佳鉴别器为D(x) = P_{data}(x) /(P_{data}(x)+P_{G}(x))。更正式地说,博弈的对策由以下表达式给出:

D(x)的输出为[0,1]之间的一个值,越接近于1越表示该数据集来自真实的数据分布,至于为啥用log,和最大似然估计原理一样,x可能是高维度,log可以将连乘变为连加方便计算。

  • 具体实现

GAN公式中使用一个简单的系数连续输入噪声矢量z(一般为高维标准正态分布),同时不限制生成器使用该噪声的方式。结果,噪声可能被生成器以高度纠缠的方式使用,从而导致z的各个维度与数据的语义特征不对应。然而,许多领域需要将z分解成一组语义上有意义的向量。例如,当从MNIST数据集生成图像时,如果模型自动选择分配一维离散随机变量来表示数字(0-9)的生成,并且选择有两个额外的连续变量来表示数字的角度和数字笔划的厚度,这将是理想的。如果我们可以在不受任何监督的情况下恢复这些概念,只需指定一个MNIST数字是由10个变量中的1个变量和两个连续变量生成的,这将非常有用。

具体做法,将输入噪声矢量分解为两部分:(1)z,它被视为不可压缩噪声;(2)c,我们将称之为隐变量,该隐变量将针对数据分布显著的结构语义特征。在数学上,我们用c_{1},c_{2},c_{3},....c_{L}来表示隐变量c,我们假设维度之间相互独立,即p(c_{1},c_{2},c_{3},....,c_{L}) = \prod_{i=1}^{L}p(c_{i}),我们现在提出了一种在无监督的情况下发现这些潜在因素的方法:我们给生成器网络输入不可压缩噪声z和隐变量c,因此生成器输出的形式变成G(z,c)。然而,在标准GAN中,生成器可以通过找到满足P_{G}(x|c) = P_{G}(x)的解来自动忽略额外的隐变量c。为了解决这个问题,提出了一种信息论正则化方法:隐变量c和生成器的输出G(z,c)之间应该有很高的互信息,即它们之间有较高的关联性。因此I(c,G(z,c))应该很高。互信息就是我们学过的信息增益,具体形式如下:

这里改写我们传统GAN优化公式为:

看到这,你可能有疑问正则项前面为啥是负的,因为这个正则化项和D没有关系,只和G有关系,因为G最小化这个公式,而我们要最大化这个正则化项,因此我们把正则化项前面加了个负号。 

据此对原始GAN模型的值函数做了一点修改,相当于加了一个互信息的正则化项。\lambda是一个超参数,如果是连续值情况下它应该它很容易调整,并且简单地将其设置为1就足以处理离散隐含编码。当隐含编码包含连续变量时,通常使用较小的\lambda来确保现在涉及互信息的\lambda L1(G,Q)与GAN目标具有相同的优化尺度。

到这,我们已经成功给出了infoGAN的优化目标。但实际上,互信息项I(c,G(z,c))很难直接最大化,因为它需要已知P(c | x),从下面公式就可以看到这点。幸运的是,可以通过定义一个辅助分布Q(c | x)来近似P(c | x),这样我们可以得到它的变分下界:

推导:我们知道熵的公式为:

H(x) =-E _{x\sim p(x)}[logp(x)] 

H(Y|X) = -E_{x\sim p(X)}[E_{y\sim p(Y|x)}logp(Y|x)]  

故:-H(c|G(z,c) )

=E_{x\sim G(z,c)}[E_{c^{'}\sim p(c|G(z,c))}logp(c^{'}|G(z,c))]

=E_{x\sim G(z,c)}[E_{c^{'}\sim p(c|x)}logp(c^{'}|x)]

=E_{x\sim G(z,c)}[E_{c^{'}\sim p(c|x)}logp(c^{'}|x)\frac{Q(c^{'}|x)}{Q(c^{'}|x)}]

=E_{x\sim G(z,c)}[E_{c^{'}\sim p(c|x)}[log\frac{p(c^{'}|x)}{Q(c^{'}|x)}+ logQ(c^{'}|x)]]

=E_{x\sim G(z,c)}[E_{c^{'}\sim p(c|x)}log\frac{p(c^{'}|x)}{Q(c^{'}|x)}+ E_{c^{'}\sim p(c|x)}logQ(c^{'}|x)]   

=E_{x\sim G(z,c)}[ KL(p(c^{'}|x)||Q(c^{'}|x)) + E_{c^{'}\sim p(c|x)}logQ(c^{'}|x)]

然而在infoGAN中,隐变量c为人为设定的,故H(c)相当于已知常数。到目前为止,我们已经绕过了必须显式计算后验p(c|x)的问题,但是我们仍然需要从p(c|x)中采样使用MCMC来近似期望,作者引出了一个定理,可以避免从p(c|x)中采样,即:

对于随机变量XY和函数f(X,Y),在适当的正则条件下:

使用上式可以将我们的变分下界写成:

这样便可使用MCMC采样,成功计算变分下界L_{1}(G,Q)

我们知道当离散潜码的变分下界达到其最大L_{1}(G,Q) = H(c)时,该下界变得紧,从而得到最大互信息(不是太懂)。

因此,InfoGAN被定义为具有互信息的变分正则化和超参数\lambda的优化公式如下:

在实际做法中,为了引入c,具体的操作是,generator的输出,经过一个分类器,看是否能够得到c。其实可以看成一个anto-encoder的反过程。其余的discriminator与常规的GAN是一样的。在实际过程中,classifier和discriminator会共享参数,只有最后一层是不一样的,classifier输出的是一个向量,而discriminator输出的是一个标量。

  • 实验

我们实验的第一个目标是研究互信息是否能有效地最大化。第二个目标是评估InfoGAN是否能够通过使用生成器一次只改变一个潜在因素来学习分离和可解释的表示,以评估改变这些因素是否只导致生成图像中的一种类型的语义变化。

互信息最大化:

为了评估隐变量与生成的图像G(z,c)之间的互信息是否能有效地最大化,我们在MNIST数据集上训练InfoGAN,在隐变量

c\sim Cat(K=10,p=0.1)上具有均匀的分类分布。在下图中,下界L_{1}(G,Q)迅速最大化为H(c)\approx 2.30,这意味实现了最大互信息。作为比较,我们还训练了一个具有辅助分布Q的正则GAN,当不明确鼓励生成器最大化与潜在码的互信息时。由于我们使用神经网络来参数化Q,我们可以假设Q合理地近似于真实的后验p(c|x),因此在正则GAN中,潜在码和生成图像之间几乎没有相互信息。这种比较证明了,在常规GAN中,不能保证生成器将使用隐变量,而是会忽略隐变量。

分离表示:

为了从MNIST数据集上的样式中分离数字形状,我们选择用隐变量c的一个分量c_{1}\sim Cat(K=10,p=0.1)和另外两个分量为连续变量c_{2},c_{3}\sim Unif(-1,1)进行实验,这两个连续变量可以捕获数字本质上连续变化。在下图中,我们展示了c1捕捉到了数字形状的巨大变化。大多数情况下更改c1可以造成数字之间的切换。事实上,即使我们只是在没有任何标签的情况下训练InfoGAN,c1也可以用作分类器,通过将c_{1}中的每个类别与一个数字类型相匹配,在对MNIST数字进行分类时达到5%的错误率。在下图a中第二行,我们可以看到数字7被归类为9。c_{2},c_{3}捕获样式的连续变化:c_{2}控制数字的旋转,c_{3}控制数字的宽度。值得注意的是,在这两种情况下,生成器不只是拉伸或旋转数字,而是调整其他细节,如厚度或笔划样式,以确保生成的图像是自然的外观。为了检验InfoGAN学习到的隐含表征是否具有普遍性,我们以一种夸张的方式操纵了隐变量:我们没有从−1到1改变潜隐变量,而是从−2到2改变它,覆盖了网络从未训练过的广阔区域,我们仍然得到有意义的推广。

在人脸数据集上,DC-IGN学习通过监督将潜在因素表示为方位(姿态)、仰角和光照作为连续的潜在变量。使用相同的数据集,我们证明InfoGAN学习了一种分离的表示法,该表示法可以恢复同一数据集中的方位角(pose)、仰角和照明。在本实验中,我们选择用c的5维连续分量c_{i}\sim Unif(-1,1)1\leq i\leq 5进行建模。 操纵3D人脸上的隐变量:我们展示了学习的连续潜在因子对输出的影响,因为它们的值在-1到1之间变化。在(a)中,我们证明了一个连续的隐变量分量持续地捕捉不同形状的脸部方位角;在(b)中,一个隐变量分量捕获仰角;在(c)中,一个隐变量分量照明的方向;在(d)中,一个隐变量分量学习在宽面和窄面之间插值,同时保留其他视觉特征。

 


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

相关文章

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…

咖啡PowerBI可视化实例

目录 一、导入数据 二、构建指标 1、构架表之间的关系 ​ 2、完善表 3、构建指标 三、可视化 1、整体分析 2、省份业务 3、产品维度 4、地区维度 5、客户维度 6、价格分析 7、利润分析 8、其它分析 一、导入数据 二、构建指标 1、构架表之间的关系 软件会…

CodeScene - 软件质量可视化工具

CodeScene - 软件质量可视化工具 CodeScene https://codescene.com/ https://codescene.io/ The powerful visualization tool using Predictive Analytics to find hidden risks and social patterns in your code. 使用 Predictive Analytics 的功能强大的可视化工具&#x…

使用excel、python、tableau对招聘数据进行数据处理及可视化分析

招聘数据数据分析及可视化 数据来源前言一、观察数据删除重复值数据加工 二、利用python进行数据分析和可视化1.引入库2.读入数据观察描述统计,了解数据大概信息 3.数据预处理3.1数据清洗3.1.1 删除重复值3.1.2缺失值处理 3.2数据加工 4.数据可视化4.1城市岗位数量4…

可视化工具软件排行榜

市面上的数据可视化工具软件如此之多,有哪些可视化软件工具居于排行榜单的前列呢?你用的软件上榜了吗? 1、FineBI 来自帆软公司,虽作一个BI工具,但是可视化效果不错,可制作Dashboard。优势在于一旦准备好…

2020年六十款数据分析的可视化工具推荐

今天小编将为大家盘点六十款数据分析的可视化工具,让你妥妥的成为会议室乃至全公司最亮的崽~ 1、ChartBlocks ChartBlocks是一款网页版的可视化图表生成工具,在线使用。通过导入电子表格或者数据库来构建可视化图表。整个过程可以在图表的向导指示下完成。它的图表在HTML…

值得推荐的13款可视化软件,快收藏!

数据可视化力求用图表结合的方式把所有的数据整合在某一图像上,这样呈现在观众眼前的画面不仅仅是美观,且比以往长篇大论或是密密麻麻的数据表格更直观易懂,更便于观察分析。到今年上半年为止,国内外已经有了很多发展的较好的数据…

深入分析ArrayMap

前面我们分析了Android为了节省内存提供的一个HahMap<Integer, ?>的替代品SparseArray。SparseArray只能替代key的类型为int的Map。Android也提供了一个key不用局限于int的Map的实现&#xff0c;ArrayMap。老规矩我们通过调试来深入的分析一下ArrayMap&#xff08;看本文…

ArrayMAP介绍

它不是一个适应大数据的数据结构&#xff0c;相比传统的HashMap速度要慢&#xff0c;因为查找方法是二分法&#xff0c;并且当你删除或者添加数据时&#xff0c;会对空间重新调整&#xff0c;在使用大量数据时&#xff0c;效率并不明显&#xff0c;低于50%。 ArrayMap is a ge…

Android特别的数据结构(二)ArrayMap源码解析

1. 数据结构 public final class ArrayMap<K,V> implements Map<K,V> 由两个数组组成&#xff0c;一个int[] mHashes用来存放Key的hash值&#xff0c;一个Object[] mArrays用来连续存放成对的Key和ValuemHashes数组按非严格升序排列初始默认容量为0减容&#xff…