Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >业界干货 | 图解自监督学习,从入门到专家必读的九篇论文

业界干货 | 图解自监督学习,从入门到专家必读的九篇论文

作者头像
对白
发布于 2022-04-01 09:52:58
发布于 2022-04-01 09:52:58
7460
举报
文章被收录于专栏:对白的算法屋对白的算法屋

作者 | 对白 整理 | 对白的算法屋 编者寄语:

一文搞懂AI未来最火的技术:自监督学习。

大家好,我是对白。

如果人工智能比作一块蛋糕,那么蛋糕的大部分是自监督学习,蛋糕上的糖衣是监督学习,蛋糕上的樱桃强化学习

Yann Lecun在他的演讲中引入了“蛋糕类比”来说明自监督学习的重要性。虽然这个类比是有争论的,但我们也已经看到了自监督学习的影响,在自然语言处理领域最新发展(Word2Vec,Glove, ELMO, BERT)中,已经接受了自监督,并取得了最佳的成果。

“如果人工智能是一块蛋糕,那么蛋糕的大部分是自监督学习,蛋糕上的糖衣是监督学习,蛋糕上的樱桃是强化学习(RL)。”

出于对自监督学习在CV、NLP和推荐领域应用的好奇,我通过最近工作中的学习心得,并查阅了大量的论文,希望能以最通俗易懂的方式给大家讲解清楚,自监督学习这项技术的魅力

这篇文章是我对自监督学习的直观总结。

一、概览

1.1 基于上下文(Context based)

基于数据自身的上下文信息可以构造很多任务。以拼图的方式构造pretext,比如将一张图分成9个部分,通过预测这几个部分的相对位置来产生损失;以抠图的方式构造pretext,随机将图片的一部分删掉,用剩余的部分预测扣掉的部分;预测图片的颜色,比如输入图像的灰度图,预测图片的色彩。

1.2 基于时序(Temporal based)

在视频等场景,不同样本间也有基于时序约束。

1.3 基于对比(Contrastive based)

PS:我的最爱

通过学习对两个事物的相似或不相似进行编码来构建表征,即通过构建正负样本,然后度量正负样本的距离来实现自监督学习。核心思想样本和正样本之间的相似度远远大于样本和负样本之间的相似度,类似Triplet模式

二、主要方法

2.1 基于上下文(Context based)

论文一:《Rethinking Data Augmentation: Self-Supervision and Self-Distillation》

Data augmentation and self-supervision

Data Augmentation相关的方法会对通过对原始图片进行一些变换(颜色、旋转、裁切等)来扩充原始训练集合,提高模型泛化能力;

Multi-task learning将正常分类任务和self-supervised learning的任务(比如旋转预测)放到一起进行学习。

作者指出通过data augmentation或者multi-task learning等方法的学习强制特征具有一定的不变性,会使得学习更加困难,有可能带来性能降低。

因此,作者提出将分类任务的类别和self-supervised learning的类别组合成更多类别(例如 (Cat, 0),(Cat,90)等),用一个损失函数进行学习。

Self-distillation from aggregation

在学习的过程中限制不同旋转角度的平均特征表示和原始图片的特征表示尽可能接近,这里使用KL散度作为相似性度量。

第一项和第二项分别对应图a和图b,第三项是正常的分类交叉熵损失,作为一个辅助loss。

论文二:《S4L: Self-Supervised Semi-Supervised Learning》

自监督和半监督学习(大量数据没有标签,少量数据有标签)也可以进行结合,对于无标记的数据进行自监督学习(旋转预测),和对于有标记数据,在进行自监督学习的同时利用联合训练的想法进行有监督学习。通过对 imagenet 的半监督划分,利用 10% 或者 1% 的数据进行实验,最后分析了一些超参数对于最终性能的影响。

对于标记数据来说,模型会同时预测旋转角度和标签,对于无标签数据来说,只会预测其旋转角度,预测旋转角度”可以替换成任何其它无监督task(作者提出了两个算法,一个是 S^4L-Rotation,即无监督损失是旋转预测任务;另一个是S^4L-Exemplar,即无监督损失是基于图像变换(裁切、镜像、颜色变换等)的triplet损失)

总的来说,需要借助于无监督学习,为无标注数据创建一个pretext task,这个pretext task能够使得模型利用大量无标注学习一个好的feature representation

2.2 基于时序(Temporal based)

之前介绍的方法大多是基于样本自身的信息,比如旋转、色彩、裁剪等。而样本间其实也是具有很多约束关系的,比如视频相邻帧的相似性、物体多个视觉的视频帧。

论文三:

《Time-Contrastive Networks: Self-Supervised Learning from Video》

对于视频中的每一帧,其实存在着特征相似的概念,可以认为相邻帧特征是相似的,而相隔较远的视频帧是不相似的,通过构建这种position和negative的样本来进行自监督约束。

对于同一个物体的拍摄是可能存在多个视角(multi-view),对于多个视角中的同一帧,可以认为特征是相似的,对于不同帧可以认为是不相似的。

论文四:《Unsupervised Learning of Visual Representations Using Videos》

基于无监督追踪方法,首先在大量的无标签视频中进行无监督追踪,获取大量的物体追踪框。那么对于一个物体追踪框在不同帧的特征应该是相似的,而对于不同物体的追踪框中的特征应该是不相似的。

论文五:《Shuffle and learn: unsupervised learning using temporal order verification》

基于顺序约束的方法,可以从视频中采样出正确的视频序列和不正确的视频序列,构造成正负样本对然后进行训练。简而言之,就是设计一个模型,来判断当前的视频序列是否是正确的顺序。

2.3基于对比(Contrastive based)

基于对比的约束,通过构建正样本(positive)和负样本(negative),然后度量正负样本的距离来实现自监督学习。核心思想样本和正样本之间的距离远远大于样本和负样本之间的距离。

1. score 是度量函数,评价两个特征间的相似性。𝑥通常称为“anchor” 数据。

2. 为了优化 anchor 数据和其正负样本的关系,可以使用点积的方式构造距离函数,然后构造一个 softmax 分类器,以正确分类正样本和负样本。

3. 这应该鼓励相似性度量函数(点积)将较大的值分配给正例,将较小的值分配给负例。

论文六:

《Learning deep representations by mutual information estimation and maximization》

Deep InfoMax 通过利用图像中的局部结构来学习图像表示,对比任务是对一对图像中的全局特征和局部特征进行分类。

全局特征是CNN的最终输出,局部特征是编码器中的中间层的输出。每个局部特征图都有一个有限的感受野。

对于一个 anchor image 𝑥,𝑓(𝑥)是来自一幅图像的全局特征,正样本𝑓(𝑥+)是相同图像的局部特征,负样本𝑓(𝑥−)是不同图像的局部特征。

本文探讨的简单思想是训练一个表示学习函数,即编码器,以最大化其输入和输出之间的互信息(MI)。作者以一种类似于对抗自动编码器的方式,将MI最大化和先验匹配结合起来,根据期望的统计特性约束表示。

为了得到一个更适合分类的表示,作者将图像的高层表示与局部patch之间的平均MI值最大化。

论文七:

《Representation Learning with Contrastive Predictive Coding》

CPC是一个基于对比约束的自监督框架,可以适用于文本、语音、视频、图像等任何形式数据的对比方法(图像可以看作为由像素或者图像块组成的序列)。

CPC通过对多个时间点共享的信息进行编码来学习特征表达,同时丢弃局部信息。这些特征被称为“慢特征”:随时间不会快速变化的特征。比如说:视频中讲话者的身份,视频中的活动,图像中的对象等。

CPC 主要是利用自回归的想法,对相隔多个时间步长的数据点之间共享的信息进行编码来学习表示,这个表示 c_t 可以代表融合了过去的信息,而正样本就是这段序列 t 时刻后的输入,负样本是从其他序列中随机采样出的样本。CPC的主要思想就是基于过去的信息预测的未来数据,通过采样的方式进行训练。

论文八: Moco《Momentum Contrast for Unsupervised Visual Representation Learning》

基于对比的自监督学习其实就是训练一个编码器然后在一个大的字典里确保和对应的key是相似的,和其它的是不相似的。

传统上字典的大小就是batch-size,由于算力的影响不能设置过大,因此很难应用大量的负样本。因此效率较低。

本文采用队列来存储这个字典,在训练过程中,每一个新batch完成编码后进入队列,最老的那个batch的key出队列,字典的大小与batchsize实现分离,这样可用的字典大小就可以远远大于batchsize,负样本的数目就会大大扩增,效率得到大幅提升。

动量更新主要是为了解决字典这部分数据在反向传播的时候更新参数的问题,因为反向传播需要在队列中所有的样本中进行传播。在这里作者使用了一种动量更新的方式缓慢平滑的更新参数:

a) 传统方法-端到端,这种方式query和key用两个encoder,然后两个参数是都进行更新的,但这种方式你的字典大小就是mini-batch的大小。

b) 采用一个较大的memery bank存储较大的字典(存储所有的样本),但是每次进行query之后才会对memory进行更新,所以每次采样得到的query可能是很多步骤之前编码的的向量,这样就丢失了一致性。

c) 使用queue,每次query之后都删除最早的batch的样本,然后将最新的batch更新入队,这样就巧妙的缓解了memory-bank一致性的问题。同时利用队列可以保存远大于batchsize的样本,这样也解决了end-to-end的batch-size的耦合问题。

论文九:SimCLR《A Simple Framework for Contrastive Learning of Visual Representations》

是什么使对比预测任务能够学习有用的表示?

1) 数据增强的组合在定义有效的预测任务方面起着关键作用;

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

3) 与有监督学习相比,对比学习可以从更大的batch和更多的训练步骤中获益。

取一幅图像对其进行随机变换,得到一对增广图像x_i和x_j。该对中的每个图像都通过编码器以获得图像的表示。然后用一个非线性全连通层来获得图像表示z,其任务是最大化相同图像的z_i和z_j两种表征之间的相似性。

随机数据增强模块:随机剪裁之后Resize到同一尺寸,接着是随机颜色扰动,随机高斯模糊。随机剪裁和颜色扰动的组合对获得好性能至关重要

用于从增强后的数据样本中提取表征向量的神经网络基础编码器。该框架能够无限制的适用不同的网络框架。作者们采用简单通用的ResNet。

神经网络projection head g(),用来将表征映射到对比损失应用的空间。

对比损失函数,用于对比预测任务。给定一个包含正样本对的数据集,对比预测任务目标是识别出正样本对。

你好,我是对白,硕士毕业于清华,现大厂算法工程师,拿过八家大厂的SSP级以上offer。

高中荣获全国数学和化学竞赛二等奖。

本科时独立创业五年,成立两家公司,并拿过总计三百多万元融资(已到账),项目入选南京321高层次创业人才引进计划。创业做过无人机、机器人和互联网教育,保研后选择退居为股东。

我每周至少更新三篇原创,分享自己的算法技术、创业心得和人生感悟。

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

本文分享自 对白的算法屋 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从自监督学习主流方法、最新工作进展,看未来前景研究方向
本文作者来自东北大学,他通过整理自监督学习的一系列工作,把主流方法分成三大类,方便大家更全面的了解自监督学习的定义、方法、用途。
AI科技评论
2020/08/10
1.6K0
从自监督学习主流方法、最新工作进展,看未来前景研究方向
自监督学习之对比学习
自监督学习主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。(也就是说自监督学习的监督信息不是人工标注的,而是算法在大规模无监督数据中自动构造监督信息,来进行监督学习或训练。因此,大多数时候,我们称之为无监督预训练方法或无监督学习方法,严格上讲,他应该叫自监督学习)。
全栈程序员站长
2022/10/05
1.1K0
自监督学习之对比学习
自监督学习详细介绍(学习笔记)
fast.ai上面关于自监督学习的资料:Self-supervised learning and computer vision. GitHub上面每年使用自监督学习的论文列表:Awesome Self-Supervised Learning. 相关微信推送
全栈程序员站长
2022/10/05
5.3K0
自监督学习详细介绍(学习笔记)
自监督学习: 人工智能的未来
[1] 2015 (ICCV) Unsupervised Learning of Visual Representations Using Videos
全栈程序员站长
2022/10/05
8670
自监督学习: 人工智能的未来
自监督学习(self-supervised learning)(20201124)
半监督(semi-supervised learning):利用好大量无标注数据和少量有标注数据进行监督学习;
全栈程序员站长
2022/10/05
1.1K0
自监督学习(self-supervised learning)(20201124)
自监督学习 —— MoCo v1
这里得到的I_pos的维度是**(N,1,1), N个数代表N**张图片的自己与自己的增强图的特征的匹配度。
为为为什么
2022/08/09
1.4K0
自监督学习 —— MoCo v1
再介绍一篇最新的Contrastive Self-supervised Learning综述论文
自监督学习(Self-supervised learning)最近获得了很多关注,因为其可以避免对数据集进行大量的标签标注。它可以把自己定义的伪标签当作训练的信号,然后把学习到的表示(representation)用作下游任务里。最近,对比学习被当作自监督学习中一个非常重要的一部分,被广泛运用在计算机视觉、自然语言处理等领域。它的目标是:将一个样本的不同的、增强过的新样本们在嵌入空间中尽可能地近,然后让不同的样本之间尽可能地远。这篇论文提供了一个非常详尽的对比自监督学习综述。 我们解释了在对比学习中常用的前置任务(pretext task),以及各种新的对比学习架构。然后我们对不同的方法做了效果对比,包括各种下游任务例如图片分类、目标检测、行为识别等。最后,我们对当前模型的局限性、它们所需要的更多的技术、以及它们未来的发展方向做了总结。
对白
2022/04/01
1.5K0
再介绍一篇最新的Contrastive Self-supervised Learning综述论文
对比自监督学习浪潮迅猛来袭,你准备好了吗?
近年来,自监督学习逐渐成为了备受人们关注的应对标注缺乏问题的热门解决方案,科研人员在基于对比学习的自监督方法方面进行了大量研究。本文是 PyTorch Lightning 创始人 William Falcon 的对比学习综述,对自监督学习、对比学习等基础概念进行了简要的回顾,介绍了 CPC、AMDIM、BYOL、SimCLR、Swav等最近较为著名的对比学习方法,并提出了一种名为 YADIM 的新型对比学习算法。
AI科技评论
2020/10/09
1.3K0
对比自监督学习浪潮迅猛来袭,你准备好了吗?
自监督学习的知识点总结
监督学习:机器学习中最常见的方法是监督学习。在监督学习中,我们得到一组标记数据(X,Y),即(特征,标签),我们的任务是学习它们之间的关系。但是这种方法并不总是易于处理,因为-
deephub
2022/04/14
4410
自监督学习的知识点总结
自监督学习 对比学习了解
自监督学习是近几年(2020年)流行起来的一种机器学习方法,很多人认为自监督方法未来一段时间将取代现有的监督方法,成为深度学习中占据主导地位的方法。现在已经有不少采用自监督-对比学习的方法取得了领先的效果。目前(2020.10)来说这个领域貌似还比较新,没有找到很系统的讲解介绍资料。
全栈程序员站长
2022/10/05
7150
自监督学习 对比学习了解
2021最新对比学习(Contrastive Learning)在各大顶会上的经典必读论文解读
我为大家整理了对比学习在最新各大顶会上的论文合集及相应代码,所列举的论文涉及领域包括但不限于CV, NLP, Audio, Video, Multimodal, Graph, Language model等,GitHub地址:
对白
2022/04/01
1.5K0
2021最新对比学习(Contrastive Learning)在各大顶会上的经典必读论文解读
自监督:对比学习contrastive learning「建议收藏」
自监督方法将取代深度学习中占主导地位的直接监督范式的预言已经存在了相当一段时间。Alyosha Efros打了一个著名的赌,赌在2015年秋季之前,一种无监督的方法将会在检测Pascal VOC方面胜过有监督的R-CNN。但四年之后,他的预言现在已经实现了。目前,自监督方法(MoCo, He et al., 2019)在Pascal VOC上的检测性能已经超越了监督方法,并在许多其他任务上取得了良好的效果。
全栈程序员站长
2022/10/05
1.9K0
自监督:对比学习contrastive learning「建议收藏」
一文读懂对比学习在CV进展
对比学习在计算机视觉的发展历程大概分为四个阶段(1)百花齐放:有InstDisc(Instance Discrimination)、CPC、CMC代表工作。在这个阶段方法模型都还没有统一,目标函数也没有统一,代理任务也没有统一,所以是一个百花齐放的时代。(2)CV双雄:这个阶段的代表工作就是MoCo v1、SimCLR v1、MoCo v2、SimCLR v2以及还有CPC CMC它们的延伸工作,还有SwAV。(3)不用负样本:这个阶段主要就是BYOL这个方法以及它后续的一些改进,最后SimSiam出现,把所有方法归纳总结了一下,都融入到了SImSiam这个框架之中,算是卷积神经网络做对比学习的一个总结性的工作。(4)Transformer:这里会提到MoCo v3和Dino。
CristianoC
2022/11/18
1.7K0
一文读懂对比学习在CV进展
【机器学习】--- 自监督学习
机器学习近年来的发展迅猛,许多领域都在不断产生新的突破。在监督学习和无监督学习之外,自监督学习(Self-Supervised Learning, SSL)作为一种新兴的学习范式,逐渐成为机器学习研究的热门话题之一。自监督学习通过从数据中自动生成标签,避免了手工标注的代价高昂,进而使得模型能够更好地学习到有用的表示。
凯子坚持C
2024/09/23
1120
从MoCo入门自监督学习与对比学习
最近有一些基于对比学习的无监督学习的工作取得了不错的效果,这类对比学习方法的本质上是构造一个动态的字典。我们先解释一下对比学习。
CristianoC
2022/11/18
1.4K0
从MoCo入门自监督学习与对比学习
自监督、半监督和有监督全涵盖,四篇论文遍历对比学习的研究进展
机器之心分析师网络 作者:仵冀颖 编辑:Joni 本文通过四篇相关论文对自监督学习中的对比学习(Contrastive Learning)进行了深入的探讨。 自监督学习意思是使用非人工标记数据进行学习。在机器学习中,比较著名的自监督方法就是自然语言处理中的 word2vec。由此可见,与无监督学习不同,自监督中仍然存在标记,只不过,这些标记不是人类参与生成的,而是从输入数据中生成的,通常可以使用启发式算法生成标记。 而在机器视觉领域,自监督学习主要有两类方法,生成类方法(Generative)和区别类方法
机器之心
2023/03/29
1.3K0
自监督、半监督和有监督全涵盖,四篇论文遍历对比学习的研究进展
图解自监督学习,人工智能蛋糕中最大的一块
如果人工智能是一块蛋糕,那么蛋糕的大部分是自监督学习,蛋糕上的糖衣是监督学习,蛋糕上的樱桃是强化学习。
石晓文
2020/03/12
1.2K0
图解自监督学习,人工智能蛋糕中最大的一块
自监督学习(Self-supervised Learning)
前段时间在杭州参加华尔兹,在会场听报告和看Poster的时候,我发现AI领域的论文研究不再跟前几年一样专注于某个特定的任务提出全监督的网络模型(比如语义分割、目标检测和风格迁移等)。因为这些年深度学习的发展使得在数据充足情况下,经典任务的模型已经能达到很好的效果了,但是对于数据和标签匮乏的特定任务,这种监督学习的模型的效果就很受限。
全栈程序员站长
2022/10/05
2.3K0
自监督学习(Self-supervised Learning)
自监督学习(一)自监督学习介绍
自监督学习本质上是一种无监督学习的方法,通常会设置一个“Pretext tasks”,根据数据的一些特点,构造Pesdeo Labels来训练网络模型。通过自监督得到的模型,可以作为其他学习任务的预训练模型,为其提供更好的训练初始区域。因此,自监督学习也可以看作是为了学习图像的通用视觉表示。
全栈程序员站长
2022/10/05
1.2K0
自监督学习(一)自监督学习介绍
自监督学习 —— MoCo v2
file:///C:/Users/issuser/Downloads/202205291635050.pdf
为为为什么
2022/08/09
9730
自监督学习 —— MoCo v2
推荐阅读
相关推荐
从自监督学习主流方法、最新工作进展,看未来前景研究方向
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档