一、简介
- 聚类特别依赖特征空间的选择;
- 先前很少有研究来解决用于聚类的特征空间学习问题;
- 本文提出了一种称为Deep Embedded Clustering(DEC) \text{Deep Embedded Clustering(DEC)}Deep Embedded Clustering(DEC)的聚类方法,该方法通过迭代方式来同时学习特征空间(向量表示)并完成聚类;
二、聚类算法DEC
将n n n个点{ x i ∈ X } i = 1 n {x_i\in X}{i=1}^n {x i ∈X }i =1 n 聚类至k k k个簇,每个簇均有一个质心u j , j = 1 , … , k u_j,j=1,\dots,k u j ,j =1 ,…,k。本文不直接在数据空间X X X上聚类,而是通过非线性映射f θ : X → Z f\theta:X\rightarrow Z f θ:X →Z,将数据空间X X X映射至特征空间Z Z Z,其中θ \theta θ是可学习参数。为了避免维度灾难,Z Z Z的维度远远小于X X X。至于非线性映射f θ f_\theta f θ,很自然选择神经网络来进行近似。
算法DEC \text{DEC}DEC的两个目标:
- 在特征空间Z Z Z中学习k k k个簇心{ u j ∈ Z } j = 1 k {u_j\in Z}_{j=1}^k {u j ∈Z }j =1 k (聚类);
- 学习将数据映射至特征空间Z Z Z的网络参数θ \theta θ;
给定一个初始化的非线性映射f θ f_\theta f θ和初始化簇中心{ u j } j = 1 k {u_j}_{j=1}^k {u j }j =1 k 。(如何初始化会在下一小节介绍)
DEC \text{DEC}DEC使用无监督交替两阶段方法来改善聚类效果,
- 第一阶段:计算嵌入节点和簇中心的软分配;
- 第二阶段:更新映射f θ f_\theta f θ,并使用 辅助目标分布从当前高置信度分配中细化簇中心;
这里使用学习t t t分布作为衡量嵌入节点与簇中心的相似度
q i j = ( 1 + ∣ ∣ z i − u i ∣ ∣ 2 / α ) − α + 1 2 ∑ j ′ ( 1 + ∣ ∣ z i − u j ′ ∣ ∣ 2 / α ) − α + 1 2 q_{ij}=\frac{(1+||z_i-u_i||^2/\alpha)^{-\frac{\alpha+1}{2}}}{\sum_{j’}(1+||z_i-u_{j’}||^2/\alpha)^{-\frac{\alpha+1}{2}}}q i j =∑j ′(1 +∣∣z i −u j ′∣∣2 /α)−2 α+1 (1 +∣∣z i −u i ∣∣2 /α)−2 α+1
其中,z i = f θ ( x i ) ∈ Z z_i=f_\theta(x_i)\in Z z i =f θ(x i )∈Z是x i ∈ X x_i \in X x i ∈X嵌入后的向量;α \alpha α是学生t t t分布的自由度(论文设α = 1 \alpha=1 α=1);q i j q_{ij}q i j 被认为是分配样本i i i至簇j j j的概率;
该阶段通过辅助分布来进一步使各个簇更加的内聚。具体来说,模型通过将上面得到的软分配与目标分布来训练模型。为了实现这个目标,这里定义了一个基于KL散度的损失函数来衡量软分配q i q_i q i 与辅助分布p j p_j p j 间的差距
L=KL(P||Q) = ∑ i ∑ j p i j l o g p i j q i j \text{L=KL(P||Q)}=\sum_i\sum_jp_{ij}log\frac{p_{ij}}{q_{ij}}L=KL(P||Q)=i ∑j ∑p i j l o g q i j p i j
其中,q i j q_{ij}q i j 就是上面得到的软分配,p i j p_{ij}p i j 则是一个目标分布。
下面会介绍这个目标分布怎么来的。
对于本文的聚类算法,目标分布P P P的选择非常重要。具体来说,目标分布应该具有如下性质:
- 能够改善聚类中簇的内聚程度;
- 能够更加重视高置信度分布的数据点;
- 每个簇中心对于损失的贡献是标准化的,防止大的簇扭曲了特征空间;
论文选择将软分配概率q i q_i q i 进行平方,从而实现目标分布,即
p i j = q i j 2 / f j ∑ j ′ q i j ′ 2 / f j ′ p_{ij}=\frac{q_{ij}^2/f_j}{\sum_{j’}q_{ij’}^2/f_{j’}}p i j =∑j ′q i j ′2 /f j ′q i j 2 /f j
其中,f j = ∑ i q i j f_j=\sum_i q_{ij}f j =∑i q i j 是软类频率。
论文使用带有momentum的SGD \text{SGD}SGD来联合优化簇中心{ u j } {u_j}{u j }和神经网络参数θ \theta θ。损失函数L L L关于每个数据点特征空间嵌入向量z i z_i z i 的梯度和每个簇中心u j u_j u j 的梯度为
∂ L ∂ z i = α + 1 α ∑ j ( 1 + ∣ ∣ z i − u j ∣ ∣ 2 α ) − 1 ∂ L ∂ u j = − α + 1 α ∑ i ( 1 + ∣ ∣ z i − u j ∣ ∣ 2 α ) − 1 × ( p i j − q i j ) ( z i − u j ) \frac{\partial L}{\partial z_i}=\frac{\alpha+1}{\alpha}\sum_j(1+\frac{||z_i-u_j||^2}{\alpha})^{-1}\ \frac{\partial L}{\partial u_j}=-\frac{\alpha+1}{\alpha}\sum_i(1+\frac{||z_i-u_j||^2}{\alpha})^{-1}\times (p_{ij}-q_{ij})(z_i-u_j)∂z i ∂L =αα+1 j ∑(1 +α∣∣z i −u j ∣∣2 )−1 ∂u j ∂L =−αα+1 i ∑(1 +α∣∣z i −u j ∣∣2 )−1 ×(p i j −q i j )(z i −u j )
当相邻两次迭代的变化小于t o l % tol\%t o l %时停止优化。
前面小节假设簇中心和神经网络参数均被初始化。本小节则是具体介绍如何进行初始化。
论文使用堆叠自编码器来无监督学习数据在特征空间中的表示。堆叠自编码器采用逐层训练的方式,每一层的降噪自编码器都会重构前一层随机加入噪音的输出。降噪自编码器是一个两层的神经网络:
x ~ ∼ D r o p o u t ( x ) h = g 1 ( W 1 x ~ + b ) h ~ ∼ D r o p o u t ( h ) y = g 2 ( W 2 h ~ + b 2 ) \tilde{x}\sim Dropout(x) \ h=g_1(W_1\tilde{x}+b) \ \tilde{h}\sim Dropout(h) \ y=g_2(W_2\tilde{h}+b_2)x ~∼D r o p o u t (x )h =g 1 (W 1 x ~+b )h ~∼D r o p o u t (h )y =g 2 (W 2 h ~+b 2 )
其中,g 1 g_1 g 1 和g 2 g_2 g 2 是编码和解码层的激活函数,并且θ = { W 1 , b 1 , W 2 , b 2 } \theta={W_1,b_1,W_2,b_2}θ={W 1 ,b 1 ,W 2 ,b 2 }是模型参数。降噪自编码器的训练方式是最小化均方损失函数∣ ∣ x − y ∣ ∣ 2 2 ||x-y||_2^2 ∣∣x −y ∣∣2 2 。在训练完一层后,使用它的输出h h h作为下一层训练的输入。
经过逐层的贪心训练后,将所有的编码器按顺序拼接起来形成一个深度自编码器,并通过最小化构造损失函数来微调。最终得到的是,一个由编码器拼接成的多层深度自编码器,该自编码器用来将数据映射至特征空间,从而完成初始化。
在获得初始化的特征空间向量表示后,使用标准的k-mean \text{k-mean}k-mean聚类来获得k k k个初始化簇中心{ u j } j = 1 k {u_j}_{j=1}^k {u j }j =1 k 。
三、思考
- 论文的主要思路:1. 先使用已有的方式得到一个初步的聚类效果;2. 迭代的方式逐步改进聚类效果;
- 论文使用一个堆叠自编码器将数据映射至特征空间。这两年预训练模型有了长足的进步,这里可以使用预训练模型来提供自编码器;
- 聚类是否能作为预训练任务来预训练模型呢?这种得到的预训练模型是否有意义?
- 可否通过某种方式对聚类进行一定的控制?
- 这种迭代的方式是否可以用于少样本的有监督问题上?
Original: https://blog.csdn.net/bqw18744018044/article/details/120168640
Author: BQW_
Title: 【自然语言处理】【聚类】基于神经网络的聚类算法DEC
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544323/
转载文章受原作者版权保护。转载请注明原作者出处!