Semi-Supervised Learning With Deep Embedded Clustering for Image Classification and Segmentation

Abstract

深度神经网络通常需要很大的有标签的数据集。半监督方法通过使用一个小的有标签的数据集和一个大的无标签的数据集。文中我们结合基于深度卷积神经网络的有监督方法和基于概率分布和网络学习到的特征表达进行深层嵌入式聚类的方法来实现半监督学习。
提出的模型SSLDEC(基于深层嵌入式聚类的半监督学习算法)通过选择性地使用有标签和无标签的数据来计算预测的目标分布。
该方法需要很少的超参数,所以不需要大型的验证集,解决了半监督学习方法的一个主要问题。并且可以灵活应用于许多深度神经网络。

Related work

早期半监督方法中有只用深层网络形成预测作为标签,使用无标签的数据集来重新训练网络。另一种半监督方法“multi-view”训练技术,训练多重模型形成数据的不同的表达,例如训练包含3个不同的模型,在相同的数据集上使用bootstrap采样作为训练数据。在模型的有监督训练后,只有当其他两个模型在其标签上达成一致时,才会将未标记的数据点添加到一个模型的训练集中。
另一种半监督的方法为“self ensembling”,这些算法学习利用数据增强或模型设计中由噪声或随机性引起的随机扰动的鲁棒性。模型使用额外的损失项来连续正则化。

Methods

A. SEMI-SUPERVISED LEARNING WITH DEEP EMBEDDED CLUSTERING
在分类任务中,卷积神经网络的目标是根据一个有标记的数据集得到预测。学习映射中,算法通过最大池化和全卷积层中,将数据空间X的维度减到一个更小的空间。CNN总结数据中有用的信息,每层可以被解释为数据的特征嵌入。

聚类算法,目的是将一个未标记数据集分为k类,使用均值表示。和有监督的CNNs相比,聚类算法的优点在于可以直接从数据产生聚类,不需要标签,但是根据定义,维度会带来不利影响。因此,这些算法在数据空间减少的情况下表现的更好。

本文的主要想法是结合两种方法,利用深度CNN大容量的特点和聚类算法不用标签学习的特点,避开上述和聚类算法有关的问题。CNN学习数据X和低维嵌入Z之间的映射关系,聚类算法从低维嵌入将数据点聚集成不同类。而且这两个任务,学习嵌入和聚类,是同时进行的。


算法如下:我们构建一个CNN,最后一层是没有softmax激活的全连接层,units数量和数据类别一样。然后我们在最后一层全连接层上加一个和t-SNE算法相似的聚类层。这个层用一个t-分布的核来测量嵌入和聚类分布均值的相似性

在方程中可以被看作是一个数据点属于类别的可能性。和最后一层(通常是dense层相比)这层从倒数第二层的嵌入学习不同聚类的均值和重心来表示每个类。另一方面,一个密集层表示一个嵌入和预测之间的映射,参数是映射的权重,选择我t-SNE类型算法作为聚类层是因为t-SNE使用一个优化的梯度下降算法,因此,相同的梯度下降算法可以用于训练CNN和最后一层。超参数\alpha 选为1。

模型在每个epoch和self-ensembling共享相似性。在每个epoch,我们基于网络的预测计算一个目标分布,然后用他减少和另一个相同输入不同数据增强方式的预测的差别。网络的dropout用在模型中提高网络参数优化的连续性和鲁棒性。我们模型和a模型主要区别在于我们在网络的倒数第二层加入了一个聚类层。结果是当a模型两次以相同的方式评估网络的输出,我们使用不同的目标分布目的是产生更精确的聚类。

THE TRAINING ALGORITHM
训练SSLDEC,我们需要定义一个对为标记数据点目标分布,与DEC相似https://www.jianshu.com/p/5c10ca2ec5c6


算法1展示了我们的训练方法,使用有标签的数据预训练100个epochs,之后使用有标记和无标记的数据迭代做预测,通过方程计算目标分布,选择P的一个平衡子集,训练模型直到达到一个准确的条件。平衡子集P'的选择基于算法的预测。我们选择相同数量的样本,其神经网络给出的预测是每个标签之一。 因此,所选标签的总数取决于其预测是一个特定标签的样本的最小值。 该算法使用标准反向传播来计算聚类层以及CNN的参数和梯度。 对于聚类层,与聚类中心μ和嵌入z相关联的损失L的梯度遵循以下等式:

模型的训练分成两部分,首先仅使用可利用的有标签数据训练,尽管仅使用相对较小的标记数据集,但这部分对结果有显着影响,因为等式(2)中定义的目标分布基于此预训练的输出,因此需要尽可能准确。在预训练中,CNN的损失函数是q和从有标记数据集中获得的经验分布的KL散度。
聚类层的重心,随机初始化,和其余算法一起训练,我们使用每个数据点训练CNN,这部分,我们重复两个训练步骤的循环,第一步用有标记的数据和无标签的数据(用目标分布作为真实标签),第二步仅用有标签的数据直到准确率达到一定值。在训练过程中使用目标分布,我们随机选择一个平衡的数据的子集避免某一类扭曲嵌入空间。
在这里解释第二步仅使用有标签数据训练的逻辑。在两步训练过程中,算法产生错误同时纠正他们。在训练的第二部分,即使真正的标签可用,也使用伪标签训练,因此它容易出错。如果错误分类率太高,有的有正确标签的数据也会被错误分类。仅使用有标签的数据重新训练该网络可以纠正这些分类错误,算法1中的结合可以达到一个更好的结果。所以我们在使用无标签的数据每训练一个epoch,都会使用有标签的数据重新训练直到达到一个准确率,我们选择是有标签的数据准确率百分之百分。

EXPERIMENTS

为了评估提出的方法的性能(SSLDEC),我们在标准实验条件下进行了几个实验:
我们使用half moon数据进行说明,将MNIST和SVHN用作标准图像分类基准,将iSeg用作医学图像分割任务。
A. 分类网络结构
包含9层卷积层,跟有两个密集层,和聚类层,每个卷积层和全连接层有BN单元和ELU激活函数,使用L2正则化在每个卷积/密集层。



B. 分割网络结构



C. 半月
在这个测试中,我们使用python软件包Sklearn [36]从两个半月分布中得到1000个点,噪声标准偏差为0.1。 我们从每个半月中随机选择4个点作为标记数据,并将其余点视为未标记数据。 仅在本节中,我们的CNN由4个具有RELU激活功能的10个密集层组成,其后是一个大小为2的密集层和一个聚类层。这个简单的实验意味着所提出的半监督方法与有限数据的仅受监督的训练相比有显著优势。

DISCUSSION

我们提出了一种新颖的半监督学习方法,利用强大的深嵌入聚类方法,可以很容易地与任何神经网络一起使用。 该方法使用分类网络对小型2D图像的分类以及使用密集连接的完全卷积神经网络的3D医学图像的精确体素分割实现了竞争性结果。
该方法有可能在数据标记昂贵且耗时的区域(例如医学图像分割)中增强深度学习的应用。它可以减少数据样本量以及专家用于标记样本或体素以生成训练数据所需的时间

———如何将深度学习的方法与深度嵌入式聚类方法相结合?

你可能感兴趣的:(Semi-Supervised Learning With Deep Embedded Clustering for Image Classification and Segmentation)