TNNLS-2020《Autoencoder Constrained Clustering With Adaptive Neighbors》
核心思想分析
该论文提出了一种名为ACC_AN(Autoencoder Constrained Clustering with Adaptive Neighbors)的深度聚类方法,旨在解决传统子空间聚类方法在处理非线性数据分布和高维数据时的局限性。核心思想是将深度自编码器(Autoencoder)与自适应的图结构学习相结合,通过同时优化数据的低维表示和图结构的相似性矩阵,实现高效的聚类。其主要创新点包括:
- 深度自编码器与图学习的联合优化:通过将自适应的图学习嵌入到深度自编码器网络中,ACC_AN能够同时捕获数据的全局结构(通过最小化重构误差)和局部结构(通过自适应相似性矩阵)。
- 无参数相似性度量:提出了一种基于自适应邻居的无参数相似性度量方法,避免了传统核函数方法对核函数选择的敏感性。
- 迭代优化:通过在反向传播过程中迭代更新潜在表示和图结构,增强了深度特征与聚类过程的相关性。
该方法克服了传统子空间聚类方法(如k-means、谱聚类)对线性结构的依赖,以及核方法对参数选择的敏感性,同时结合了深度学习的非线性表示能力,适用于复杂的高维数据聚类任务。
目标函数分析
论文的目标函数旨在联合优化自编码器的重构误差、图结构的相似性以及网络参数的正则化。目标函数由三部分组成,形式如下:
J = J 1 + λ 1 J 2 + λ 2 J 3 \mathcal{J} = \mathcal{J}_1 + \lambda_1 \mathcal{J}_2 + \lambda_2 \mathcal{J}_3 J=J1+λ1J2+λ2J3
其中,具体定义为:
-
重构误差项( J 1 \mathcal{J}_1 J1):
J 1 = 1 2 ∑ i = 1 n ∥ x i − h i ( M ) ∥ 2 2 \mathcal{J}_1 = \frac{1}{2} \sum_{i=1}^n \left\| x_i - h_i^{(M)} \right\|_2^2 J1=21i=1∑n xi−hi(M) 22
这一项最小化输入数据 x i x_i xi与自编码器输出 h i ( M ) h_i^{(M)} hi(M)之间的重构误差,确保网络能够保留数据的全局结构。 -
图结构相似性项( J 2 \mathcal{J}_2 J2):
J 2 = 1 2 ∑ i , j = 1 n ( s i j ∥ h i ( M 2 ) − h j ( M 2 ) ∥ 2 2 + γ i s i j 2 ) \mathcal{J}_2 = \frac{1}{2} \sum_{i,j=1}^n \left( s_{ij} \left\| h_i^{\left(\frac{M}{2}\right)} - h_j^{\left(\frac{M}{2}\right)} \right\|_2^2 + \gamma_i s_{ij}^2 \right) J2=21i,j=1∑n(sij hi(2M)−hj(2M) 22+γisij2)
这一项通过自适应相似性矩阵 S S S(其中 s i j s_{ij} sij表示数据点 i i i和 j j j之间的相似性)来捕获数据在中间层表示 h i ( M 2 ) h_i^{\left(\frac{M}{2}\right)} hi(2M)的局部结构。 γ i \gamma_i γi是权衡参数,控制相似性矩阵的稀疏性。 -
正则化项( J 3 \mathcal{J}_3 J3):
J 3 = 1 2 ∑ m = 1 M ( ∥ W ( m ) ∥ F 2 + ∥ p ( m ) ∥ 2 2 ) \mathcal{J}_3 = \frac{1}{2} \sum_{m=1}^M \left( \left\| W^{(m)} \right\|_F^2 + \left\| p^{(m)} \right\|_2^2 \right) J3=21m=1∑M( W(m) F2+ p(m) 22)
这一项对网络权重 W ( m ) W^{(m)} W(m)和偏置 p ( m ) p^{(m)} p(m)施加Frobenius范数和L2范数正则化,防止过拟合并避免平凡解。
目标函数通过权衡参数 λ 1 \lambda_1 λ1和 λ 2 \lambda_2 λ2平衡三部分的贡献,综合考虑数据的重构质量、局部结构的保持以及模型的稳定性。
目标函数的优化过程
目标函数的优化采用**随机子梯度下降(SGD)**算法,通过反向传播迭代更新网络参数和相似性矩阵 S S S。优化过程分为以下步骤:
-
前向传播:
自编码器网络包含 M + 1 M+1 M+1层,其中前 M / 2 M/2 M/2层为编码器,后 M / 2 M/2 M/2层为解码器。前向传播过程定义为:
{ H ( 0 ) = X Z ( m + 1 ) = W ( m ) ⋅ H ( m ) + p ( m ) , for m = 0 , 1 , … , M − 1 H ( m ) = f ( Z ( m ) ) \begin{cases} H^{(0)} = X \\ Z^{(m+1)} = W^{(m)} \cdot H^{(m)} + p^{(m)}, \quad \text{for } m=0,1,\ldots,M-1 \\ H^{(m)} = f(Z^{(m)}) \end{cases} ⎩ ⎨ ⎧H(0)=XZ(m+1)=W(m)⋅H(m)+p(m),for m=0,1,…,M−1H(m)=f(Z(m))
其中, H ( m ) H^{(m)} H(m)是第 m m m层的输出, f ( ⋅ ) f(\cdot) f(⋅)是激活函数(使用 tanh \tanh tanh函数, f ( z ) = 1 − e − 2 z 1 + e − 2 z f(z) = \frac{1-e^{-2z}}{1+e^{-2z}} f(z)=1+e−2z1−e−2z)。 -
相似性矩阵 S S S的计算:
相似性矩阵 S S S基于中间层表示 H ( M 2 ) H^{\left(\frac{M}{2}\right)} H(2M),通过优化以下问题计算:
min s i T 1 = 1 , 0 ≤ s i ≤ 1 ∑ i = 1 n 1 2 ∥ s i + d i 2 γ i ∥ 2 2 \min_{s_i^T \mathbf{1}=1, 0 \leq s_i \leq 1} \sum_{i=1}^n \frac{1}{2} \left\| s_i + \frac{d_i}{2 \gamma_i} \right\|_2^2 siT1=1,0≤si≤1mini=1∑n21 si+2γidi 22
其中, d i j = ∥ h i ( M 2 ) − h j ( M 2 ) ∥ 2 2 d_{ij} = \left\| h_i^{\left(\frac{M}{2}\right)} - h_j^{\left(\frac{M}{2}\right)} \right\|_2^2 dij= hi(2M)−hj(2M) 22, γ i \gamma_i γi是权衡参数。闭合解为:
s i j = ( q i ( k + 1 ) − q i j k q i ( k + 1 ) − ∑ j = 1 k q i j ) + s_{ij} = \left( \frac{q_{i(k+1)} - q_{ij}}{k q_{i(k+1)} - \sum_{j=1}^k q_{ij}} \right)_+ sij=(kqi(k+1)−∑j=1kqijqi(k+1)−qij)+
其中, q i j = ∥ h i ( M 2 ) − h j ( M 2 ) ∥ 2 2 q_{ij} = \left\| h_i^{\left(\frac{M}{2}\right)} - h_j^{\left(\frac{M}{2}\right)} \right\|_2^2 qij= hi(2M)−hj(2M) 22, k k k是邻居数量, ( + ) (_+) (+)表示 max ( ⋅ , 0 ) \max(\cdot, 0) max(⋅,0)。 -
反向传播与参数更新:
通过计算目标函数对权重 W ( m ) W^{(m)} W(m)和偏置 p ( m ) p^{(m)} p(m)的子梯度,更新网络参数。子梯度计算公式为:
{ ∂ J ∂ p ( m ) = Σ ( m ) + λ 1 Θ ( m ) + λ 2 p ( m ) ∂ J ∂ W ( m ) = ( Σ ( m ) + λ 1 Θ ( m ) ) ( h i ( m − 1 ) ) T + λ 2 W ( m ) \begin{cases} \frac{\partial \mathcal{J}}{\partial p^{(m)}} = \Sigma^{(m)} + \lambda_1 \Theta^{(m)} + \lambda_2 p^{(m)} \\ \frac{\partial \mathcal{J}}{\partial W^{(m)}} = \left( \Sigma^{(m)} + \lambda_1 \Theta^{(m)} \right) \left( h_i^{(m-1)} \right)^T + \lambda_2 W^{(m)} \end{cases} ⎩ ⎨ ⎧∂p(m)∂J=Σ(m)+λ1Θ(m)+λ2p(m)∂W(m)∂J=(Σ(m)+λ1Θ(m))(hi(m−1))T+λ2W(m)
其中, Σ ( m ) = ∂ J 1 ∂ z ( m ) \Sigma^{(m)} = \frac{\partial \mathcal{J}_1}{\partial z^{(m)}} Σ(m)=∂z(m)∂J1和 Θ ( m ) = ∂ J 2 ∂ z ( m ) \Theta^{(m)} = \frac{\partial \mathcal{J}_2}{\partial z^{(m)}} Θ(m)=∂z(m)∂J2通过链式法则计算。参数更新规则为:
{ p ( m ) = p ( m ) − μ ∂ J ∂ p ( m ) W ( m ) = W ( m ) − μ ∂ J ∂ W ( m ) \begin{cases} p^{(m)} = p^{(m)} - \mu \frac{\partial \mathcal{J}}{\partial p^{(m)}} \\ W^{(m)} = W^{(m)} - \mu \frac{\partial \mathcal{J}}{\partial W^{(m)}} \end{cases} {p(m)=p(m)−μ∂p(m)∂JW(m)=W(m)−μ∂W(m)∂J
其中, μ \mu μ是学习率。 -
迭代优化:
重复前向传播、相似性矩阵计算和反向传播步骤,直到目标函数收敛。最终,使用中间层表示 H ( M 2 ) H^{\left(\frac{M}{2}\right)} H(2M)进行k-means聚类,得到最终的聚类结果。
主要的贡献点
-
自适应图学习的嵌入:
首次将自适应邻居的图学习嵌入到深度自编码器网络中,通过反向传播过程同时更新潜在表示和图结构,增强了聚类的鲁棒性和准确性。 -
无参数相似性度量:
提出了一种基于 k k k近邻的无参数相似性度量方法,避免了传统核函数方法对参数选择的依赖,实现了可控稀疏性的相似性矩阵构造。 -
联合优化框架:
通过联合优化重构误差和图结构相似性,ACC_AN能够同时捕获数据的全局和局部结构,适用于高维非线性数据的聚类任务。 -
高效的优化算法:
提供了基于SGD的优化算法,通过闭合解计算相似性矩阵,降低了计算复杂度,并保证了收敛性。
实验结果分析
实验在六个基准数据集(COIL20、YaleB、CIFAR10、MNIST、Fashion-MNIST)上进行,比较了ACC_AN与15种聚类方法(包括SSC、LRR、KSSC、KLRR、PARTY等)的性能。评估指标包括准确率(ACC)、归一化互信息(NMI)、调整兰德指数(ARI)、精确率(Precision)和F分数(Fscore)。
-
COIL20数据集:
- 使用SDSIFT特征时,ACC_AN的性能为:ACC=91.65%,NMI=94.80%,ARI=89.72%,Precision=86.60%,Fscore=89.47%。
- 使用LPQ特征时,性能稍低,但仍优于其他方法(如PARTY:ACC=90.88%,NMI=94.12%)。
-
YaleB数据集:
- SDSIFT特征下,ACC_AN的性能优于LPQ特征,且在所有指标上均优于其他方法。
-
CIFAR10和MNIST数据集:
- LPQ特征下,ACC_AN的性能优于SDSIFT特征。例如,在MNIST数据集上,ACC_AN的性能为:ACC=78.69%,NMI=74.21%,ARI=67.51%,显著优于PARTY(ACC=65.69%,NMI=68.89%)。
-
Fashion-MNIST数据集:
- ACC_AN在NMI、ARI和Fscore上表现最佳,仅在Precision上略逊于其他方法。
-
计算效率:
- ACC_AN的运行时间低于PARTY,表明其收敛速度更快,计算效率更高。
总结:ACC_AN在所有数据集和大多数指标上均表现出色,特别是在NMI和ARI上,证明了其在深度聚类任务中的优越性。实验结果还表明,不同数据集对特征类型(SDSIFT或LPQ)的敏感性不同,但ACC_AN的鲁棒性使其在多种场景下均能保持高性能。
算法实现过程详细解释
以下是ACC_AN算法的详细实现过程,结合论文中的伪代码(Algorithm 1)进行说明:
输入
- 数据矩阵: X ∈ R d × n X \in \mathbb{R}^{d \times n} X∈Rd×n,其中 d d d是特征维度, n n n是数据点数量。
- 参数: λ 1 \lambda_1 λ1(权衡图结构项)、 λ 2 \lambda_2 λ2(权衡正则化项)、 k k k(邻居数量)。
初始化
-
网络参数初始化:
- 初始化自编码器网络的权重 W ( m ) W^{(m)} W(m)和偏置 p ( m ) p^{(m)} p(m), m = 1 , 2 , … , M m=1,2,\ldots,M m=1,2,…,M。
- 使用预训练的自编码器参数(通过最小化重构误差训练)初始化编码器和解码器层。
- 设置初始输入 H ( 0 ) = X H^{(0)} = X H(0)=X。
-
网络结构:
- 网络包含 M + 1 M+1 M+1层,前 M / 2 M/2 M/2层为编码器,后 M / 2 M/2 M/2层为解码器。
- 激活函数使用 tanh \tanh tanh,定义为 f ( z ) = 1 − e − 2 z 1 + e − 2 z f(z) = \frac{1-e^{-2z}}{1+e^{-2z}} f(z)=1+e−2z1−e−2z,其导数为 f ′ ( z ) = 1 − tanh 2 ( z ) f'(z) = 1 - \tanh^2(z) f′(z)=1−tanh2(z)。
优化过程
-
前向传播:
- 对于每一层 m = 1 , 2 , … , M m=1,2,\ldots,M m=1,2,…,M,计算:
Z ( m + 1 ) = W ( m ) ⋅ H ( m ) + p ( m ) Z^{(m+1)} = W^{(m)} \cdot H^{(m)} + p^{(m)} Z(m+1)=W(m)⋅H(m)+p(m)
H ( m ) = f ( Z ( m ) ) H^{(m)} = f(Z^{(m)}) H(m)=f(Z(m)) - 得到中间层表示 H ( M 2 ) H^{\left(\frac{M}{2}\right)} H(2M)和最终输出 H ( M ) H^{(M)} H(M)。
- 对于每一层 m = 1 , 2 , … , M m=1,2,\ldots,M m=1,2,…,M,计算:
-
计算初始相似性矩阵 S S S:
- 基于中间层表示 H ( M 2 ) H^{\left(\frac{M}{2}\right)} H(2M),计算距离 q i j = ∥ h i ( M 2 ) − h j ( M 2 ) ∥ 2 2 q_{ij} = \left\| h_i^{\left(\frac{M}{2}\right)} - h_j^{\left(\frac{M}{2}\right)} \right\|_2^2 qij= hi(2M)−hj(2M) 22。
- 对每个数据点 i i i,按距离排序 q i 1 ≤ q i 2 ≤ ⋯ ≤ q i n q_{i1} \leq q_{i2} \leq \cdots \leq q_{in} qi1≤qi2≤⋯≤qin。
- 计算 γ i \gamma_i γi的上界:
γ i = k 2 q i ( k + 1 ) − 1 2 ∑ j = 1 k q i j \gamma_i = \frac{k}{2} q_{i(k+1)} - \frac{1}{2} \sum_{j=1}^k q_{ij} γi=2kqi(k+1)−21j=1∑kqij - 计算相似性 s i j s_{ij} sij:
s i j = ( q i ( k + 1 ) − q i j k q i ( k + 1 ) − ∑ j = 1 k q i j ) + s_{ij} = \left( \frac{q_{i(k+1)} - q_{ij}}{k q_{i(k+1)} - \sum_{j=1}^k q_{ij}} \right)_+ sij=(kqi(k+1)−∑j=1kqijqi(k+1)−qij)+ - 构造相似性矩阵 S = [ s i j ] n × n S = [s_{ij}]_{n \times n} S=[sij]n×n。
-
迭代优化:
- 循环直到收敛:
- 对于每个数据点 i = 1 , 2 , … , n i=1,2,\ldots,n i=1,2,…,n:
- 前向传播:
- 计算每一层的输出 h i ( m ) h_i^{(m)} hi(m),从 h i ( 0 ) = x i h_i^{(0)} = x_i hi(0)=xi开始:
h i ( m ) = f ( W ( m ) h i ( m − 1 ) + p ( m ) ) h_i^{(m)} = f(W^{(m)} h_i^{(m-1)} + p^{(m)}) hi(m)=f(W(m)hi(m−1)+p(m))
- 计算每一层的输出 h i ( m ) h_i^{(m)} hi(m),从 h i ( 0 ) = x i h_i^{(0)} = x_i hi(0)=xi开始:
- 反向传播:
- 从 m = M m=M m=M到 m = 1 m=1 m=1,计算子梯度 Σ ( m ) \Sigma^{(m)} Σ(m)和 Θ ( m ) \Theta^{(m)} Θ(m):
- 对于 J 1 \mathcal{J}_1 J1:
Σ ( m ) = { − ( x i − h i ( M ) ) ⊙ f ′ ( z i ( M ) ) , m = M ( W ( m + 1 ) ) T Σ ( m + 1 ) ⊙ f ′ ( z i ( m ) ) , otherwise \Sigma^{(m)} = \begin{cases} -(x_i - h_i^{(M)}) \odot f'(z_i^{(M)}), & m=M \\ (W^{(m+1)})^T \Sigma^{(m+1)} \odot f'(z_i^{(m)}), & \text{otherwise} \end{cases} Σ(m)={−(xi−hi(M))⊙f′(zi(M)),(W(m+1))TΣ(m+1)⊙f′(zi(m)),m=Motherwise - 对于 J 2 \mathcal{J}_2 J2:
Θ ( m ) = { ( W ( m + 1 ) ) T Θ ( m + 1 ) ⊙ f ′ ( z i ( m ) ) , m = 1 , … , M − 2 2 ∑ j = 1 n s i j ( h i ( M 2 ) − h j ( M 2 ) ) ⊙ f ′ ( z i ( M 2 ) ) , m = M 2 0 , m = M + 2 2 , … , M \Theta^{(m)} = \begin{cases} (W^{(m+1)})^T \Theta^{(m+1)} \odot f'(z_i^{(m)}), & m=1,\ldots,\frac{M-2}{2} \\ \sum_{j=1}^n s_{ij} (h_i^{\left(\frac{M}{2}\right)} - h_j^{\left(\frac{M}{2}\right)}) \odot f'(z_i^{\left(\frac{M}{2}\right)}), & m=\frac{M}{2} \\ 0, & m=\frac{M+2}{2},\ldots,M \end{cases} Θ(m)=⎩ ⎨ ⎧(W(m+1))TΘ(m+1)⊙f′(zi(m)),∑j=1nsij(hi(2M)−hj(2M))⊙f′(zi(2M)),0,m=1,…,2M−2m=2Mm=2M+2,…,M
- 对于 J 1 \mathcal{J}_1 J1:
- 从 m = M m=M m=M到 m = 1 m=1 m=1,计算子梯度 Σ ( m ) \Sigma^{(m)} Σ(m)和 Θ ( m ) \Theta^{(m)} Θ(m):
- 更新参数:
- 计算总子梯度:
∂ J ∂ p ( m ) = Σ ( m ) + λ 1 Θ ( m ) + λ 2 p ( m ) \frac{\partial \mathcal{J}}{\partial p^{(m)}} = \Sigma^{(m)} + \lambda_1 \Theta^{(m)} + \lambda_2 p^{(m)} ∂p(m)∂J=Σ(m)+λ1Θ(m)+λ2p(m)
∂ J ∂ W ( m ) = ( Σ ( m ) + λ 1 Θ ( m ) ) ( h i ( m − 1 ) ) T + λ 2 W ( m ) \frac{\partial \mathcal{J}}{\partial W^{(m)}} = \left( \Sigma^{(m)} + \lambda_1 \Theta^{(m)} \right) (h_i^{(m-1)})^T + \lambda_2 W^{(m)} ∂W(m)∂J=(Σ(m)+λ1Θ(m))(hi(m−1))T+λ2W(m) - 更新权重和偏置:
p ( m ) = p ( m ) − μ ∂ J ∂ p ( m ) p^{(m)} = p^{(m)} - \mu \frac{\partial \mathcal{J}}{\partial p^{(m)}} p(m)=p(m)−μ∂p(m)∂J
W ( m ) = W ( m ) − μ ∂ J ∂ W ( m ) W^{(m)} = W^{(m)} - \mu \frac{\partial \mathcal{J}}{\partial W^{(m)}} W(m)=W(m)−μ∂W(m)∂J
- 计算总子梯度:
- 前向传播:
- 更新相似性矩阵 S S S:
- 使用最新的 H ( M 2 ) H^{\left(\frac{M}{2}\right)} H(2M),重新计算 q i j q_{ij} qij和 s i j s_{ij} sij,更新 S S S。
- 对于每个数据点 i = 1 , 2 , … , n i=1,2,\ldots,n i=1,2,…,n:
- 循环直到收敛:
-
聚类:
- 使用最终的中间层表示 H ( M 2 ) H^{\left(\frac{M}{2}\right)} H(2M),应用k-means算法进行聚类,得到聚类结果。
输出
- 网络参数: { p ( m ) , W ( m ) } m = 1 M \{p^{(m)}, W^{(m)}\}_{m=1}^M {p(m),W(m)}m=1M。
- 聚类结果:基于 H ( M 2 ) H^{\left(\frac{M}{2}\right)} H(2M)的聚类标签。
总结
ACC_AN通过将自适应图学习嵌入深度自编码器,提出了一种高效的深度聚类方法。其目标函数综合考虑了重构误差、图结构相似性和正则化,通过SGD优化实现了联合学习。实验结果表明,ACC_AN在多个基准数据集上均优于现有方法,特别是在NMI和ARI指标上表现突出。算法实现过程清晰,通过前向传播、相似性矩阵计算和反向传播的迭代优化,保证了高效性和收敛性。该方法在高维非线性数据聚类任务中具有广泛的应用潜力。