InfoGAN学习笔记

article/2025/3/4 11:48:30

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

 

一、从GANInfoGAN

1.GAN存在的问题

GAN通过生成器与判别器的对抗学习,最终可以得到一个与real data分布一致的fake data,但是由于生成器的输入z是一个连续的噪声信号,并且没有任何约束,导致GAN无法利用这个z,并且无法将z的具体维度与数据的语义特征对应起来,并不是一个可解释的表示。

GAN存在的问题:无约束、不可控、噪声信号z很难解释等问题。

2.InfoGAN:通过最大化生成对抗网络的信息进行可解释的表示学习

InfoGAN是对GAN的一种改进,曾被OPENAI称为2016年的五大突破之一。

InfoGAN以此为出发点,试图利用z寻找一个可解释的表达,于是将z进行拆解,可分为如下两部分:

①z:不可压缩的噪声

②c:可解释的隐变量(latent code)

(其目的在于数据分布的显著结构化语义特征)

作者希望通过约束隐变量c与生成数据之间的关系,可以使得c里面包括有对数据的可解释信息。如文中提到的MNIST数据集,c可以分为categorial latent code指向数字种类信息(0-9),continous latent code指向倾斜度、粗细。

二、InfoGAN理论分析

1.无监督学习

(1)无监督学习是指从无标签数据中学习出关键的语义特征。然后利用该特征用于分类、回归、策略学习等。

(2)无监督学习的流行框架是表征学习,其目标是使用未标记的数据来学习将重要语义特征暴露为易于解码的要素表示。

(3)无监督学习的很大部分是由生成模型驱动的。

这是由于相信生成或创造观察到的数据需要某种形式理解的能力,希望一个良好的生成模型将自动学习一个特征分离的表示,即使很容易构建完美生成模型却具有随机不好的表示的。

2.disentangled representation

(1)无监督学习是一个病态问题,因为相关下游任务通常是未知的。

(2)数据的解耦表示对于相关的,但是未知的下游任务有比较好的效果。

数据的解耦表示:是显示表示数据的显著特征。

比如:对于人脸,一个有用的解耦表示就是将人脸表情、眼睛颜色、是否戴眼镜等一个个特征分别表示一个特征维度,每个维度的不同取值表示各个特征的取值。

3.隐变量c

①对应于语义向量,隐变量编码代表数据分布的显著特征的语义特征。

通过定义一系列的结构潜变量c1,c2,c3,……,相互独立,则:

②标准GAN中,直接为网络的输入进行训练,那么生成器将忽略隐变量c的作用,即P­­­G­(x|c)=P­G­(x)。

或者可以看成隐变量c与x相互独立,不相关。

③InfoGAN提出一种无监督方式,让生成网络输入噪声变量z和隐变量c。即生成网络表示为G(z,c)

④InfoGAN需要强化隐变量c的作用,使c能够直接代表生成的变量的某一方面的属性,所以需要让隐变量与生成的变量G(z,c)拥有尽可能多的共同信息。

4.互信息I(X;Y)(最大化隐变量与生成结果的互信息)

InfoGAN的目标:是加入一个新的隐变量c,使得c与生成的样本具有较高的互信息。这样c用于表示数据某个方面的语义信息,z用于表示样本x中与c无关的其它信息。

①定量互信息I(c;G(z.c))—>(InfoGAN提出信息正则化约束项)

在信息论中,I(x;y)表示x里面关于y的信息有多少;

②在原始GAN损失函数V(D,G)基础上,提出加入信息正则化约束项I(c;G(z.c))

③优化函数,采用近似方法

求I需要涉及到P(c|x),但是分布很难求。使用下界代替I来进行简化。

简化之后,函数I不在需要使用P(c|x)而是使用了一个下界函数Q(c|x) 作为因子高斯来进行替代,而Q(c|x)本质上是对P(c|x)的拟合;

简化之后,虽然不需要使用P(c|x),但是需要从P(c|x)中采样以计算期望。当c包含连续变量时,较小的通常用于确保的微分熵与GAN目标规模相同。

 

在具体实现中,Q和D共用了所有的卷积层,并只在最后增加了一个全连接层来输出Q(c|x),因此InfoGAN并没有在GAN上增加多少计算量。

三、InfoGAN建模分析

1.InfoGAN三个网络:

①生成网络x=G(c,z)

②判别真伪网络y1=D­1­(x)

③判别类别c网络y2=D­2­(x)

当c用于代表类别信息的时候,网络的最后一层是softmax层。且D­1­(x)和D­2­(x)共享网络参数。

2.实验设置以及结果

(1)文中提到实验的两个目标:

①第一个目标是调查互信息是否可以有效地最大化;

②第二个目标是评估如果InfoGAN可以通过利用生成器来一次只改变一个潜在因素来学习分离和可解释的表示,以便评估如果这样的变化因素仅导致生成的图像中的一种类型的语义变化。

(2)实验结果分析

①评估隐变量c和生成图像G(z,c)之间的互信息有效最大化

在MNIST数据集上训练InfoGAN,对隐变量c进行统一的分类分布

 

②MNIST数据集

一个分类代码c1对潜在代码进行建模:C1~Cat(K = 10,p = 0.1),可以模拟数据中的不连续变化;可以捕获本质上连续变化的两个连续码:c2,c3~ Unif(-1,1);

连续码c2c3捕获样式的连续变化:c2控制数字旋转角度和c3控制数字书写宽度

(a图)c­1­中的每个类别基于对应一个数字类型;

(b图)在没有信息正则化的情况下,在GAN变化的c­1­导致不可解释的变化;

(c图)c­2­小值表示向左倾,大值表示向右倾;

(d图)c­3­平滑的控制宽度。

③3D Faces数据集

学习连续变量使输出的值从(-1,1)变化不等。

(a图)连续潜变量始终捕捉不同的形状脸的方位角;

(d图)连续潜变量在保留其他视觉特征的同时,学习在宽度和窄面之间进行插值。

④3D Chairs数据集

(a图)用连续码捕捉椅子的方位,并保持其形状(映射在不同的类型变化);

(b图)连续码捕捉不同椅子的宽度,平滑的展示出来。

⑤StreetView House Number(SVHN)数据集

(a图)连续码:光照

(b图)离散码:上下文

⑥CelebA数据集

(a图)方位角:分类码可以通过离散化这种连续性质的变化来捕捉方位角;

(b图)在分类码的一个子集用于表示眼镜是否存在;

(c图)显示发型的变化,大致从较少的发型到较多的发型;

(d图)显示情感的变化,大致从严肃到高兴。

四、结论

(1)InfoGAN介绍了一种称为信息最大化生成对抗网络的表示学习算法

与之前的需要监督的方法相比,InfoGAN完全没有监督,可以在具有挑战性的数据集上学习可解释和解耦的表示。

(2)InfoGAN也是一个生成对抗网络

最大化潜在变量的一小部分与观察(生成)结果之间的互信息。得出可以有效优化的互信息目标的下限。

(3)实验验证结果

InfoGAN成功地将MNIST数据集上的数字形状的写作风格,3D渲染图像的照明姿势,以及SVHN数据集中央数字的背景分离。它还发掘包括发型,是否存在眼镜和CelebA面部数据集上的情感等视觉概念。实验表明,InfoGAN可以学习与现有监督方法学习的表征具有竞争力的可解释性表征。


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

相关文章

生成对抗网络(十)----------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…

ArrayMap 源码的详细解析

最近在写framework层的系统服务&#xff0c;发现Android 12中用来去重注册监听的map都是用的ArrayMap&#xff0c;因此仔细研究了ArrayMap的原理。 目录 一. ArrayMap概述 二. ArrayMap源码解析 1.主要包含的成员变量 2.构造函数 3. public boolean containsKey(Object ke…