这篇综述很长,将分成几篇博文学习。
摘要
聚类是机器学习中的一项基本任务,其目标是将实例分配到不同的组中,以便相似的样本归属于同一个簇,而不同的样本归属于不同的簇。传统的浅层聚类方法通常假设数据以特征向量的形式收集和表示,并在其内部进行聚类。然而,在处理高维数据(如图像、文本、视频和图)的聚类任务时,往往面临诸多挑战,例如表示的不加区分性以及实例间复杂的关系。
过去几十年来,深度学习在有效表示学习和复杂关系建模方面取得了显著成功。受到这些进展的启发,深度聚类(Deep Clustering)旨在通过深度学习技术提升聚类效果,并引起了学术界和工业界的广泛关注。尽管这一研究领域已取得了许多成果,但缺乏系统性的分析和全面的分类框架在一定程度上制约了其进一步发展。
这篇综述首先探讨了如何将深度学习融入深度聚类,并识别出其两个核心组成部分:表示学习模块和聚类模块。随后,总结并分析了这两个模块的代表性设计。此外,提出了一种基于这两个模块交互方式的全新深度聚类分类法,包括多阶段方法、生成式方法、迭代方法和同步方法。
除了理论分析,还介绍了知名的基准数据集、评估指标以及开源工具,以直观展示不同的实验方法。最后,探讨了深度聚类的实际应用场景,并提出了未来研究中亟待解决的关键挑战。
引言
聚类是机器学习中的一项基础技术,经常被用作各种数据挖掘任务中的关键预处理步骤。其主要目标是将实例划分为不同的组,使得相似的样本归属于同一簇,而不同的样本归属于不同的簇。样本的聚类能够对数据实例进行全局表征,这对于进一步的数据集分析具有重要意义,例如异常检测【1,2】、领域适应【3,4】、社区检测【5,6】以及判别式表示学习【7-9】等。
早期的聚类研究通常假设数据以特征向量的形式表示,主要聚焦于在向量空间中发现聚类结构,这也被称为浅层聚类。然而,随着互联网和网络服务的快速发展,研究者对更复杂的数据类型(如文本、图像、视频和图)聚类的兴趣日益浓厚。然而,这些数据的高维特性使得浅层聚类方法面临显著挑战,如“维度灾难”【10】。与此同时,过去几十年间,深度学习在高维数据,特别是无监督数据的表示学习方面取得了巨大成功。近年来,深度聚类(Deep Clustering)作为一种通过深度学习提升聚类任务的方法,受到了学术界和工业界的广泛关注。
为实现这一目标,一个简单的方法可能是采用深度无监督表示学习来为每个数据实例学习表示,然后将这些表示输入浅层聚类方法以获得最终的聚类结果。然而,这种直接的方法未能识别表示学习与聚类之间的内在联系:聚类为表示学习提供了关键的洞察,而判别表示则显著改善了聚类过程。
基于这些动机,深度聚类方法致力于解决以下研究问题:
- 如何通过深度学习学习判别表示以提升聚类性能?
- 如何在已有判别表示的基础上获得准确的聚类结果?
- 如何在统一框架中高效地进行聚类和表示学习,使二者相互促进?
针对上述三个挑战,近年来涌现了众多深度聚类方法,这些方法结合了多样的深度架构和数据类型,取得了显著成功。然而,现有文献尚未充分综合当前研究进展,缺乏对该领域中各种方法进行有效整合和评估的全面理解。这一缺失限制了深度聚类的进一步发展。
为弥补这一不足,本文对深度聚类进行了全面综述,提出了一种全新的方法分类框架,审视了未解决的挑战,并提出了未来研究的重要方向。
相关综述
作为经典任务,聚类在过去几十年中得到了广泛的发展,已有许多综述聚焦于浅层聚类【11-15】。这些综述中的浅层聚类方法通常利用特征表示作为输入,为每个数据实例生成聚类分配。随着深度学习的发展,部分研究开始探索结合深度学习的聚类技术。
Min等人【16】认为深度聚类的核心是学习面向聚类的表示,因此相关文献应按照表示学习的网络架构进行分类。Aljalbout等人【17】主要基于表示学习架构和损失函数设计了分类法,但仅在MNIST和COIL20数据集上讨论了方法的对比。Nutakki等人【18】回顾了一些基于深度学习的聚类方法,但未涵盖更先进的表示学习与聚类技术。此外,这些工作【16-18】仅涉及过时的方法,未能反映这一活跃领域中的最新进展。
然而,现有综述未能对深度学习与深度聚类方法的结合进行深入分析,也未能提供详尽的分类框架。这一不足阻碍了深度聚类的发展,亟需加以改进。
贡献
综上,本文旨在对最新的深度聚类技术进行全面综述,并帮助读者从以下几个方面理解深度聚类的广阔研究图景:
- 深度聚类的基石:总结了深度聚类的两个核心模块——表示学习模块和聚类模块。针对每个模块,我们概述了现有方法中具有代表性和通用性的设计,这些设计可以轻松推广到新模型。
- 系统性分类框架:基于表示学习模块与聚类模块的交互方式,提出了现有深度聚类方法的系统性分类框架,并提供了四个具有代表性的方法分支。在不同场景下对每个分支的特性进行了比较和分析。
- 丰富的资源和参考资料:收集了多种基准数据集、评估指标以及深度聚类最新文献的开源实现,并将其与参考资料一并整理至Github。此外,提供了一个开源且易于使用的软件包,可高效部署和开发深度聚类方法,以进一步推动这一活跃研究领域的发展。
- 未来方向:基于表示学习模块和聚类模块的属性及其交互方式,探讨了现有方法的局限性和挑战,并提出了我们对未来研究方向的见解和思考。
基本概念
深度聚类与浅层聚类
给定一组数据实例 X={xi},聚类的目标是自动将每个实例 x分配到组中,使得同组实例之间相似,不同组实例之间相异。
浅层(非深度)聚类以实例的特征向量为输入,通过非深度神经网络输出聚类结果。
深度聚类的目标是利用深度神经网络对非结构化数据或高维数据进行聚类。
值得注意的是,深度聚类不仅局限于应用深度学习技术于表示学习中,相反,它还可以通过深度神经网络直接进行聚类,并从与深度表示学习的交互中获益。
硬聚类与软聚类
聚类方法可以根据输出类型分为硬聚类和软聚类:
- 硬聚类的输出是每个实例 xi的离散的独热(one-hot)聚类标签 y~i。
- 软聚类的输出是每个实例的连续聚类分配概率向量 zi∈RK。
聚类的主要目标是将样本分配到不同的组中,因此聚类结果通常以离散标签的形式表示。然而,实例的离散分配通常难以优化,尤其是对于需要反向传播的深度神经网络。因此,目前大多数深度聚类方法属于软聚类类别。在软聚类中,聚类结果由深度神经网络 f 生成,输出经过 Softmax 激活函数的 K-维 logits。
值得注意的是,软聚类结果可以通过选择概率最高的聚类转换为硬聚类。
划分聚类与重叠聚类
前述通过最大化概率向量得到的硬聚类方法适用于划分聚类场景,其中每个数据实例仅分配给一个聚类。因此,这种聚类方法将整个数据集划分为 K 个互不重叠的组。当前大多数深度聚类技术都是非重叠的,这反映了它们主要测试于非重叠数据集的特性。
在重叠聚类的情况下,一个数据实例可以属于多个聚类,这为聚类方法带来了额外的挑战。