标题(paper):Unsupervised Deep Embedding for Clustering Analysis
期刊 + 时间 + 有无源代码: Proceedings of the 33 rd International Conference on Machine
Learning + 2016 + 没收集
作者: Junyuan Xie, Ross Girshick, Ali Farhadi
方法名及缩写: Deep Embedded Clustering
(DEC)
算法框架: 使用从当前软聚类分配中派生的辅助目标分布来迭代地改进聚类。这个过程逐步改进了聚类和特征表示。
DEC的工作原理是迭代优化基于KL散度的聚类目标和自训练目标分布。
流程图 :
DEC模型分为两个部分:(1)自编码器用于参数初始化;(2)参数优化(即聚类)。
主要创新点: 利用深度神经网络同时学习特征空间和分配聚类。
动机: 特征空间的选择通常作为应用程序特定的细节留给最终用户来决定。然而很明显,特征空间的选择是至关重要的;除了最简单的图像数据集,在原始像素上使用欧几里德距离聚类是完全无效的。在本文中,我们重新审视了聚类分析,并提出了一个问题:我们能否使用数据驱动的方法来共同解决特征空间和聚类隶属关系?
目标函数:
第一部分:自编码器作非线性映射: f θ : X → Z f_{\theta}:X\to Z fθ:X→Z 其中 θ \theta θ是可以学习的参数, Z Z Z潜在特征表示。
DEC:
(1)初始化参数 θ \theta θ和 { μ j } j = 1 k \{\mu_j\}^k_{j=1} {μj}j=1kk个类的类中心点。
(2)利用KL散度进行聚类:
-
第一步计算软聚类
q i j = ( 1 + ∥ z i − μ j ∥ 2 / α ) − α + 1 2 ∑ j ′ ( 1 + ∥ z i − μ j ′ ∥ 2 / α ) − α + 1 2 , q_{ij}=\frac{(1+\|z_i-\mu_j\|^2/\alpha)^{-\frac{\alpha+1}2}}{\sum_{j^{\prime}}(1+\|z_i-\mu_{j^{\prime}}\|^2/\alpha)^{-\frac{\alpha+1}2}}, qij=∑j′(1+∥zi−μj′∥2/α)−2α+1(1+∥zi−μj∥2/α)−2α+1,
α \alpha α是Students t 分布的自由度( α = 1 \alpha=1 α=1)q i j q_{ij} qij是样本 i i i被分配到第 j j j个类的概率
-
KL 散度最小化
L = K L ( P ∥ Q ) = ∑ i ∑ j p i j log p i j q i j . L=\mathrm{KL}(P\|Q)=\sum_i\sum_jp_{ij}\log\frac{p_{ij}}{q_{ij}}. L=KL(P∥Q)=i∑j∑pijlogqijpij.p i j p_{ij} pij是辅助分布(对最终的表现影响大)
确定 p i j p_{ij} pij :
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^{\prime}}q_{ij^{\prime}}^2/f_{j^{\prime}}}, pij=∑j′qij′2/fj′qij2/fj,
f j = ∑ i q i j f_j=\sum_iq_{ij} fj=∑iqij是软聚类的频率。
对上述目标函数的总结:
首先DEC预训练模型,然后去掉自编码器的解码部分。
那么,现在的编码器:
L
=
K
L
(
P
∥
Q
)
=
∑
i
∑
j
p
i
j
log
p
i
j
q
i
j
L=KL(P\|Q)=\sum_i\sum_jp_{ij}\log\frac{p_{ij}}{q_{ij}}
L=KL(P∥Q)=i∑j∑pijlogqijpij
q
i
j
q_{ij}
qij是特征空间
z
i
z_i
zi和聚类中心
μ
j
\mu_j
μj的相似度(可以看作是
z
i
z_i
zi有多大可能属于
μ
j
\mu_j
μj这个类)。
q
i
j
q_{ij}
qij的计算是学生 t-分布:
q
i
j
=
(
1
+
∥
z
i
−
μ
j
∥
2
)
−
1
∑
j
(
1
+
∥
z
i
−
μ
j
∥
2
)
−
1
q_{ij}=\frac{(1+\|z_i-\mu_j\|^2)^{-1}}{\sum_j(1+\|z_i-\mu_j\|^2)^{-1}}
qij=∑j(1+∥zi−μj∥2)−1(1+∥zi−μj∥2)−1
p
i
j
p_{ij}
pij是目标分布:
p
i
j
=
q
i
j
2
/
∑
i
q
i
j
∑
j
(
q
i
j
2
/
∑
i
q
i
j
)
p_{ij}=\frac{q_{ij}^2/\sum_iq_{ij}}{\sum_j\left(q_{ij}^2/\sum_iq_{ij}\right)}
pij=∑j(qij2/∑iqij)qij2/∑iqij
目标分布
P
P
P是由
Q
Q
Q定义的,所以最小化
L
L
L是一种自我训练
优化:
z i = f W ( x i ) z_i=f_W(x_i) zi=fW(xi)是编码器的映射。在预训练之后,对 z i z_i zi利用k-meas获得最初的聚类中心点 μ j \mu_j μj,然后最小化 L L L(梯度下降的方法计算),这里样本 x i x_i xi的预测标号为 a r g m a x j q i j argmax_jq_{ij} argmaxjqij.
对于方向传播:根据
∂
L
/
∂
z
i
\partial L/\partial z_i
∂L/∂zi去反向更新编码器
f
W
(
)
f_W()
fW(), 通过
∂
L
/
∂
μ
j
)
\partial L/\partial \mu_j)
∂L/∂μj)更新聚类中心点
μ
j
\mu_j
μj
μ
j
=
μ
j
−
λ
∂
L
∂
μ
j
\mu_j=\mu_j-\lambda\frac{\partial L}{\partial\mu_j}
μj=μj−λ∂μj∂L
优化步骤: 使用带动量的随机梯度下降(SGD)方法对聚类中心
{
μ
j
}
\{\mu_j\}
{μj}和DNN参数
θ
\theta
θ进行联合优化。
∂
L
∂
z
i
=
α
+
1
α
∑
j
(
1
+
∥
z
i
−
μ
j
∥
2
α
)
−
1
(
4
)
×
(
p
i
j
−
q
i
j
)
(
z
i
−
μ
j
)
,
∂
L
∂
μ
j
=
−
α
+
1
α
∑
i
(
1
+
∥
z
i
−
μ
j
∥
2
α
)
−
1
(
5
)
×
(
p
i
j
−
q
i
j
)
(
z
i
−
μ
j
)
.
\begin{matrix}\frac{\partial L}{\partial z_i}&=&\frac{\alpha+1}{\alpha}\sum_j(1+\frac{\|z_i-\mu_j\|^2}{\alpha})^{-1}&(4)\\&&\times(p_{ij}-q_{ij})(z_i-\mu_j),\\\frac{\partial L}{\partial\mu_j}&=&-\frac{\alpha+1}{\alpha}\sum_i(1+\frac{\|z_i-\mu_j\|^2}{\alpha})^{-1}&(5)\\&&\times(p_{ij}-q_{ij})(z_i-\mu_j).\end{matrix}
∂zi∂L∂μj∂L==αα+1∑j(1+α∥zi−μj∥2)−1×(pij−qij)(zi−μj),−αα+1∑i(1+α∥zi−μj∥2)−1×(pij−qij)(zi−μj).(4)(5)
然后将梯度
∂
L
∂
z
i
\frac{\partial L}{\partial z_i}
∂zi∂L传递给DNN,并在标准反向传播中使用,以计算DNN的参数梯度
∂
L
∂
θ
\frac{\partial L}{\partial\theta}
∂θ∂L。为了发现聚类分配,当在两个连续迭代之间更改聚类分配的点少于
t
o
l
%
tol\%
tol%时,迭代停止该过程
注解:(优缺点 + 随便想记的内容 )
1、初始化DEC利用 stacked autoencoder (SAE)
2、自编码器的设计和优化可以查原文
3、所有数据集的网络层数d–500–500–2000–10,d是数据空间的维度
4、基于DAE的改进
5、DEC在预训练之后舍弃了解码过程,同时根据聚类过程实时更新编码器,在DEC中也只考虑了聚类损失(关于这一点我感觉DEC像是把编码过程给他融合到了聚类过程之中,可以理解为在传统方法中将各类范数或者是原始数据重构的过程融合到目标函数中,算在聚类的一个环节里)