读论文-以VAE和GAN为主体网络结构的深度聚类算法

2019-11-19  本文已影响0人  董帅2019

最近在读聚类方向的论文,在这里做个简单总结

信息论基本概念

基本概念与公式:

信息量:

信息量是对信息的度量,就跟时间的度量是秒一样,当我们考虑一个离散的随机变量 x 的时候,当我们观察到的这个变量的一个具体值的时候,我们接收到了多少信息呢?
信息量具有三个性质分别是:

单调性,发生概率越低的事件,其携带的信息量越高,如某地产生了地震了;
非负性,一个具体事件的信息量应该是随着其发生概率而递减的,且不能为负;
累加性,如果我们有俩个不相关的事件x和y,那么我们观察到的俩个事件同时发生时获得的信息应 该等于观察到的事件各自发生时获得的信息之和。

由上面的三个性质,可以得出信息量的公式:


信息熵:

信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。一个随机变量的熵越大,意味着不确定性越大,那么也就是说,该随机变量包含的信息量越大


互信息:

是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不确定性
下面是互信息的计算公式:


互信息的推导公式


相对熵/KL散度:

相对熵(relative entropy),又被称为Kullback-Leibler散度(Kullback-Leibler divergence)或信息散度(information divergence),是两个概率分布(probability distribution)间差异的非对称性度量 。在在信息理论中,相对熵等价于两个概率分布的信息熵(Shannon entropy)的差值。

相对熵是一些优化算法,例如最大期望算法(Expectation-Maximization algorithm, EM)的损失函数 。此时参与计算的一个概率分布为真实分布,另一个为理论(拟合)分布,相对熵表示使用理论分布拟合真实分布时产生的信息损耗。

公式推导:


信息熵
KL散度,两个信息熵的差

Gaussian Mixture Model(高斯混合模型)

这是一个有别于K-means的聚类算法,它的主要思想是用多个不同参数的高斯分布的和去拟合任意的N维数据点的分布,如下图所示:


image.png

优化目标如下:

L为似然函数,其中Wi,j为第i个X属于第j个高斯分布的概率,P(Xi)为Xi在各个分布下的概率,我们的目的就是通过迭代,让似然函数越来越大

迭代过程-最大期望算法(Expectation–Maximization, EM算法):

这里采用的是分布更新的思想,先保持各个分布的均值与方差不动,更新W,然后再保持W不变,更新均值和方差。具体过程如下:

E步骤

E步骤中,我们的主要目的是更新W。第iii个变量属于第m类的概率为:


image.png

根据W,我们就可以更新每一类的占比Pim:


image.png
M步骤

到这里我们已经获得了W的值,然后我们将W带入似然函数L,对L求导并令导数为0可以分别估计出均值和方差的计算式,从而用来更新。
第m类的第k个分量的均值


image.png

第m类的第k个分量的方差


image.png

这样我们就实现了一个迭代步骤,再循环迭代设置一个终止条件,就是完整的GMM聚类算法了。

从上面的分析中我们可以看到 GMM 和 K-means 的迭代求解法其实非常相似(都可以追溯到 EM 算法,下一次会详细介绍),因此也有和 K-means 同样的问题──并不能保证总是能取到全局最优,如果运气比较差,取到不好的初始值,就有可能得到很差的结果。对于 K-means 的情况,我们通常是重复一定次数然后取最好的结果,不过 GMM 每一次迭代的计算量比 K-means 要大许多,一个更流行的做法是先用 K-means (已经重复并取最优值了)得到一个粗略的结果,然后将其作为初值(只要将 K-means 所得的 centroids 传入 gmm 函数即可),再用 GMM 进行细致迭代。

如我们最开始所讨论的,GMM 所得的结果(Px)不仅仅是数据点的 label ,而包含了数据点标记为每个 label 的概率,很多时候这实际上是非常有用的信息。最后,需要指出的是,GMM 本身只是一个模型,我们这里给出的迭代的办法并不是唯一的求解方法。感兴趣的同学可以自行查找相关资料。

参考文章:
详解EM算法与混合高斯模型(Gaussian mixture model, GMM)
聚类之高斯混合模型(Gaussian Mixture Model)
GMM与EM算法的Python实现

论文一:Auto-Encoding Variational Bayes(变分贝叶斯自编码器)-VAE

要解决的问题:

把AutoEncoder改造为像GAN一样的生成网络

之前的方案:

GAN

论文中的方案:

作者的主要想法是,使AE中间层Z的值来自某一个概率分布,如标准正太分布,从而达到用标准正太分布生成一个变量,输入到Decoder中都能得到一张图片的效果。
作者将Encoder改造成了概率模型生成器,对于每一个输入的X都生成一个均值和方差,来构造一个高斯分布,然后用这些高斯分布来产生中间层Z。


网络结构

当X对应的每个分布都近似服从于标准正太分布的时候,那么Z的分布也就是一个标准正太了,请看如下推导:


P(Z|X)为我们用Encoder网络生成的多个近似标准正太分布
那么问题来了,我们如何迫使Encoder网络产生的每个分布都近似服从于标准正太呢,这里我们要用到KL散度的概念,通过将KL散度加入到损失函数中,来达到这一目的。
生成的正太分布与标准正太分布的KL散度推导过程

创新点:

作者将AE降维网络改造成了生成网络
引入KL散度来评判生成的概率模型是否为标准正太分布

实验结果:

VAE网络生成的Mnist数字

参考文献:

变分自编码器(一):原来是这么一回事

论文二:Variational Deep Embedding:An Unsupervised and Generative Approach to Clustering(变分深度嵌入:一种无监督的生成方法来做聚类)-VaDE

要解决的问题:

高维数据聚类

之前的方案:

DEC,AAE,AE+GMM,GMM等

论文中的方案:

网络结构图

作者将VAE(变分自编码器)和GMM(高斯混合模型)结合到一起,用GMM来替换普通VAE中的标准正太分布,从而达到降维并且聚类的效果。

创新点:

首次将VAE与GMM想结合,实现了聚类的同时,又能够利用VAE的生成器来生成任意类别的数据。

实验结果:

图片.png

论文三:DEEP ADVERSARIAL GAUSSIAN MIXTURE AUTO-ENCODER FOR CLUSTERING(深度对抗混合自编码器聚类)-DAC

要解决的问题:

高维读聚类

之前的方案:

VaDE,DEC,GMM

论文中的方案:

网络结构图

1.AAE与VAE类似,都是在AE基础上力求控制中间层数据的分布,只不过实现方式不同,VAE通过改变网络结构,将Encoder改造成了均值与方差计算网络,而达到目的,而AAE是通过对中间层施加对抗学习,迫使其服从某一概率分布。
2.作者和上篇论文作者思路一致,在AAE(Adversarial Autoencoders)的基础上,将AE中间层的数据分布改为GMM,从而达到聚类的效果。

具体实现过程:

先通过AE网络进行降维,然后计算降维损失


image.png

再取降维后的数据进行GMM聚类,计算聚类损失


image.png
然后,将降维后的数据同GMM聚类器生成的数据放入到判别器中,由判别器来区分到底哪个是真实数据,计算GAN的损失
image.png

三个损失一起优化,迫使AE降维到对GMM聚类更友好的空间上

创新点:

结合AAE与GMM,构造的一个聚类器

实验结果:

图片.png

不足之处:

1.创新不足,模仿VaDE的思路
2.论文结果表中的DAC EC虽然表现声称超过了VaDE,但是这是多个模型集成的结果,而VaDE及其他算法并没有做此类对比实验,所以并不能算数

论文四:InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets(通过信息最大化生成对抗网络学习可解释的表示)-InfoGAN

要解决的问题:

GAN网络中,输入Z的可解释性问题,从而能够通过改变Z的值来控制网络生成的结果,并且能够用来聚类

之前的方案:

无监督hossRBM,有监督DC-IGN等

论文中的方案:

网络结构图

作者在原始GAN输入Z的基础上又加上了称为latent code的C,同时输入到生成器G,C可以是连续变量也可以是离散变量,通过对C的改变可以达到控制生成结果的目的。

为了达成这个目标,作者引入了互信息的计算,使C在经过对于生成器G产生的结果有一定的影响,即迫达到控制生成结果的作用。


我们想到的的第一个损失函数

但是计算互信息时需要用到P(C|X)这一分布,这个我们是没有的,所以我们模拟VAE的思路用神经网络拟合一个这一的分布,记为Q(c|x),从而上面的损失函数进一步推导为:



最终考研得到InfoGAN所使用的损失函数,如下:


InfoGAN目标函数

其中Q(c|x)的网络是由判别器D为主体,然后加了一层全连接层,用来试图复原C,从而计算互信息损失L,这样也免去了从新构建一个网络,减少了计算量。

当C中包含有K个离散值的变量时,网络就具有了聚类的作用

实验结果:

(a)(c)(d)是训练时带有互信息损失部分,可以看到c1可以表示生成的数字类型-即达到了聚类的效果,c2可以控制数字的旋转角度,c4可以表示数字的粗细,而不带有互信息损失的(b)中的c1则对生成结果没有明显作用 人脸数据集上能够控制姿势,抬头,光照,脸型等

创新点:

将互信息的概念引入GAN中,从而达到输入对生成结果控制的目的

不足之处:

用文中的方法虽然能够通过C的改变来控制生成的结果,但是具体C的哪一部分能够控制对应结果的哪一部分,这个再网络训练前(出结果前)并不知情,也就是说C对结果的控制,是最后试出来的,也许这是一个新的研究方向。

论文五:UNSUPERVISED AND SEMI-SUPERVISED LEARNING WITH CATEGORICAL GENERATIVE ADVERSARIAL NETWORKS(用生成对抗网络进行无监督和半监督学习)-CatGAN

要解决的问题:

无监督和半监督的聚类问题

之前的方案:

K-means,GMM,RIM

论文中的方案:

网络结构图

作者将标准的GAN网络的判别器D改造成了分类网络,不再输出是否是真实数据,然后对于生成器G生成的数据不做确定的分类。

同时将生成器G改造为,能够生成高度确定的各种类型的数据,并且每种类型的数据生成概率相同。

同时利用信息熵来计算输入到D的数据到底来自生成器G还是真实数据集。

损失函数

创新点:

改造了GAN的生成器和判别器,同时引入信息熵来达到聚类的效果

不足之处:

没看太懂- -!

上一篇下一篇

猜你喜欢

热点阅读