首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >入门 | 半监督学习在图像分类上的基本工作方式

入门 | 半监督学习在图像分类上的基本工作方式

作者头像
机器之心
发布2018-05-11 11:24:04
1.6K0
发布2018-05-11 11:24:04
举报
文章被收录于专栏:机器之心机器之心

选自thecuriousaicompany

机器之心编译

参与:陈韵竹、刘晓坤

本文回顾了一些常见的半监督算法,随后介绍了作者在 NIPS 2017 展示的 Mean Teacher 项目。

  • Mean Teacher 的论文地址:https://arxiv.org/abs/1703.01780
  • Mean Teacher 的 GitHub 地址:https://github.com/CuriousAI/mean-teacher/

半监督学习即将迎来黄金时代。

深度学习模型已在多年来展示了超越人类能力的表现。但是,使用标准监督技术进行训练需要大量正确标记的数据。若有能力使用未标记的数据,将为许多新的应用打开大门,例如医疗成像、气候建模、自动驾驶中的感知等。

幸运的是,在今年,半监督图像分类方法已经改进,从而使用未标记的数据变得实际可行。另外,其中最好的方法出乎意料地简单。

今年,半监督图像分类的准确率有了飞跃性的提高。以下是 4000-label CIFAR-10 中的当前最佳结果的更新:

  • (测试误差:31.9)In 2012 :https://arxiv.org/abs/1206.6407
  • (测试误差:20.4)In 2015 :https://arxiv.org/abs/1507.02672
  • (测试误差:15.6)In 2016 :https://arxiv.org/abs/1606.03498
  • (测试误差:12.4)In 2017:Π model :https://arxiv.org/abs/1610.02242
  • (测试误差:12.2)In 2017:Temporal ensembling :https://arxiv.org/abs/1610.02242
  • (测试误差:10.6)In 2017:Virtual Adversarial Training + EntMin :https://arxiv.org/abs/1704.03976
  • (测试误差:10)In 2017:CT-GAN :https://openreview.net/forum?id=SJx9GQb0-
  • (测试误差:6.3)In 2017:Mean Teacher + ResNet :https://arxiv.org/abs/1703.01780
  • (测试误差:2.9)In 2017:All labels, state of the art :https://arxiv.org/abs/1705.07485

实际上,所有新方法都使用了相同的基础:他们使用模型本身创建代理标签,并将其作为除真实标签之外的目标。让我们看看它是如何工作的。

举个例子,我们的任务是识别猫、狗和马的图像。因此,输入如下图像:

输出则是一个预测,表示为本图像从属于每个类别的概率。例如,分类器可能会给出这样一个预测:这个图片有 50% 的概率是猫,30% 的概率是狗,20% 的概率是马。我们可以在一个三角形中将其可视化表示:

而我们希望分类器通过训练,能将上述图像高概率地标记为狗:

如果我们知道图像的标签,我们可以使用标准的监督学习技术来训练分类器。我们可以想象,这个真实的标签将预测拉向其方向,就像这样:

但是,如果我们的训练集只包含少数标签呢?我们不希望再标记更多的图像(或者,在添加标签后,我们可能还留下了很多无标签的图片,而我们想要使用这些图片)。如果不知道图像的真实标签,我们要如何训练分类器呢?预测的方向应该朝何方向靠近?

我们需要一个标签的代理,它可以将预测拉向一个有用的方向。代理不需要成为标签的完全准确近似。只要能将预测拉向正确的大方向,就能够帮助模型训练。那么,什么是一个好的代理?

也许,我们能想到的最简单的代理,就是将预测拉向最邻近的类别,无论是否正确。这正是 Entropy Minimization 所做的:

乍一看这似乎没什么用。毕竟,我们并未改变实际的预测类别,只是预测的自信度提高了(例如,从 70% 可能是狗,提升为 75% 可能是狗)。但是,如果我们考虑图像的全部特征,这一方案是有用的。我们鼓励分类器学习这样的特征——它们不仅能解释标记图片的类别,而且能解释未标记图片的类别。因此,对某些类别的强预测因素的特征将会变得更强,而给出混合预测的特征将会被逐渐弱化。

最近的新想法是让模型做出两个预测。让我们把他们称为学生和教师(其中之一或两者可能不同于原始预测)。然后,我们可以训练学生去预测教师。

只有学生能向教师学到有用的东西,才有意义。为了做到这一点,我们可以让学生的任务变难,或者让教师的任务变简单。

我们可以通过某种方式给输入加上扰动,从而使得任务更难完成:

我们可以根据扰动的输入进行预测,并训练它模拟无扰动的预测。这就是 Γ version of Ladder Networks」(https://arxiv.org/abs/1507.02672)所做的:

因此,网络学会给出与扰动无关的预测。从另一个角度看,它强化了对噪声鲁棒的特征,除去了其他特征。如果我们同时使用带标签的信息训练监督学习模型,我们会找到更好的特征,即它们既可以预测标签又对噪声鲁棒。两个任务之间的相互作用共同提高了两者的准确性。

通过仔细选择扰动类型,我们能更进一步。一方面,我们可以为网络添加各种有用的不变量来训练。例如,如果知道图像的颜色并非有用的指标,我们可以用随机颜色抖动来增强图像训练。最近有几篇论文(https://openreview.net/forum?id=rkpoTaxA-)就使用了这种技术进行区域自适应(domain adaptation)。例如,在只看过手写数字标签后,能成功对街景数字进行分类。

我们也可以调整扰动,使其对特定的分类器具有特别的挑战性。虚拟对抗训练(Virtual Adversarial Training)使用反向传播和梯度上升来将噪声样本作为对抗样本(即,与原始十分接近的一个输入,但是分类器对此给出了一个非常不同的预测)。然后,我们可以让无扰动的预测成为基于对抗样本预测的学习目标。

除了让学生的任务更难,我们也可以使教师的任务变得简单。假定预测由其他预测的集合进行补充。每个预测都以自己的方式工作,因此不够准确。所以,如果我们将它们的结果结合起来,就可以提高准确性,减少每个预测的负担。

首先需要考虑的是不同噪声实例的集合。无扰动预测通常不是一个很好的预测,因为噪声可以将预测变得更好。一个更具鲁棒性的预测,是对图像的所有噪声版本的平均预测。显然,我们无法做到这一点。但是,我们可以对噪声采样,这几乎能达到同样好的效果。因此,与其让无扰动预测拉动扰动预测,不如让两个扰动预测相互牵拉。在 Pseudo-Ensemble Agreement (2014)、the Π model (2017)、以及 CT-GAN (2017)(其中混合了 guess-what)中,就运用了这种方法:

我们其实还可以改进。除了噪声集合,我们还能使用模型集合。单个训练中的具体模型会对许多图像做出不准确的预测。如果我们有很多模型,我们可以结合它们的预测,并得到一个更好的预测。但是事实上,我们并不想训练很多模型,那样会让训练变慢。那么,应该怎么办?

假设我们在每个训练步骤都保存了模型参数,然后,我们可以使用模型的不同版本进行预测,并结合这些预测结果。最新版本是最好的,但是在一些情况下,最新模型也会犯错,而早期的模型却能给出正确结果。因此,一个加权平均(其中最新版本权重较大)的模型应该能工作得较好。

当然,这种方法十分昂贵。那该怎么办呢?不必保存模型的不同版本,我们可以保存一个平均模型,这就是 Temporal Ensembling (2017) a 和 Mean Teacher (2017) 所做的工作,不过它们的工作方式不同。将这一点和以前的思想相结合,我们可以得到一个带噪声的教师预测的伪集合,以拉动带噪声的学生预测:

Temporal Ensembling 和 Mean Teacher 都使用指数移动平均进行训练。其区别在于,Temporal Ensembling 对预测值进行平均(分别对每个图像),而 Mean Teacher 对模型权重进行平均,又名 Polyak-averaging。Mean Teacher 在大多数情况下表现较好:无论数据集大小如何,它都可以工作;有时候,仅需较少的标签就能达到同样的精确度。

在我们的论文中,我们展示了 Mean Teacher(可能还有其他类似的方法)也适用于更加大型且更实际的数据集。以下是在 ImageNet 中使用 10% 的标签的顶尖技术进展:

  • (top-5 验证误差:35.4)In 2016: Variational Auto-Encoder :https://arxiv.org/abs/1609.08976
  • (top-5 验证误差:9.1)In 2017: Mean Teacher + ResNet:https://arxiv.org/abs/1703.01780
  • (top-5 验证误差:3.8)All labels, state of the art :https://arxiv.org/abs/1709.01507

这些方法也非常容易实现和训练。例如,Mean Teacher 包含了以下步骤:

1. 采用现有的监督学习模型。

2. 将其复制一份。让我们将原始的称为「学生」,复制品称为「教师」。

3. 在每个训练步骤中,让「教师」和「学生」一起评估一个小批量。在两个预测之间添加一致性代价函数(例如交叉熵)。

4. 在每个训练步骤中,只用优化器训练「学生」权重。

5. 在每个训练步骤后,将「教师」权重更新为「学生」权重的指数移动平均值。

如果你想试试看,可以参考 Mean Teacher 的 GitHub。

原文链接:https://thecuriousaicompany.com/mean-teacher/

本文为机器之心编译,转载请联系本公众号获得授权。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档