写在前面

这几天看的深度聚类文章也不少了,在这里重点总结一下聚类的原理

1. 基础知识

1.1 GMM高斯混合模型

1.1.1 GMM概要

GMM算是比较基础的传统聚类模型,模型优化的方法是EM算法。GMM假设数据的分布是由多个高斯分布混合而成,我们要做的就是解出GMM模型的参数,包括每个component的均值和方差还有各个高斯分布的权重。

为了求解GMM,我们引入了隐变量,并假设数据的生成过程是
(1)以某概率从高斯混合模型中选择一个高斯分布
(2)从该高斯分布中产生数据

请重点理解上面数据生成的过程,因为它是理解深度聚类,与VAE相结合的关键,并注意到,我们操作的是数据本身,是对数据本身进行聚类

1.1.2 GMM模型的策略

对于机器学习模型,我们一般考虑三部分:模型,策略和算法。模型很熟悉,不再赘述,不会的可以参考《李航统计学基础》,这小结重点讲解策略,即损失函数。

最大化数据的似然函数是GMM模型的策略,我们让观测数据出现的似然概率最大化。请重点理解记住这句话,这也是和VAEs模型结合的关键,因为VAE模型采用的策略也是MLE,理解这里,就会理解深度聚类算法的损失函数

1.1.3 GMM模型的算法

算法值得的是用什么方法去优化损失,很显然这里采用的是EM算法

(1)参数初始化
(2)E步:计算每个样本对每个高斯分布的响应度
(3)M步:最大化Q函数(对每个参数求导)

1.2 VAEs

变分自编码器有很多博客讲的都很好,这里就不再赘述了,但是还是建议读者去看原著,经典的论文总需要多读几遍。

VAE算法属于生成模型,研究的是数据在低维空间中的表示,用低维编码表示高维数据,然后用低维编码去生成数据。请理解这句话

2. 深度聚类模型

这一节重点讲如何聚类,我们将之前博客写的聚类算法抽象为Deep GMM模型,不同点知识在于VAEs的生成模型和推理模型的不一样。

2.1 Deep GMM

GMM和VAEs的结合点在于:我们将VAE的先验分布假设为GMM分布(原著假设为单个的多元高斯分布),即不同类别的数据是从不同的component中产生的。这里要注意,我们操作的数据不再是数据本身X,而是数据X在隐空间中的编码z。具体的,

GM的回归模型 gmm回归模型 eviews_GM的回归模型


GM的回归模型 gmm回归模型 eviews_GM的回归模型_02


GM的回归模型 gmm回归模型 eviews_GM的回归模型_03

2.2 为什么优化损失函数可以达到聚类的效果?

上文提到,VAE和GMM的策略都是MLE,而我们优化损失函数是,相当于优化了两个模型,所以就有了聚类的效果,也有研究者成这是GMM运用了VAEs的框架

3. 代码

代码放在了Github上了:https://github.com/SinTaken/vae_clusrering 聚类的准确率为94.77%。隐空间的分布如下图:

GM的回归模型 gmm回归模型 eviews_损失函数_04