持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
上一篇文章我们讲到使用KL散度作为损失函数,与使用传统的多分类损失函数相比,KL散度会以更“温和”的方式更新整个模型,以防止数据表征受到干扰。本篇接着讲解一下使用到KL散度的一篇聚类论文。
论文涉及知识点
KL散度也叫相对熵,在了解之前,我们需要先了解一下信息熵的概念。
信息熵反应了一个系统的有序化程度,一个系统越是有序,那么它的信息熵就越低,反之就越高。
熵:
如果一个随机变量X的可能取值为
,对应的概率为
,那么随机变量X的熵定义为
相对熵:
又称互熵,交叉熵,KL散度等。设 和 是X取值的两个概率分布,则p对q的相对熵为:
KL散度:
KL散度是两个概率分布p和q差别的非对称性的度量,是用来度量使用基于q的编码来编码来自p的样本平均所需的额外的位元数。
KL散度的性质:
- KL散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,即
- 相对熵的值为非负值,即
KL散度应用:
相对熵可以衡量两个随机分布之间的距离,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增大时,它们的相对熵也会增大。所以KL散度可以用于比较文本的相似度,先统计出词的频率,然后计算KL散度。
论文动机
大多数学习方法会把 降维(DR) 和 聚类 分开,即先降维后聚类。但有研究表明这两个任务联合进行效果会更好。但在实践中,通过深度神经网络学习来进行降维的数据不一定适合聚类。因此作者提出问题:如何调整DNN的结构和相关的联合优化准则才能使得降维数据适合于使用K-means进行聚类。
论文主要贡献
-
提出一种基于DNN降维和K-means聚类的联合优化准则
-
提出联合优化方案,包括如何初始化和交替优化的算法
论文主要算法
(1)收敛到平凡解的结构:
其中, 是神经网络,表示聚类参数,是聚类损失,算法如上图所示。但该算法存在问题,复合网络为了最小化损失, 总会趋向于收敛到一个0 映射,得到平凡解,最终导致聚类模块的单点聚类。
(2)DCN:
基于上述平凡解问题,论文作者提出了Deep Clustering Network(DCN),即在之前的网络基础上引入Auto-Encoder结构,为上述网络加入重构任务,这可以有效的防止 收敛于0映射,即平凡解,因为神经网络总需要学习到有意义的(非零的)潜层表示来进行重构。
其中,第一项是重构误差, 和 分别对应编码器和解码器;第二项是K-means误差,M为聚类质心矩阵, 为指派向量,每个样本仅指派到一个质心。λ >= 0 是一个正则化参数,用于平衡重构任务与聚类任务。
(3)联合优化:
因为上述联合损失函数是非凸的,所以需要设计高效的初始化方法和交替优化方法同时优化自编码器和聚类。
训练框架:先单独对自编码器进行逐层预训练,再使用训练好的编码器进行K-means聚类得到 和 ,完成初始化后,进行交替随机优化训练。交替,是指交替进行神经网络的训练和聚类器的聚类。
a. 优化神经网络参数: 固定 ,优化
b. 优化聚类参数:
- 固定,固定聚类质心,更新类标签
- 固定,固定类标签,更新聚类质心
论文可改进创新点
论文中提出的联合优化算法,对初始化过于严重依赖,后续的交替优化算法要想顺利进行的话,必须需要一个好的预训练的AE 和一个 好的K-means聚类初始化。所以大家可以想一下怎么对此算法进行改进。