热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

谷歌大脑联手Hinton提出SimCLR新框架,疯狂提升自监督学习性能

BERT和T5之类的自然语言处理模型不断“屠榜xxx”的新闻,恐怕我们都已经看的麻木了。实际上,自监督学习并没有那么好,为什么ÿ

BERT和T5之类的自然语言处理模型不断“屠榜xxx”的新闻,恐怕我们都已经看的麻木了。

实际上,自监督学习并没有那么好,为什么?

作为一种特殊的无监督学习方式,自监督学习是通过从未标记数据集中创建替代标签而将无监督学习问题转换为有监督问题。

然而,当前用于图像数据的自监督技术非常复杂,需要对体系结构或训练过程进行重大修改。

在“视觉表示对比学习的简单框架”中,Google概述了一种方法,该方法不仅可以简化而且可以改进以前在图像上进行自监督表示学习的方法。其提出的名为SimCLR的框架,极大地提高了自监督和半监督学习的技术水平,并以有限的类别标签数据达到了ImageNet图像分类的SOTA效果。

方法的简单性意味着可以轻松地将其合并到现有的有监督学习管道中。


SimCLR:一个简单的视觉表示对比学习框架

SimCLR是一个简单的视觉表示对比学习框架,它不仅比以前的工作更出色,而且也更简单,既不需要专门的架构,也不需要储存库。

SimCLR首先学习未标记数据集上图像的一般表示,然后可以使用少量标记图像对其进行微调,以实现给定分类任务的良好性能。通过采用一种称为对比学习的方法,可以通过同时最大化同一图像的不同变换视图之间的一致性以及最小化不同图像的变换视图之间的一致性来学习通用表示。利用这一对比目标更新神经网络的参数,使得相应视图的表示相互“吸引”,而非对应视图的表示相互“排斥”。

首先,SimCLR从原始数据集中随机绘制示例,并使用简单增强(随机裁剪、随机颜色失真和高斯模糊)的组合将每个示例转换两次,创建两组相应的视图。

对单个图像进行这些简单转换的基本原理是:


  • 我们要鼓励转换后相同图像的“一致”表示;

  • 由于预训练数据缺少标签,我们无法预先知道哪个图像包含哪个对象;

  • 我们发现这些简单的转换足以使神经网络学习良好的表示,尽管也可以采用更复杂的转换策略。

然后,SimCLR使用基于ResNet架构的卷积神经网络变量计算图像表示。接着,SimCLR使用完全连接的网络(即MLP)计算图像表示的非线性投影,这会放大不变特征并使网络识别同一图像的不同变换的能力最大化。为了最小化对比目标的损失函数,我们使用随机梯度下降来更新CNN和MLP。在对未标记的图像进行预训练之后,我们可以直接使用CNN的输出作为图像的表示,也可以使用标记的图像对其进行微调,以实现下游任务的良好性能。

上图为SimCLR框架演示。同时训练CNN和MLP层以产生对于同一图像的增强版本相似的投影,而对于不同图像则产生不同的投影,即使这些图像是同一类对象。经过训练的模型不仅可以很好地识别同一张图片的不同变换,而且可以学习相似概念的表示(例如椅子与狗),随后可以通过微调将其与标签相关联。

框架简介

为了理解什么可以促进良好的对比表示学习,我们系统地研究了框架的主要组成部分,并表明:


  • 在定义产生有效表示的对比预测任务时,多个数据增强操作的组成至关重要。此外,与监督学习相比,无监督的对比学习受益于更强大的数据增强。

  • 在表示和对比损失之间引入可学习的非线性变换,可以大大提高学习的表示的质量。

  • 具有对比交叉熵损失(contrastive cross entropy loss)的表示学习得益于规范化嵌入和合适的调整参数。

  • 与有监督的对照组相比,对比学习受益于较大的批量和较长的训练。与监督学习一样,对比学习也得益于更深更广的网络。

我们结合这些发现,在ImageNet ILSVRC-2012上实现了自监督和半监督学习的最新技术。在线性评估方案下,SimCLR的top-1准确性达到76.5%,相对于之前的最新技术水平有7%的相对提高。如果仅使用1%的ImageNet标签进行微调,SimCLR的top-5准确性将达到85.8%,相对提高10%。当在其他自然图像分类数据集上进行微调时,SimCLR在12个数据集中的10个数据集上的表现与强监督基线相当或更优。


SimCLR为何能有这么好的效果?

尽管SimCLR 很简单,但是它极大地提高了 ImageNet 上自监督和半监督学习的SOTA效果。基于 SimCLR 学习的自监督表示学习训练的线性分类器可以达到76.5% / 93.2%的 top-1 / top-5的准确率,而之前的最好的模型准确率为71.5% / 90.1%。与较小的的监督式学习模型ResNet-50性能相当,如下图所示

基于不同自监督方法训练的线性分类器的 ImageNet top-1精度(在 ImageNet 上预先训练)。灰色十字表示有监督的 ResNet-50

当只对1% 的标签进行微调时,SimCLR 达到了63.0% / 85.8% 的 top-1 / top-5准确率,而之前表现最好的(CPC v2)的准确率为52.7% / 77.9% 。令人惊讶的是,当对100% 的标签进行微调时,经过预先训练的SimCLR模型仍然可以明显优于从头开始训练的有监督基线模型,例如,基于SimCLR预先训练的 ResNet-50(4x)经过微调 ,在训练30个epoch时达到了80.1%的top-1准确率,而从头开始训练的模型在90个epoch才能到78.4%。

与以前的方法相比,SimCLR 的改进并不是因为某个单独的设计,而是它们的组合

多种图像转换组合对生成对比视图是至关重要的

由于 SimCLR 通过最大化同一图像的不同视图的一致性来学习表示,因此不能只用单一的模式进行图像扩增,比如颜色直方图,组合各种图像变换方法很重要。为了更好地理解这一点,我们探索了不同类型的转换,如下图所示

我们发现,虽然没有一个单独的转换可以产生最佳的表示,但是随机剪裁和随机颜色失真非常有效,虽然裁剪和色彩失真本身都不会提高太多性能,但组合这两种转换可以达到SOTA效果。

为什么随机裁剪和随机颜色失真相结合是很重要?考虑一下在同一图像的两个剪裁视图之间最大化一致性的过程。自然包含了两种类型的预测任务: 左侧的情况要从全局预测局部视图,而右侧的都要预测近邻视图。

同一图像的不同剪裁视图在色彩空间中看起来非常相似, 如果颜色保持完整,模型可以通过匹配颜色直方图来最大化视图之间的一致性。在这种情况下,模型可能只关注颜色而忽略其他更通用的特性。通过独立地扭曲每种视图的颜色,浅层的特征将被去除,模型只能用可概括的颜色特征来表示一致性。

非线性投影很重要

在 SimCLR 中,在计算对比学习目标的损失函数之前,采用基于 MLP的非线性投影,有助于识别每个输入图像的不变特征,最大限度地提高网络识别同一图像不同变换的能力。在我们的实验中,我们发现使用非线性投影有助于提高表示的质量,将一个SimCLR学习到的表示输入给线性分类器,效果提升达到10%以上。

有趣的是,MLP 投影前的表示在线性分类器中反而比投影后的表现更好,而我们对比目标的损失函数是基于投影后的表示,我们猜想我们的目标会导致网络的最后一层(可能对下游任务有用的)特征不可变,而使用额外的非线性投影模块时,投影之前的表示可以保留更多有用的图像信息。

模型扩展可以显著提高性能

我们发现在同一批次中处理更多样本,使用更大的网络,以及训练更长的时间会带来显着的性能提升。尽管这些手段显而易见,但对于SimCLR而言,这些改进似乎比对监督学习的改进大。例如,我们观察到有监督的ResNet的性能在ImageNet上训练90到300个epoch会达到峰值,但是SimCLR即使经过800个epoch仍可以继续改善。当我们增加网络的深度或宽度时,也是这种情况– SimCLR的性能持续增长,而对于有监督模型则会停滞。


无监督学习已经超越有监督学习?

我们来看一些相关的报道。

“如今,在 ImageNet 上的图像识别准确率的性能提升每次通常只有零点几个百分点,而来自图灵奖获得者 Geoffrey Hinton 等谷歌研究者的最新研究一次就把无监督学习的指标提升了 7-10%,甚至可以媲美有监督学习的效果。”

在 ImageNet 上,SimCLR 方法训练出的线性分类器与有监督的 ResNet-50 性能相匹配,达到了 76.5% 的 top-1 准确率。”

媒体报道给我的感觉是无监督能够做到跟有监督差不多好了,情况果真如此乐观了吗?我仔细看了一下论文。

SimCLR在无监督情况下top-1的accuracy是这么得到的:

1、backbone:ResNet-50(4x),即网络宽度是ResNet-50的4倍;

2、测试方式:linear evaluation protocol, where a linear classifier is trained on top of the frozen base network, and test accuracy is used as a proxy for representation quality,也就是说最后一层linear classifier其实是supervised learning训练得到的

即媒体说的SimCLR可以媲美有监督的ResNet-50,有两个隐含条件:

1、网络参数更多;

2、在SimCLR无监督学习得到的网络之上使用有监督学习的方式训练了一个linear classifier。

SimCLR的效果当然很好,但是无监督跟有监督的差距还是蛮大的,情况没那么乐观。为了更直观地比较无监督和有监督,其实可以这样做:

1、使用相同网络;

2、直接用无监督学习得到的网络作为一个特征提取器,然后在验证集/测试集上通过检索的方式来获取类别,得到分类accuracy。

但是从特征提取器的角度来说,无监督学习的确取得了长足的进步,跟有监督学习的差距越来越小。

 

原文:https://zhuanlan.zhihu.com/p/107269105 侵删


推荐阅读
  • 2017年人工智能领域的十大里程碑事件回顾
    随着2018年的临近,我们一同回顾过去一年中人工智能领域的重要进展。这一年,无论是政策层面的支持,还是技术上的突破,都显示了人工智能发展的迅猛势头。以下是精选的2017年人工智能领域最具影响力的事件。 ... [详细]
  • 本文探讨了图像标签的多种分类场景及其在以图搜图技术中的应用,涵盖了从基础理论到实际项目实施的全面解析。 ... [详细]
  • 视觉图像的生成机制与英文术语解析
    近期,Google Brain、牛津大学和清华大学等多家研究机构相继发布了关于多层感知机(MLP)在视觉图像分类中的应用成果。这些研究深入探讨了MLP在视觉任务中的工作机制,并解析了相关技术术语,为理解视觉图像生成提供了新的视角和方法。 ... [详细]
  • 吴恩达推出TensorFlow实践课程,Python基础即可入门,四个月掌握核心技能
    量子位报道,deeplearning.ai最新发布了TensorFlow实践课程,适合希望使用TensorFlow开发AI应用的学习者。该课程涵盖机器学习模型构建、图像识别、自然语言处理及时间序列预测等多个方面。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 回顾与学习是进步的阶梯。再次审视卷积神经网络(CNNs),我对之前不甚明了的概念有了更深的理解。本文旨在分享这些新的见解,并探讨CNNs在图像识别和自然语言处理等领域中的实际应用。 ... [详细]
  • 本文详细介绍了 TensorFlow 的入门实践,特别是使用 MNIST 数据集进行数字识别的项目。文章首先解析了项目文件结构,并解释了各部分的作用,随后逐步讲解了如何通过 TensorFlow 实现基本的神经网络模型。 ... [详细]
  • 本文介绍了一个使用Keras框架构建的卷积神经网络(CNN)实例,主要利用了Keras提供的MNIST数据集以及相关的层,如Dense、Dropout、Activation等,构建了一个具有两层卷积和两层全连接层的CNN模型。 ... [详细]
  • 《计算机视觉:算法与应用》第二版初稿上线,全面更新迎接未来
    经典计算机视觉教材《计算机视觉:算法与应用》迎来了其第二版,现已开放初稿下载。本书由Facebook研究科学家Richard Szeliski撰写,自2010年首版以来,一直是该领域的标准参考书。 ... [详细]
  • 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
    目录一、2020数学建模美赛C题简介需求评价内容提供数据二、解题思路三、LDA简介四、代码实现1.数据预处理1.1剔除无用信息1.1.1剔除掉不需要的列1.1.2找出无效评论并剔除 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
author-avatar
多米音乐_34363545
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有