《Deep Clustering for Unsupervised Learning of Visual Features》
论文地址:https://arxiv.org/pdf/1807.05520.pdf
一、简介
预训练卷积神经网络已经成为许多计算机视觉的基础部件,其能够产生良好的通用特征来改善模型在有限训练集上的泛化能力。ImageNet \text{ImageNet}ImageNet是一个大规模的全监督数据集,用于卷积神经网络的预训练。然而,一些研究表明在ImageNet \text{ImageNet}ImageNet上的state-of-the-art模型被极大的低估,基本上没有什么问题未被解决。以今天的标准来看ImageNet \text{ImageNet}ImageNet的规模相对较小,仅包含了一百万张特定领域的图片。一个天然的方向是构建一个更大且更多样的数据集,但是需要大量的人工标注。因此,需要一个能够在互联网规模数据集上进行无监督训练的方法。
无监督学习已经被广泛的研究,且聚类、降维或者密度估计等算法也经常被应用于计算机视觉。一些研究已经证明,可以将基于密度估计的方法或者降维方法应用在深度模型上,并获得良好的视觉通用特征。尽管聚类算法在图像分类任务上取得了初步的成功,但还没有人在卷积神经网络上进行大规模端到端训练。一个主要的问题是,聚类算法是为固定特征上的线性模型设计的,很难在聚类的同时学习这些特征。例如,使用K-Means \text{K-Means}K-Means来学习卷积神经网络将会导致平凡解,即特征全为0。
本文提出了一种用于大规模、端到端训练卷积神经网络的新颖聚类算法。使用这个聚类框架能够获取更好的通用视觉特征。整个方法如图1所示,其会在图像聚类和使用卷积神经网络预测簇分配间交替进行来更新参数。简单起见,本文仅专注研究K-Means \text{K-Means}K-Means,但其他聚类方法也可以使用。尽管方法简单,本文的方法在ImageNet \text{ImageNet}ImageNet分类和迁移任务上都比先前的无监督方法更好。
最后,本文通过修改实验中的训练集和网络结构等协议来验证整个框架的鲁棒性。实验结果显示,本文的方法对网络结构是具有鲁棒性的。
二、监督训练
现代计算机视觉都是基于统计学习的方法,需要好的图像特征。因此,卷积神经网络是将原始图像映射成固定维度向量的流行选择。定义f θ f_\theta f θ为卷积神经网络映射,θ \theta θ是模型参数集合。本文应用f θ f_\theta f θ将图像映射成特征向量。给定一个大小为N N N的图像训练集X = { x 1 , x 2 , ... , x N } X={x_1,x_2,\dots,x_N}X ={x 1 ,x 2 ,...,x N },期望寻找到最优参数θ ∗ \theta^θ∗,使f θ ∗ f_{\theta^}f θ∗能够产生良好的通用特征。
每个图片x n x_n x n 关联一个介于{ 0 , 1 } k {0,1}^k {0 ,1 }k的标签y n y_n y n 。通常来说,会使用监督学习的方式来预测图片属于预定义k k k个类别中的某一类别,从而获得最优参数θ ∗ \theta^*θ∗。在特征映射函数f θ ( x n ) f_\theta(x_n)f θ(x n )的基础上添加一个参数化分类器g W g_W g W 来预测正确标签。其中,分类器参数W W W和映射函数参数θ \theta θ通过下面的损失函数来优化
min θ , W 1 N ∑ n = 1 N l ( g W ( f θ ( x n ) ) , y n ) (1) \mathop{\text{min}}{\theta,W}\frac{1}{N}\sum{n=1}^N\mathcal{l}(g_W(f_\theta(x_n)),y_n) \tag{1}min θ,W N 1 n =1 ∑N l (g W (f θ(x n )),y n )(1 )
其中,l l l是多项式logistic \text{logistic}logistic损失函数。
三、通过聚类进行无监督学习
不进行任何学习,直接从高斯分布中采样θ \theta θ,f θ f_\theta f θ并不能产生良好的特征。然而,这些随机特征在标准的迁移任务中高于平均水平。例如,在一个随机初始化AlexNet \text{AlexNet}AlexNet后拼接多层感知机能够在ImageNet \text{ImageNet}ImageNet上实现12%的准确率。随机卷积神经网络的良好表现与卷积结构密切相关,因为其对输入信号有很强的先验。本文的想法是利用弱监督信号来引导卷积神经网络的判别能力。因此,本方法对卷积神经网络的输出进行聚类,然后使用聚类的簇分配来优化等式(1)。
研究表明聚类算法的选择并不关键。因此,本文选择标准聚类算法K-Means \text{K-Means}K-Means。本文使用K-Means \text{K-Means}K-Means聚类卷积神经网络的输出特征f θ ( x n ) f_\theta(x_n)f θ(x n )。更准确的说,通过求解下面的公式来联合学习簇中心矩阵C ∈ R d × k C\in\mathbb{R}^{d\times k}C ∈R d ×k,每个图片n n n会被分配簇y n y_n y n :
min C ∈ R d × k 1 N ∑ n = 1 N min y n ∈ { 0 , 1 } k ∥ f θ ( x n ) − C y n ∥ 2 2 such that y n ⊤ 1 k = 1 (2) \mathop{\text{min}}{C\in\mathbb{R}^{d\times k}}\frac{1}{N}\sum{n=1}^N\mathop{\text{min}}{y_n\in{0,1}^k}\parallel f\theta(x_n)-Cy_n\parallel_2^2\;\text{such that}\quad y_n^\top1_k=1\tag{2}min C ∈R d ×k N 1 n =1 ∑N min y n ∈{0 ,1 }k ∥f θ(x n )−C y n ∥2 2 such that y n ⊤1 k =1 (2 )
求解上面的公式能够得到最优簇分配( y n ∗ ) n ≤ N (y_n^)_{n\leq N}(y n ∗)n ≤N 和簇中心矩阵C ∗ C^C ∗。这个簇分配后续被用作伪标签,而簇中心矩阵并没有被使用。
总体来说,DeepCluster \text{DeepCluster}DeepCluster交替使用等式( 2 ) (2)(2 )进行聚类来产生伪标签,并使用等式( 1 ) (1)(1 )来预测伪标签,用于更新卷积神经网络的参数。 但是,这种交替可能会导致平凡解。
四、避免平凡解
平凡解不仅出现在无监督神经网络学习中,而是对于任何联合学习判别分类器和标签的方法。即使只使用线性模型,判别聚类的方法也存在这个问题。常见的解决方案是,对每个簇中的最小样本数量进行限制和惩罚。但是,这种方法需要在整个数据集上计算,不适用于大规模数据集上的卷积神经网络。本小节会给出一个简单且可伸缩的变通方法。
对于一个学习类别间决策边界的模型,一个最优的决策边界是将所有输入分配至单个簇中。导致这种问题的原因是,缺乏一个机制来防止空簇的出现。一种常见的技巧是在K-Means \text{K-Means}K-Means阶段自动重新分配簇。具体来说,当一个簇为空时,随机选择一个非空簇,并将簇中心添加一个随机扰动作为空簇的新中心。然后,将属于非空簇的样本重新分配至两个簇。
在一个极端化的场景中,除一个簇外,所有簇都只有一个实例。此时,最小化等式( 1 ) (1)(1 )将导致参数平凡化,即卷积神经网络会无视输入并产生相同的输出。这个问题在类别高度不平衡的监督图像分类中也会出现。解决这个问题的策略是基于类别的均匀分配进行图像采样。这相当于将等式( 1 ) (1)(1 )中某个输入对损失函数的贡献权重设置为其分配簇尺寸大小的倒数。
Original: https://blog.csdn.net/bqw18744018044/article/details/123648184
Author: BQW_
Title: 【计算机视觉】【聚类】DeepCluster:用于视觉特征无监督学习的深度聚类算法