本文正在参加「金石计划 . 瓜分6万现金大奖」
之前我写过一篇文章,从视图的角度分析了聚类的方向 juejin.cn/post/715919… 。但是呢,深度聚类究其本质就是使用神经网络提取样本特征,然后通过聚类方法进行聚类。所以本篇我从表示学习模块和聚类模块之间的交互入手,将现有的深度聚类方法总结为:
- (1) 多阶段深度聚类:表示学习模块与聚类模块顺序连接;
- (2) 生成式深度聚类:将聚类模块建模为先验表示模块;
- (3) 同时深度聚类:表示学习模块和聚类模块同时更新;
本文是对以下这篇聚类综述的总结和提取,大家有兴趣的话可以去仔细阅读
A Comprehensive Survey on Deep Clustering:Taxonomy, Challenges, and Future Directions
论文地址:arxiv.org/abs/2206.07…
多阶段深度聚类
多阶段深度聚类是指表示模块与聚类模块分别进行优化并且顺序连接两个模块的方法。
多阶段聚类算法中使用的最多也是最简单的一种方法是使用深度无监督学习技术进行特征的提取,首先学习每个样本实例的表示(嵌入),然后将学习到的表示反馈到经典聚类模型中(K-means、谱聚类),以获得最终的聚类结果。
早期使用深度自动编码器来学习样本表示。
基于深度自动编码器(AutoEncoder,AE)的深度聚类算法是最早和最广泛应用于聚类任务的网络。该算法学习到特征表示可以直接作为K-means等传统聚类方法的输入,以此获得聚类结果。AE 可以看作由两部分组成:将原始数据 映射为特征表示 的编码器 以及 产生重建的解码器,重建的表示必须与原始数据 尽可能相似。
损失函数公式和基于AE的深度聚类算法框架图 如下所示。
后来,深度子空间聚类被提出,首先学习亲和矩阵和实例表示,然后通过谱聚类对亲和矩阵或实例表示上的 K-means 进行聚类。
多阶段聚类方法虽然具有编程友好和直观理解的特性。但是,这种深度表示学习和浅层(传统)聚类的简单组合存在不可忽视的缺点:
- 1)大多数表示学习方法并非专为聚类任务而设计,无法为聚类提供足够的判别力。简言之,就是表示学习的提取特征任务不是以聚类任务为导向的,聚类主要体现数据实例之间的全局模式,而现有的表示学习方法则主要集中在单个模式上;
- 2)因为是两阶段聚类算法,所以聚类结果不能进一步用于指导表示学习对提取的特征效果进行优化。
生成式深度聚类
生成模型能够捕获、表示和创建新的样本数据点。生成模型首先对潜在的集群结构做出假设,然后通过估计数据密度推断出集群的分配。
这类模型使用最多的便是高斯混合模型(GMM),算法假设数据点是从高斯混合生成的。虽然 GMM 已获得成功应用,但是其浅层结构通常不足以捕捉数据的非线性模式,从而对其在复杂数据(例如图像、文本、图形等)上的性能产生不利影响。为了解决这个问题,深度生成模型被提出,它是将生成模型与深度神经网络相结合,这种模型具有足够的能力对非线性和复杂数据进行建模。基于神经网络的生成式方法我们可以将其分为两类:基于变分自动编码器(VAE)的方法和基于生成对抗网络(GAN)的方法。
下面我们以ClusterGAN这篇论文中的算法为例,该算法使用GAN解决聚类问题为例。该模型分为三个部分,生成器G、判别器D和反向编码器E。首先利用一个混合的离散分布和连续分布进行采样,然后通过生成器G生成伪样本,将伪样本分别传入判别器D和编码器E中,在D中就是执行普通GAN方法的操作,将伪样本和真样本不断进行对抗,以促使生成器G生成以假乱真的伪样本,而加入的编码器会对伪样本执行反向解码的操作生成潜在变量,算法希望经由E反解码得到的潜在变量应与真样本的潜在变量尽可能相似。
损失函数和模型框架如下图所示
同时深度聚类
同时深度聚类将表示学习模块和聚类模块以端到端的方式同时进行优化。
该模块算法首先利用深度神经网络,学习一个聚类表示(用于聚类的特征表示),并将学习表示过程与聚类分配过程放到一起联合优化,并且这是一个无监督的过程。
我们以DEC [23]算法为例,这是该方法中比较有代表性的算法。此算法使用深度神经网络同时学习特征表示和聚类分配,迭代优化基于KL散度的聚类目标和自训练目标分布。主要包括两个阶段:
- (1) 首先使用深度自编码器AE进行参数初始化;
- (2) 通过梯度下降法不断进行参数的优化(即聚类),主要是通过迭代计算辅助目标分布和最小化KL散度(损失函数)。
DEC的网络框架模型图如下所示