InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets

disentangled: vi. 解决;松开;解开纠结;解决(纠纷)
vt. 解开;松开;使解脱

mutual: adj. 共同的;相互的,彼此的

decodable: 可解的

salient: n. 凸角;突出部分
adj. 显著的;突出的;跳跃的

prominent: adj. 突出的,显著的;杰出的;卓越的

intriguing: adj. 有趣的;迷人的
v. 引起…的兴趣;策划阴谋;私通

ladder: n. 阶梯;途径;梯状物
vt. 在……上装设梯子
vi. 成名;发迹

consecutive: adj. 连贯的;连续不断的

entangled: v. 卷入;使…混乱;使…纠缠
adj. 卷入的;被缠住的

trivial: adj. 不重要的,琐碎的;琐细的

auxiliary : n. 助动词;辅助者,辅助物;附属机构
adj. 辅助的;副的;附加的

azimuth: n. [测] 方位;[天] 方位角;偏振角

elevation: n. 高地;海拔;提高;崇高;正面图

distracting: adj. 分心的;分散注意力的
v. 使分心(distract的ing形式);转移注意力

leaning: n. 倾向,爱好;倾斜
v. 倚靠(lean的ing形式)
n. (Leaning)人名;(英)利宁

entails: vt. 使需要,必需;承担;遗传给;蕴含
n. 引起;需要;继承

clamping : n. 钳位
v. 夹住(clamp的现在分词)

stern: n. 船尾;末端
adj. 严厉的;坚定的
n. (Stern)人名;(英、以、法、瑞典、西)斯特恩;(德、波、匈)施特恩

笔记参考:https://blog.csdn.net/u011699990/article/details/71599067

预备知识

  1. 条件熵公式推导:
    \[
    \begin{align}
    H(Y|X) &= \sum_{x \in X}p(x)H(Y|X=x)
    \\ &=-\sum_{x \in X}p(x) \sum_{y \in Y}p(y|x)logp(y|x)
    \\ &=-\sum_{x \in X}\sum_{y \in Y}p(x,y)logp(y|x)
    \end{align}
    \]
    用另一个变量对原变量分类后, 原变量的不确定性就会减小, 不确定程度减小了就是信息增益.

  2. 互信息(Mutual Information, MI)是变量间相互依赖性的度量, 它度量两个事件集合之间的相关性.

    两个离散随机变量X和Y的互信息可定义为:
    \[
    I(X;Y)=\sum_{y \in Y}\sum_{x \in X}p(x,y)log(\frac{p(x, y)}{p(x)p(y)})
    \]
    \(p(x,y)\)是X和Y的联合概率分布函数, 而\(p(x)\)和\(p(y)\)分别是X和Y的边缘概率分布函数

    在连续随机变量的情形下:
    \[
    I(X;Y)=\int_{Y}\int_{X}p(x,y)log(\frac{p(x,y)}{p(x)p(y)})dxdy
    \]
    \(I(X;Y)\)的一些计算:
    \[
    \begin{align}
    I(X;Y)&=H(X)-H(X|Y)
    \\ &=H(Y)-H(Y|X)
    \\ &=H(X)+H(Y)-H(X,Y)
    \\ &=H(X,Y)-H(X|Y)-H(Y|X)
    \end{align}
    \]

  1. 变分推断:

    对于一类数据x(无论是音频还是图片),对它们进行编码后得到的特征数据往往服从某种分布q(z),z为隐变量,q(z)这个隐含分布我们无法得知,但是我们可以通过现有数据X来推断出q(z),即P(z|x)。KL散度是用来衡量两个分布之间的距离,当距离为0时,表示这两个分布完全一致。P(x)不变,那么想让KL(q(z)||P(z|x))越小,即让ELOB越大,反之亦然。因为KL≥0,所以\(logP(x) \ge ELOB\)。

    综述

    本文是NIP2016的一篇文章, 这篇paper所要达到的目标就是通过非监督学习得到可分解的特征表示(非监督学习的一个流行框架便是表示学习, 它的目的是将数据中重要的语义特征变得易于分解)。 使用GAN加上最大化生成的图片和输入编码之间的互信息。最大的好处就是可以不需要监督学习,而且不需要大量额外的计算花销就能得到可解释的特征。

    通常,我们学到的特征是混杂在一起的,如下图所示,这些特征在数据空间中以一种复杂的无序的方式进行编码,但是如果这些特征是可分解的,那么这些特征将具有更强的可解释性,我们将更容易的利用这些特征进行编码。所以,我们将如何通过非监督的学习方式获取这些可分解的特征呢?

相关工作

在以前的方法中, 表示学习的方法可分为"无监督","有监督","弱监督"这三类, 其于本文方法的差异见下图, 在这篇paper中,非监督学习通过使用连续的和离散的隐含因子来学习可分解的特征。

GAN

GAN的概念。总的来说,这个生成模型就是通过两个神经网络互相之间的竞争对抗来进行训练。这两个网络中有一个是生成器,它需要将随机的噪声分布z映射到我们需要得到的真实分布x,另外一个网络就是判别器,从真实数据和生成的数据中间随机采样,判断这个数据是否是真实数据,在这里判别器D相当于一个二分类器。所以,整个优化问题就转换为一个minmax game,D(x)代表x来自真实数据的概率,在训练过程中,最大化D(x)的值,同时,最小化生成器生成数据的能力,从而达到两个网络互相竞争,互相进步,生成器生成数据的能力越来越强,判别器判别数据的能力也越来越强。

如果从表征学习的角度来看GAN模型,会发现,由于在生成器使用噪声z的时候没有加任何的限制,所以在以一种高度混合的方式使用z,z的任何一个维度都没有明显的表示一个特征,所以在数据生成过程中,我们无法得知什么样的噪声z可以用来生成数字1,什么样的噪声z可以用来生成数字3,我们对这些一无所知,这从一点程度上限制了我们对GAN的使用。

InfoGAN

基于上面的分析,作者就在生成器中除了原先的噪声z还增加了一个隐含编码c,提出了一个新的GAN模型—InfoGAN,其中Info代表互信息,它表示生成数据x与隐藏编码c之间关联程度的大小,为了使的x与c之间关联密切,所以我们需要最大化互信息的值,据此对原始GAN模型的值函数做了一点修改,相当于加了一个互信息的正则化项。是一个超参,通过之后的实验选择了一个最优值1。

上面的\(I(C|X)\)中的|应该为";" 即\(I(C;X)\), \(I(C;X=G(Z,C))\)

在实践的过程中, 发现在计算互信息的值时, 需要用到后验分布(\(P(C|X)\)),但是这是一个很难采样和估计的一个值。作者想出通过定义一个辅助分布来协助估计后验分布.

在引入辅助分布之后,通过变分分布最大化来最大化这个互信息的下界,这里是整个推导过程。

使用Q来接近p得到了互信息的变分估计, 在论文中提到, 为了优化方便, 作者固定了隐编码的分布, 因此H(C)是一个常量.通过对G,Q的优化来最大化L(G,Q),当时,不等式取等号,从而得到最大化互信息的效果。所以InfoGAN的最优化问题中的互信息正则项替换为L(G,Q)。但是在L(G,Q)中发现,还是有个后验分布。 作者利用一个定理来消除这个后验分布, 如下:

更详细的推导如下:

定理的证明:

在InfoGAN模型中,GAN的网络结构用的是DCGAN。给生成器输入隐含编码c和噪声z,生成假的数据,从假数据和真实数据中随机采样,输入给定D进行判断,是真还是假。Q通过与D共享卷积层,可以减少计算花销。在这里,Q是一个变分分布,在神经网络中直接最大化,Q也可以视作一个判别器,输出类别c。

实验,主要有两个目标,第一个是验证互信息可以被有效的最大化,第二个是验证InfoGAN是否可以学到可分解的可解释的特征。在第一个实验中,使用MNIST数据集,隐含编码c设为包括10个类别的离散编码,均匀分布,并使用GAN中同样加了一个辅助分布Q做对比试验。实验中发现,InfoGAN中L可以很快收敛到H(c),而GAN中,生成的图片与隐含编码c之间的互信息几乎没有,说明GAN中并没有用到这个隐含编码。

第二个实验来尝试学习数据集中可分解的特征。同样的使用MNIST数据集,在这里使用了三个隐含编码,c1用十个离散数字进行编码,每个类别的概率都是0.1,c2,c3连续编码,是-2到2的均匀分布。通过实验发现,c1可以作为一个分类器,分类的错误率为5%,图片a中第二行将7识别为9,但是不是意味着c1的0-9分别代表着生成数字的0-9,这是为了可视化效果,对数据重新排序的结果。如果在常规的GAN模型中添加c1编码,发现生成的图片与c1没有明显的关联。通过观察发现,c2表示生成数字的旋转的角度,c3表示生成数字的宽度。图c显示,小的c2值表示数字向左偏,大的c2值表示数字向右偏。图d显示,c3的值越大,生成的数字越宽。

除了MNIST数据集外,还在其他数据集上做了实验。比如在一个3D的人脸数据集中,使用多个连续的编码,得到了一些不同的特征。比如图a中,可以得到人脸转向的特征,图b得到了人脸仰角大小的特征,图c得到了图片亮度的特征,图d得到人脸宽窄的特征。

在3d椅子的数据集中,图a表示可以得到不同椅子旋转角度不同的特征,图b表示可以得到不同椅子宽度不同的特征。

在一个街景的楼栋数字数据集中,也得到了不同的特征。如图a所示,可以获取这些数字图片不同的亮度,图b所示,可以区分出图片中不同的数字。

在CelebA数据集中,同样的可以通过不同的编码获取一些特征,比如人脸不同的转向角度,是否带了眼镜,发型的不同,情绪的变化。

最后提出了一些未来工作的设想,将互信息最大化应用到其他的方法,尝试学习层级特征,用来提高半监督学习,发现更高维度的数据。通过这篇paper当中的实验发现,隐含编码c学习到的内容很丰富,可以用来进行半监督学习的分类。(往真实数据中添加噪声,可以使训练更稳定)

InfoGan笔记的更多相关文章

  1. 深度学习-InfoGAN论文理解笔记

    在弄清楚InfoGAN之前,可以先理解一下变分推断目的以及在概率论中的应用与ELBO是什么,以及KL散度 https://blog.csdn.net/qy20115549/article/detail ...

  2. 学习笔记GAN003:GAN、DCGAN、CGAN、InfoGAN

    ​GAN应用集中在图像生成,NLP.Robt Learning也有拓展.类似于NLP中的Actor-Critic. https://arxiv.org/pdf/1610.01945.pdf . Gen ...

  3. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  4. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  5. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  6. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  7. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  8. NET Core-学习笔记(三)

    这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...

  9. springMVC学习笔记--知识点总结1

    以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...

随机推荐

  1. Linux grep 查找字符所在文件(grep详解)

    查找字符所在文件 grep -ir "S_ROLE"  ./* -i 不区分大小写 -r 查找字符出处 -a   --text   #不要忽略二进制的数据. -A<显示行数& ...

  2. Selenium ChromeDriver与Chrome版本映射表(更新到v77)

    ChromeDriver版本 支持的Chrome版本 v77.0.3865.40 v77 v76.0.3809.126 v76 v75.0.3770.140 v75 v74 v74 v73 v73 v ...

  3. [RN] React Native 使用 FlatList 实现九宫格布局 GridList

    React Native 使用 FlatList 实现九宫格布局 先看图片演示实例: 本文以图片列表为例,实现九宫格布局! 主要有两种方法: 1)方法一: 利用FlatList的 numColumns ...

  4. 【UVA11987】Almost Union-Find

    题目链接 题目就告诉我们要用并查集了,操作1和3用裸的带权并查集就行了, 操作2相当于将p结点从当前树中删除,再插入到q的树中,直接删除的话比较麻烦,不妨把它的"尸体"留在原来的地 ...

  5. iphone中input按钮设置disabled属性出现灰色背景没有显示问题

    在项目中发现发送验证码的按钮,在点击后添加disabled属性后,iphone手机中出现disabled属性的默认背景颜色没有显示,反而直接显示它下面的父级元素的白色 点击前 点击后 倒计时的按钮消失 ...

  6. 记一次CDH集群日志数据清理

    背景 集群运行一段时间(大概一月多)后,cloudera manager管理界面出现爆红,爆红的组件有hdfs.zookeeper. 发现问题 点击详细内容查看,报日志空间不够的错误.初步判断是各个组 ...

  7. 深度学习图像配准 Image Registration: From SIFT to Deep Learning

    Image Registration is a fundamental step in Computer Vision. In this article, we present OpenCV feat ...

  8. PL/SQL Developer插入数据到数据库出现数据中文乱码

    问题描述: 使用PL/SQL Developer往Oracle数据库插入数据,出现中文乱码! 解决办法: 1.执行脚本 select userenv('language') from dual; 结果 ...

  9. max函数比较字符串类型

    关于sql中 max函数比较字符串类型 max只比较首个字符的大小 只要首字母大,则不比较其他位置的字母,若首字母相同,则比较顺序位字母. 今天死在这了 数据库中 step字段类型char分别为 5. ...

  10. how does SELECT TOP works when no order by is specified?

    how does SELECT TOP works when no order by is specified? There is no guarantee which two rows you ge ...