Ronen M, Finder S E, Freifeld O. DeepDPM: Deep Clustering With an Unknown Number of Clusters[J]. (CVPR 2022).
摘要翻译
深度学习(DL)在无监督的聚类任务中显示出了巨大的前景。但大多数深度聚类方法都是参数化的:也就是说,这种方法需要一个预定义的给定类簇数量K。然而,当K未知时,使用模型选择标准来选择其最优值可能会变得计算昂贵,特别是在DL中,因为训练过程必须重复很多次。在这项工作中,作者通过引入一种有效的深度聚类方法来弥补这一差距,该方法不需要提前给定K,并在学习过程中推断出它的值。使用 split/merge框架,一个能够适应K不断变化的动态架构和新的损失,实验结果显示提出的方法优于现有的非参数方法(经典和深度方法)。
方法浅析
DeepDPM使用聚类的split/merge来更改K,并设计了动态架构来适应这些更改。作者指出DeepDPM可以合并到依赖于聚类的深度学习pipelines中(例如,用于特性学习)。与离线聚类步骤(例如,K-means)不同,DeepDPM在大多数训练中是可微的(例外是在离散分裂/合并期间),因此可以用于梯度更新。 pipelineDeepDPM主要包含两个部分。首先是一个聚类网络,第二部分则是由K个子网络组成,分别对应每个类簇。
- 给定K值后的DeepDPM
首先使用聚类网络学习数据的聚类软分配 。然后,每个类簇对应的子网络使用该类簇对应的数据产生对应的子类簇分配: 子网络的聚类分配会在split部分使用。
关于的优化主要通过类似于步骤,其中步骤会为每个样本以及其可能类簇计算可能性: 很直观的,关于个类簇的概率求和为1.对应的损失为GMM和特征学习之间的KL散度: 在每个epoch之后,根据步骤,作者则使用了一个标准的Bayesian M step。
在后续的子聚类网络中,作者则使用了各项同性损失 - 通过split/merge改变K
由于K在改变,聚类网络的最后一层和子聚类网络的数量也必须改变。作者指出,split/merge不仅有助于改变K的值,而且可以进行大的移动,避免许多糟糕的局部最优。
(1)splits
作者将得到的每个类簇,又通过自网络分为两个簇。为了适应K的增加,如果集群k接受了一个分割方案,那么最后一层的第K个单元,以及连接到前一隐藏层的权重是重复的。作者使用通过子聚类网络学习到的参数来初始化两个新类簇的参数:
(2)merges
在合并中,作者仅考虑了每个类簇的3个近邻。从实现上来说,合并集群的最后一层单元,连同连接到前一个隐藏层的网络权重,是将其直接从从$f_{cl}中删除,使用加权MAP估计值初始化新生簇的参数和权重。
模型的设计的思想很有意思,引入了再分割和合并的思想自适应学习K。我还是只能看懂给定K的模型流程。
网友评论