论文阅读笔记(6):Self-Supervised Convolutional Subspace Clustering Network,自监督卷积聚类网
前言
面试的时候囫囵吞枣的读以至于一知半解 现在重读一遍并记录新的见解。
摘要
从两方面进行论述:
- 基于数据自表达的子空间聚类方法在低维线性子空间的并合数据的学习中得到了广泛的应用。然而,子空间聚类的适用性受到了限制,因为实际的原始视觉数据不一定存在于这样的线性子空间中。
- 另一方面,卷积神经网络(ConvNet)已被证明是从视觉数据中提取鉴别特征的有力工具,而训练这样的ConvNet通常需要大量的标记数据,这在子空间聚类应用中是不可用的。
文章提出的S2ConvSCN它结合了
- 卷积模块ConvNet用于提取和学习特征
- 自表示模型用于子空间聚类
- 谱聚类模块用于自监督,这是一种双重自监督机制,通过分类损失监督卷积模块的训练,通过谱聚类损失监督自表达模型的训练
1 简介
略。主要讲讲问题:
尽管子空间聚类在最近的发展中取得了巨大的成功,但由于实际数据不一定与线性子空间模型相一致,它在实际应用中的适用性非常有限。例如,在人脸图像聚类中,实际的人脸图像通常是不对齐的,并且常常包含被摄体的姿势和表情的变化。子空间聚类不能处理同一人脸对应的图像不再位于线性子空间的情况。虽然最近开发了图像对齐+子空间聚类的技术,但这种参数化模型无法处理更大范围的数据变化,如变形、平移等。另一种方法是,在执行子空间聚类之前,人为地为图像设计的不变性特征,例如SIFT、HOG和PRICoLBP。然而,无论是理论上还是实践上都没有证据表明这些特征遵循线性子空间模型。
卷积网络的问题就是之前所说的依赖标注信息。为了在没有标记数据的情况下进行特征学习,最近提出了许多方法,利用子空间并集中数据的自表达。也就是对每个特征向量用其他特征向量的线性组合表出,从而支持卷积模块的训练。然而,由于缺乏有效的监督,在这种方法中很难学习到好的特征表示。
模型贡献
论文投稿。本文提出了一种端到端可训练的同时进行特征学习和子空间聚类的框架,称为自监督进化子空间聚类网络。在这个框架中,我们使用当前的聚类结果来自我监督特征学习和自我表达模块的训练,这能够显著提高子空间聚类的性能。我们特别介绍了以下两个自监督模块:
-
谱聚类模块,它使用当前的聚类结果来监督自表达系数的学习。通过诱导自表达产生的affinity来进行数据划分,并监督它形成与聚类产生的当前类标签一致的数据划分。 -
分类模块,它使用当前的聚类结果来监督特征学习的训练。这是通过最小化在特征学习模块上训练的分类器的输出和聚类生成的当前类标签之间的分类误差来实现的。
这个训练框架中特征表示、数据自表达和数据分割是在学习过程中共同学习和交替确定的。从概念上讲,初始的聚类结果与真实的数据分割不完全吻合,因此初始的自我监督会给训练带来误差。尽管如此,特征学习仍有望从自我监督中受益,因为有正确标签的数据产生有用的信息。改进后的特征表示有助于学习更好的自我表达,从而产生更好的数据分割。
2 相关工作
2.1 在原始空间的聚类
略。
2.2 在Feature space的子空间聚类
第一种类型使用潜在特征空间,通过Mercer核诱导或通过矩阵分解构建。第二种类型使用显式特征空间,通过手动特征提取设计或从数据中学习。
潜在特征空间
最近的许多工作都利用核技巧将原始数据映射到一个高维的潜在特征空间,在这个空间中进行子空间聚类,例如,在核稀疏子空间聚类方法和核低秩表示方法中使用了预定义的多项式和高斯核。然而不能保证由这些预定义核诱导的潜在特征空间中的数据依然位于低维子空间中。
另一种方法通过矩阵分解构造了潜在特征空间。如计算线性变换矩阵和它的低秩表示;或线性变换和稀疏表示进行联合优化。然而,学习线性变换的表示能力仍然有限。
显式特征空间
深度学习以一种端到端可训练的方式学习高层特征的强大能力吸引了大量的研究兴趣[10,15]。近年来,有一些研究将深度学习技术应用于子空间聚类中的特征提取。例如,
- 了一个全连接的深度自动编码器网络,该网络具有手工制作的特征(例如SIFT或HOG特征)和稀疏的自我表达模型
- 一种具有自达模型的叠加卷积自编码网络。虽然已经报道了很好的聚类精度,但是这些方法仍然是次优的,因为没有将聚类结果中可能有用的监督信息纳入特征学习步骤,也没有开发出一个将特征学习和子空间聚类完全结合的联合优化框架。
- 更近一点,采用一个具有子空间特定生成器和子空间特定鉴别器的深度对抗网络。然而,鉴别器需要使用每个子空间的维数,这通常是未知的。
在S2ConvSCN中,基于叠加卷积层的特征提取和基于自表达的特征学习都是通过利用谱聚类的反馈来实现的。
3 提出模型
3.1 公式
如上所述,我们的网络由特征提取模块、自我表达模块和自监督模块组成,并用自监督模块训练前两个模块。
特征提取模块
为了在保持空间局部性的同时提取局部特征,采用了由多个卷积层堆叠组成的卷积神经网络。那么输出就是一组个数等于输出层神经元数的特征图,特征图concat组成的矩阵z就是对原始图像的一种表示。为了监督特征提取模块是否学到了有用的特征信息,之后会将原始和卷积decoder得到的恢复图像进行比较,误差函数即原始图像和恢复图像的最小二乘:
自表达模块
顾名思义,用自表达模型做的。损失函数是带
?
\ell
?范数的SSC,其中
C
C
C即为诱导得到的affinity系数矩阵,显然
C
C
C在对角线上的系数(也就是数据点自己)需要为0,
Z
Z
Z是上一步特征提取模块得到的:
自监督模块
得到了矩阵
C
C
C之后得到
A
=
1
2
(
∣
C
∣
+
∣
C
∣
?
)
A=\frac{1}{2}(|C|+|C|^\top)
A=21?(∣C∣+∣C∣?),然后在
A
A
A上进行谱聚类得到不同类的分割,这一方法是通过最小化一下损失函数: 其中
Q
=
{
Q
∈
0
,
1
n
×
N
:
1
?
Q
=
1
?
,
r
a
n
k
(
Q
)
=
n
}
\mathcal Q=\{Q∈ {0,1}^{n×N}:1^?Q=1^?, rank(Q)=n\}
Q={Q∈0,1n×N:1?Q=1?,rank(Q)=n}是一组具有n个分割的有效分割矩阵,
q
i
q_i
qi?和
q
j
q_j
qj?分别是
Q
Q
Q的第
i
i
i列和第
j
j
j列,表示每个数据点对指定分类的隶属关系。在实践中,既然遍历搜索了
Q
∈
Q
Q∈ \mathcal Q
Q∈Q的组合,谱聚类通常放宽了该
Q
∈
Q
Q∈ \mathcal Q
Q∈Q的约束到
Q
Q
?
=
I
QQ^? = I
QQ?=I
注意到谱聚类产生了一个数据集的标签,尽管它不一定是所有数据点的正确类标签,但是它包含了关于数据的有意义的信息。这促使我们利用谱聚类的输出来监督特征提取和自表达模型的训练。
原则上,从特征提取模块学习到的特征应该包含足够的信息来预测数据点的类标签。因此,我们在特征提取模块的基础上引入了一个分类层,我们希望它生成与谱聚类中生成的标签一致的标签。
此外,谱聚类产生的分割矩阵还可以用来构造一个二值分割矩阵,该矩阵包含表示特定数据点时应使用哪些数据点的信息。
因此,我们将谱聚类的目标函数作为一个损失函数加入到我们的网络公式中,起到监督自表达模块训练的作用。我们将在下面的两个小节中详细介绍这两个自监督模块。
3.2 监督自表达模块
利用
A
=
1
2
(
∣
C
∣
+
∣
C
∣
?
)
A=\frac{1}{2}(|C|+|C|^\top)
A=21?(∣C∣+∣C∣?)可以得到: 于是按此损失定义得到的
∣
∣
C
∣
∣
Q
||C||_Q
∣∣C∣∣Q?度量了
C
C
C和
Q
Q
Q之间的差异。显然最小化
∣
∣
C
∣
∣
Q
||C||_Q
∣∣C∣∣Q?需要在
q
i
=
q
j
q_i=q_j
qi?=qj?时的系数
c
i
j
c_ij
ci?j才不为零,也就是强迫系数
c
i
j
c_ij
ci?j在第i和j个数据点来自同一个子空间时才不为零。
也就是说,先前谱聚类的结果合并到自表达模型中可以提供对自表达矩阵C的监督。
3.3 监督特征提取模块
谱聚类得到的结果同样可以用于监督特征提取。结果是一个n维向量,暗含着谱聚类得到了n个不同的子空间的事实。在p维的特征提取模块输出后接了一个三层的全连接层用于任意函数逼近器来进行分类,输出也是n维,从而与谱聚类的结果进行比较。
设
y
y
y为FC层的n维输出,其中
y
∈
R
n
y∈ \mathbb R^n
y∈Rn,为了利用自我监督信息来训练卷积编码器,交叉熵损失+中心损失(CEC)定义如下: 前一项是交叉熵损失,后一项是压缩类内差异的中心损失。
其中
y
~
j
\tilde y_j
y~?j?是softmax标准化后的
y
j
y_j
yj?,
μ
π
(
y
j
)
\mu_{\pi (y_j)}
μπ(yj?)?是
y
j
y_j
yj?对应的聚类中心,
π
(
y
j
)
π(y_j)
π(yj?)是从谱聚类得到的输出中
y
j
y_j
yj?的index(也就是谱聚类的分类结果)。
注意到谱聚类的输出仅为输入数据提供伪标签。因此,从神经网得到的分类标签的指派顺序和谱聚类的并不一样。为了解决这个问题,可以使用匈牙利算法(munkres)对伪标签进行排列得到两个输出之间的最佳匹配,然后再将它们输入到具有交叉熵损失的自监督模块中。
3.4 训练S2ConvSCN
总损失函数即: 第一项为encoder到decoder的重构损失,第二、三项为
?
1
\ell_1
?1?正则化(后面还弄了一个
?
2
\ell_2
?2?的版本但效果似乎不如
?
1
\ell_1
?1?正则化)和自表达的二范数,第四项为监督自表达模块的
∣
∣
C
∣
∣
Q
||C||_Q
∣∣C∣∣Q?,第五项为监督特征提取模块的CEC。
注释:在总成本函数中,如果我们设置
γ
3
=
γ
4
=
0
γ_3=γ_4=0
γ3?=γ4?=0,那么两个自监督将消失,我们的S2ConvSCN将退化为DSCNet。
似乎需要的调参很复杂,且容易训训练崩不收敛,下面给出了解决办法,在实验部分中则说明了各个
L
\mathcal L
L的重要性
为了训练S2ConvSCN,我们提出了两阶段策略: a)对叠加卷积层进行预训练,以提供S2ConvSCN的初始化; b) 利用谱聚类提供的自监督信息对整个网络进行训练。
a)卷积层的预训练
只使用
L
0
\mathcal L_0
L0?进行训练,把FC层权重置零,
C
=
I
C=I
C=I,自监督不工作
b)整个网络训练
预训练之后,对于给定特定聚类结果
Q
Q
Q,我们更新S2ConvSCN中
T
0
T_0
T0?个epoch的其他参数,然后执行谱聚类来更新
Q
Q
Q。如下:
|