论文阅读笔记(2):Learning a Self-Expressive Network for Subspace Clustering. SENet——用于大规模子空间聚类的自表达网络
前言
是今年本组的CVPR论文,拜读一下并留档。
摘要
最先进的子空间聚类方法是基于自表达模型的方法,将每个数据点表示为其他数据点的线性组合。然而,这种方法是为有限样本数据集设计的,缺乏推广到样本外数据的能力。此外,由于自表达系数的数量与数据点的数量呈二次增长,因此它们处理大规模数据集的能力往往受到限制。在本文中,我们提出了一个新的子空间聚类框架,称为自表达网络(Self-Expressive Network,SENet),它使用一个设计合理的神经网络来学习数据的自身表示。我们证明了我们的感知机网络不仅可以学习训练数据上具有期望性质的自表达系数,而且可以处理样本外的数据。此外,我们还证明了SENet还可以用于大规模数据集的子空间聚类。在合成数据和实际基准数据上进行的大量实验验证了该方法的有效性。特别是,SENet在MNIST、Fashion MNIST和Extended MNIST上的表现极具竞争力,在CIFAR-10上的表现堪称一流。代码可从以下网址获得:
https://github.com/zhangsz1998/Self-Expressive-Network
一、简介
随着数据采集、存储和处理技术的进步,计算机视觉中大规模数据库的可用性激增。虽然现代机器学习技术的发展,如深度学习,已经在分析大数据方面取得了巨大的成功,但是这种方法需要大量的注释数据,而这些数据的获取往往是昂贵的。从未标记的大数据中提取模式和聚类已经成为一个重要的开放性问题。我们考虑了在假设每个聚类由高维环境空间的低维子空间近似的情况下对大规模未标记数据进行聚类的问题,即子空间聚类。该问题在图像聚类、运动分割、混合系统识别、肿瘤亚型聚类、高光谱图像分割等方面有着广泛的应用。
自表达模型是最流行和最成功的子空间聚类方法之一。给定一个数据矩阵 X = [ x 1 , ⋅ ⋅ ⋅ , x N ] ∈ R D × N X=[x_1,···,x_N]∈ \mathbb{R}^{D\times N} X=[x1,⋅⋅⋅,xN]∈RD×N,其列 x i x_i xi来自 n n n个子空间的并集,自表达模型表示每个数据点 x j ∈ R D x_j∈ \mathbb{R}^D xj∈RD被用作其他数据点的线性组合,即:
x j = ∑ i ≠ j c i j x i x_j=\sum_{i\neq j}c_{ij}x_i xj=i=j∑cijxi
其中 { c i j } i ≠ j \{c_{ij}\}_{i\neq j} { cij}i=j是自表达系数(类似于attention)。自表达模型的一个值得注意的特点是,对系数最小化某些正则化函数的求解具有子空间保持性质,即非零系数 c i j c_{ij} cij只出现在位于相同子空间的 x i x_i xi和 x j x_j xj之间。因此,通过定义任意一对数据点 x i x_i xi和 x j x_j xj之间的affinity——例如 ∣ c i j ∣ + ∣ c j i ∣ |c_{ij}|+|c_{ji}| ∣cij∣+∣cji∣,可以获得正确的(即具有子空间保持性质的)聚类,并将谱聚类应用于affinity。最近的研究进一步将自表达模型的适用性扩展到数据被噪声(noise)和离群值(outlier)破坏的、在类别不均衡、或具有数据点缺失的情况下。
尽管自表达模型具有很好的经验性能和广泛的理论正确性保证,自我表达模型的局限性在于它需要求解一个大小为 N × N N\times N N×N的自表达矩阵——对于大规模数据来说这一计算量太高了。虽然基于子采样(subsampling)、矩阵素描(sketching)或学习紧凑字典(compact dictionary)的等增加子空间聚类可伸缩性的方法已经存在,但它们没有广泛的理论保证正确性,并为可伸缩性而牺牲了准确性。此外,为一组数据计算的自表达系数不能用于为先前看不见的数据生成自表达系数,这对在线环境中的学习和样本外数据提出了挑战。
在本文中,我们介绍了SENet是如何学习一个用于子空间聚类自表达模型,并且该模型可以用来处理样本外数据和大规模数据。我们的方法是基于学习这样一个函数:
f ( x i , x j ; Θ ) : R D × R D → R f(x_i,x_j;\Theta ):\mathbb{R}^D \times \mathbb{R}^D \rightarrow \mathbb{R} f(xi,xj;Θ):RD×RD→R
这可以通过带参数 Θ Θ Θ的神经网络实现, 从而满足自表达模型:
x j = ∑ i ≠ j f ( x i , x j ; Θ ) ⋅ x i x_j=\sum_{i\neq j}f(x_i,x_j;\Theta ) \cdot x_i xj=i=j∑f(xi,xj;Θ)⋅xi
*注:对比上面两个公式可以看出,该模型是同通过神经网络拟合函数 f ( x i , x j ; Θ ) f(x_i,x_j;\Theta ) f(xi,xj;Θ)并将该函数用来学习自表达模型重的affinity参数 c i j c_{ij} cij
原则上,网络参数的个数不需要随着数据集中数据的个数而变化,因此SENet可以有效地处理大规模数据。此外,在特定数据集上训练的SENet可以为来自同一数据分布的另一个数据集生成自表达系数,因此该方法可以有效地处理样本外数据。我们提出了学习 f ( x i , x j ; Θ ) f(x_i,x_j;\Theta ) f(xi,xj;Θ)的神经网络结构以及训练算法,使我们能够学习满足子空间保持性质的自表达系数。我们的实验展示了我们方法的有效性,总结如下:
- 我们证明了由训练的SENet计算得到的自表达系数与直接求解自表达系数得到的值非常