热门标签 | 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 侵删


推荐阅读
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • 在尝试将 mysqldump 文件加载到新的 MySQL 服务器时,遇到因使用保留关键字 'table' 导致的语法错误。 ... [详细]
  • 使用HTML和JavaScript实现视频截图功能
    本文介绍了如何利用HTML和JavaScript实现从远程MP4、本地摄像头及本地上传的MP4文件中截取视频帧,并展示了具体的实现步骤和示例代码。 ... [详细]
  • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • 本文提出了一种基于栈结构的高效四则运算表达式求值方法。该方法能够处理包含加、减、乘、除运算符以及十进制整数和小括号的算术表达式。通过定义和实现栈的基本操作,如入栈、出栈和判空等,算法能够准确地解析并计算输入的表达式,最终输出其计算结果。此方法不仅提高了计算效率,还增强了对复杂表达式的处理能力。 ... [详细]
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社区 版权所有