最近在读聚类方向的论文,在这里做个简单总结
信息论基本概念
基本概念与公式:
信息量:
信息量是对信息的度量,就跟时间的度量是秒一样,当我们考虑一个离散的随机变量 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的生成器和判别器,同时引入信息熵来达到聚类的效果
不足之处:
没看太懂- -!
网友评论