自监督学习了解

1. 前言

最近特斯拉和马斯克向外传递了很多FSD的最新进展,尤其是最近马斯克在X上直播FSD 12.0 Alpha版本,他向外界表面,FSD已经将30万行C++代码剔除,SoC上只剩一个端到端神经网络,这个网络吃进去的是像素,输出是踏板和方向盘的控制信号!

听起来已经够mind blowing,不过你可能还不能真正意识到FSD 12.0在整个AI领域的价值和意义!我大胆的说出我的观点,FSD 12.0不仅仅推翻了自动驾驶领域当前所有算法范式,开启了自动驾驶新的大门,更重要的,它是AI在视觉领域的ChatGPT时刻,人类向自主人工智能又迈出了一大步!

是不是过于乐观和夸张了?我尽力做清晰简单的解释,大家再自行判断:)


FSD 12.0 Alpha有几大重要改变

  1. 端到端神经网络,几乎没有人工代码
  2. 颠覆了功能模块化的架构,即不再有感知、规划、控制这样的模块划分
  3. 颠覆了训练方式,采集百万辆车主的驾驶视频和动作作为训练数据集,不再需要自动或人工标注数据
  4. 不再以transformer为主的网络架构,而使用了diffusion为主的生成试AI架构
  5. 引入了World Model或Foundation Model的概念,从重感知哲学改变为重预测哲学

2. 监督学习无法通向通用智能

为了更简单深入的解释这些信息背后的意思,我们需要从源头看看当前AI技术发展的现状和问题

我们通过大量精心标记数据中学习的人工智能系统方面取得了巨大进展。这种**监督学习(SL-Supervised Learning)**的范式已经证明可以训练出在其被训练的任务上表现极佳的专业模型。不幸的是,监督学习在构建更智能的通用模型方面存在局限性。实际上,世界上的一切是无法被标记的,而且有些任务根本没有足够的标记数据,例如训练小语种的翻译系统。

众所周知,监督学习的成本过于高昂,尤其在任务复杂时,典型的就是FSD这样的系统。特斯拉收集的训练数据已经超出4亿公里,这些数据如果没有“自动标注系统”的帮助,根本无法用于训练。即便特斯拉构建了自己的Dojo超级计算机和自动标注、训练软件系统等整套自动化数据闭环体系,仍然无法足够快的完成数据标注和训练,因为标注永远会成为数据闭环的瓶颈,它依赖更大的网络和大量软件的清洗修正等动作,这些动作消耗大量算力、带宽和存储,甚至需要加入少量人工干预,打断循环。

北美有40万辆FSD beta用户,>250M Miles数据

对比下ChatGPT的情况,训练数据4.8T左右,相比4亿公里视频,显然不再一个数量级。但是文本标注工作量却又比在图片中画一些框要大很多,也很难自动化。OpenAI为了降低成本,跑到肯尼亚找更低成本人力资源完成英语标注工作。但是肯尼亚的标注团队标注的不是这4.8T数据,而是在用这4.8T数据pre-trainning之后的ChatGPT进行fine tune。

看看ChatGPT的训练步骤,第一列是Pre-trainning,这一步占据了99%的训练数据集,第二、三、四列才是肯尼亚团队(contractors)需要干的事情,这几步所产生或标记的数据量只占1%或更少。我们不禁要问,那4.8T数据是怎么标注的?为什么没有请合同工呢?

3. 自监督学习在CV领域的重大突破

就在学界还在畅享如何解决CV领域的自监督学习问题时,马斯克发表了一篇twitter,说特斯拉已经从transformer网络迁移到diffusion了!(国内友商还在努力研发2021年AI day特斯拉提出的BEV transformer方案:)

diffusion又是什么网络?简单说就是当下最流行的AIGC网络,它可以无中生有的生成出图来,并且效果极好,什么奇幻的画面只要你想的到,它就可以生成得出来。

stable diffusion生成图

而马斯克抛出diffusion那一刻,我们就能猜想到,特斯拉是在用它生成视频,生成驾驶中环境的视频。我们不得不推测,特斯拉使用diffusion网络成功用历史视频预测了未来,并且质量足够好!这就突破了CV自监督学习的最大瓶颈!

更多证据也出现了,CVPR 2023 特斯拉展示了他们所谓“General World Model”,明确说明这个世界大模型可以预测未来,可以被控制,可以生成不同形式的输出,可用于仿真,可生成不常见的情况。我猜想这个模型就是基于diffusion的,并且它不仅用于仿真,更被用于FSD本身,这个模型很可能是整个FSD 12.0版本的骨干网络。经过4亿公里视频的自监督学习训练,这个模型已经超出了以往“大感知”版本的范畴,它可以理解物理世界的运行规律,例如可以预测远处物体离近后会变大,飞起的石头是否会砸到自车,地面的水坑是否可以驶过,是否可以安全通过前车冒烟的尾气…,这些问题是监督学习方法根本无法解决的,我们无法以标注的方式教会汽车所有事物,它必须能自己从“看”中学到这个世界的本质。就像出生的婴儿,从翻身、坐起、站立、奔跑的感受中理解物理世界的规律,却不需要父母教授任何物理知识。

有时我不禁感慨,世界之复杂,不仅很难用显性的规则表达,甚至都不知道我们都学会了什么,又是怎么习得的!

2023 CVPR Tesla Presentation

当然,我并不清楚这个world model是怎么训练的,也不知道FSD模型长什么样,但是我还是可以根据已有公开信息大胆猜测下(打脸也无所谓了)

猜测训练端的FSD 12.0

基于马斯克的推文,他谈到diffusion的计算效率更高,这透露了一个SoC NPU加速AI的工程问题,就是Transformer的attention结构在基于CNN的NPU上部署时遇到了不少困难,有相关经验的朋友肯定知道Transformer在NPU上的利用率是很低的,并不能很好发挥NPU的加速能力(问题出在attention中的大矩阵乘法和softmax等算子加速比不够高)。而基于Unet(CNN)的diffusion直接免去了这些工程烦恼,能让网络推理性能更高。在马斯克的直播中,他也透露了,FSD 12.0的推理帧率瓶颈已经不是算力,而是camera的帧率,上限只能是36fps。

既然马斯克谈到了diffusion在部署时的优点,那么显然,FSD就是包含了这个diffusion网络,也就是这个World Model。

World Model的输出应该是视频,它与实际视频片段组成训练集,完成训练。但未知的是loss函数是如何设计的,输入和输出视频长度分别是多少。World Model也不是全部,因为最终需要的是控制指令,还需要一个模型将World Model的输出转化为控制命令。且叫他Header模型,它的训练可能是强化学习,而强化学习的反馈也许来自行驶的最优路径,也许来自行车的舒适程度,当然安全性肯定是考虑之一。

不管如何,整个训练过程已经不需要依赖标注的数据,训练效率大幅提升,这本来是一种理想主义,没人任何公司敢进行尝试,而今天被马斯克以直播的方式昭告天下,特斯拉已经基本完整了原型验证。


3. World Model是智能基石

FSD 12.0的更深远影响!向通用人工智能迈出了坚实的一步!

2022年Yann Lecun发表了一篇重要文章《A Path Towards Autonomous Machine Intelligence》,文章概要阐述了通往自主人工智能(Yann Lecun认为“通用人工智能”说法有问题)的关键问题,其中就谈到了自监督学习是一条有希望的路径,同时也建设性的提出了为了统一语言、视觉等多模自监督学习的所谓Energy-Based Model。

更进一步,Lecun认为要完成自主人工智能,需要一个多模块组成的智能系统架构,这些模块中最重要的就是World Model,它的作用是预测执行器(Actor)将要发出的指令序列会怎样影响这个世界,World Model就像大脑内的一个仿真器,时刻都在模拟现实物理世界,模拟的结果会让执行器做出更优的选择,使得代价(Cost)更低,这里的代价包括固化内在的舒适感受和可以训练的代价。

举个例子,当我们开车时,我们用肉眼感知到了外部世界,通过World Model预测到自车可能撞击到前车,我们可能心跳加速(难受),这驱动我们踩下刹车,于是自车开始拉开与前车距离,我们再次感知到了这一点,World Model模拟结果表示已经安全,我们松开刹车,心跳趋于平稳。

Yann Lecun畅享的通用人工智能

此外,第一眼你发现,除开World Model,其它模块与自动驾驶的模块划分非常类似,包括感知、决策、执行。是的,这正是问题所在,当前的自动驾驶方案中缺少了World Model,或者说缺少对物理世界的深刻理解,缺少“常识”。这些常识正是解决自动驾驶所谓“长尾问题”根本办法,可以断言,一个没有世界物理认知的智能体永远存在大量Corner case,就像人类自己学习一样,只知其然不知其所以然,遇到少许变化便不知所措。更底层的逻辑是简单的,只不过基于自监督学习的World Model到底学到了什么底层逻辑我们并不清楚,但它Work!

套用目前学界对大模型信息压缩器的理解,World Model压缩的也许就是是物理学!


今天无意中看到了2022年10月24日,ZDNET 采访Yann Lecun的文字记录,直接谈到了当前自动驾驶面临的问题和解决思路,也非常值得一看

摘抄几段(注意以下为机器翻译):

ZDNET:有人说,我们不需要具有常识的自动驾驶汽车,因为扩展将会做到这一点。听起来你是在说,沿着这条路继续走不行?

YL:我认为完全有可能出现没有常识的五级自动驾驶汽车。但是这种方法的问题在于,这将是暂时的,因为你将不得不对其进行极度的工程化设计。所以,你需要绘制整个世界的地图,硬连所有种类的特定边角行为,收集足够的数据以获得所有奇怪的情况,等等。我的猜测是,通过足够的投资和时间,你可以完成这项工程。但最终,会有一种更令人满意、可能更好的解决方案,它涉及到更好地理解世界运作方式的系统,并具有某种程度的我们所谓的常识。它不需要人类级别的常识,但系统可以通过观察、而不是观察某人驾驶,只是观察周围的事物并了解世界的许多方面,建立关于世界运作方式的背景知识基础,然后在此基础上学习驾驶。

ZDNET:你的意思是,有些人会试图通过深度学习来工程化解决当前无法解决的问题,比如在工业中应用,并且他们将开始创建一些在计算机视觉中已经过时的东西?

YL:对。**这部分原因是自动驾驶研究人员在过去几年中有点过于乐观了,因为你有这些通用的东西,比如卷积网络和Transformer,你可以向它们提供数据,它们几乎可以学习任何东西。所以,你说,“好吧,我已经解决了那个问题。”**第一件事是建立一个演示版,在没有伤害任何人的情况下让汽车自己行驶几分钟。然后你意识到有很多特殊情况,并尝试绘制曲线,看看我每次双倍训练集时会进步多少,然后你意识到你永远也达不到目标,因为有各种各样的特殊情况。你需要一辆车,在每2亿公里内只会导致一次致命事故。那么你该怎么办呢?你可以朝两个方向走。

第一种方向是如何减少系统学习所需的数据量?这就是自监督学习发挥作用的地方。因此,许多自动驾驶汽车公司非常感兴趣自监督学习,因为这是一种利用巨大量监督数据进行模仿学习,并通过预训练获得更好性能的方法。虽然这种方法还没有完全实现,但它将会实现。然后还有另一种选择,大多数更先进的公司已经采用了这种选择,那就是我们可以进行端到端训练,但有很多特殊情况我们无法处理,所以我们将只是工程化设计系统来处理这些特殊情况,并将其视为特殊情况,并硬连控制器,然后硬连处理特殊情况所需的基本行为。如果你有足够大的工程师团队,你可能会成功。但这将需要很长时间,在最终方案中仍然可能存在一些脆弱性。未来可能出现基于学习的方法来解决这个问题,因为它可能具有某种程度的常识和对世界运作方式的理解。

在短期内,工程化方法已经赢了——Waymo和Cruise等公司正在使用这种方法。然后是自监督学习方法,它可能会帮助工程化方法取得进展。但在长期内(对于这些公司来说可能太长了),可能会出现一种更完整的自主智能驾驶系统。

5. 其他参考

5.1 基于无标注网络驾驶视频,自动驾驶策略预训练新方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2 自监督是什么

学习的范式

我们首先来回顾下机器学习中两种基本的学习范式,如图所示,一种是监督学习,一种是无监督学习。

监督学习与无监督学习[1]

监督学习利用大量的标注数据来训练模型,模型的预测和数据的真实标签产生损失后进行反向传播,通过不断的学习,最终可以获得识别新样本的能力。而无监督学习不依赖任何标签值,通过对数据内在特征的挖掘,找到样本间的关系,比如聚类相关的任务。有监督和无监督最主要的区别在于模型在训练时是否需要人工标注的标签信息。

无监督学习中被广泛采用的方式是自动编码器(autoencoder):

深度自编码器[6]

编码器将输入的样本映射到隐层向量,解码器将这个隐层向量映射回样本空间。我们期待网络的输入和输出可以保持一致(理想情况,无损重构),同时隐层向量的维度大大小于输入样本的维度,以此达到了降维的目的,利用学习到的隐层向量再进行聚类等任务时将更加的简单高效。对于如何学习隐层向量的研究,可以称之为表征学习(Representation Learning)。但这种简单的编码-解码结构仍然存在很多问题,基于像素的重构损失通常假设每个像素之间都是独立的,从而降低了它们对相关性或复杂结构进行建模的能力。尤其使用 L1 或 L2 损失来衡量输入和输出之间的差距其实是不存在语义信息的,而过分的关注像素级别的细节而忽略了更为重要的语义特征。对于自编码器,可能仅仅是做了维度的降低而已,我们希望学习的目的不仅仅是维度更低,还可以包含更多的语义特征,让模型懂的输入究竟是什么,从而帮助下游任务。而自监督学习最主要的目的就是学习到更丰富的语义表征。

什么是自监督学习

自监督学习主要是利用辅助任务(pretext)从大规模的无监督数据中挖掘自身的监督信息,通过这种构造的监督信息对网络进行训练,从而可以学习到对下游任务有价值的表征。

所以对于自监督学习来说,存在三个挑战:

  • 对于大量的无标签数据,如何进行表征学习?
  • 从数据的本身出发,如何设计有效的辅助任务 pretext?
  • 对于自监督学习到的表征,如何来评测它的有效性?

对于第三点,评测自监督学习的能力,主要是通过 Pretrain-Fintune 的模式。 我们首先回顾下监督学习中的 Pretrain - Finetune 流程:我们首先从大量的有标签数据上进行训练,得到预训练的模型,然后对于新的下游任务(Downstream task),我们将学习到的参数进行迁移,在新的有标签任务上进行「微调」,从而得到一个能适应新任务的网络。而自监督的 Pretrain - Finetune 流程:首先从大量的无标签数据中通过 pretext 来训练网络,得到预训练的模型,然后对于新的下游任务,和监督学习一样,迁移学习到的参数后微调即可。所以自监督学习的能力主要由下游任务的性能来体现。

监督学习的 Pretrain-Finetune

自监督学习的 Pretrain - Finetune

自监督学习的主要方法

自监督学习的方法主要可以分为 3 类:1. 基于上下文(Context based) 2. 基于时序(Temporal Based)3. 基于对比(Contrastive Based)

1. 基于上下文(Context Based)

基于数据本身的上下文信息,我们其实可以构造很多任务,比如在 NLP 领域中最重要的算法 Word2vec 。 Word2vec 主要是利用语句的顺序,例如 CBOW 通过前后的词来预测中间的词,而 Skip-Gram 通过中间的词来预测前后的词。

Word2vec

而在图像中,研究人员通过一种名为 Jigsaw(拼图)[7] 的方式来构造辅助任务。我们可以将一张图分成 9 个部分,然后通过预测这几个部分的相对位置来产生损失。比如我们输入这张图中的小猫的眼睛和右耳朵,期待让模型学习到猫的右耳朵是在脸部的右上方的,如果模型能很好的完成这个任务,那么我们就可以认为模型学习到的表征是具有语义信息的。

后续的工作[8]人们又拓展了这种拼图的方式,设计了更加复杂的,或者说更难的任务。首先我们依然将图片分为 9 块,我们预先定义好 64 种排序方式。模型输入任意一种被打乱的序列,期待能够学习到这种序列的顺序属于哪个类,和上个工作相比,这个模型需要学习到更多的相对位置信息。这个工作带来的启发就是使用更强的监督信息,或者说辅助任务越难,最后的性能越好。

除了这种拼图的模式,还有一种是抠图[9]。想法其实也很简单粗暴,就是我们随机的将图片中的一部分删掉,然后利用剩余的部分来预测扣掉的部分,只有模型真正读懂了这张图所代表的含义,才能有效的进行补全。这个工作表明自监督学习任务不仅仅可以做表征学习,还能同时完成一些神奇的任务。

而对于这种抠图的方式,其实和 nlp 中的 BERT [10] 的 MASK LM 训练方式有异曲同工之妙,BERT 在训练时也可以是看做随机扣掉一些词,然后来预测扣掉的词,从而让模型读懂句子。

BERT pic from [21]

还有一种思路是通过图片的颜色信息[11],比如给模型输入图像的灰度图,来预测图片的色彩。只有模型可以理解图片中的语义信息才能得知哪些部分应该上怎样的颜色,比如天空是蓝色的,草地是绿色的,只有模型从海量的数据中学习到了这些语义概念,才能得知物体的具体颜色信息。同时这个模型在训练结束后就可以做这种图片上色的任务。

这种基于预测颜色的生成模型带给了人们新的启发,其实这种灰度图和 ab 域的信息我们可以当做是一张图片的解耦表达,所以只要是解耦的特征,我们都可以通过这种方式互相监督的学习表征,著名的 Split-Brain Autoencoders [12] 就在做这样一件事情。对于原始数据,首先分成两部分,然后通过一部分的信息来预测另一部分,最后再合成完成的数据。和传统编码器不同的是,这种预测的方式可以促使模型真正读懂数据的语义信息才能够实现,所以相当于间接地约束编码器不单单靠 pixel-wise 层面来训练,而要同时考虑更多的语义信息。

最后我们要介绍的是根据类似数据增广的方式来寻找自监督上下文。ICLR 2018 [13]的工作是给定一张输入的图片,我们对其进行不同角度的旋转,模型的目的是预测该图片的旋转角度。这种朴素的想法最后带来的增益竟然是非常巨大的,所以数据增强对于自监督学习也是非常有益处的,我个人的想法是数据增强不仅带来了更多的数据,还增加了预训练模型的鲁棒性。

自监督学习在预训练模型中的成功让研究人员觉得非常兴奋,同时也激发了更多的灵感。我们之前介绍的模型都是在专注如何寻找自监督信息,而自监督学习一定要脱离下游的具体任务吗?答案是否定的,越来越多的工作开始思考自监督学习和具体任务紧密结合的方法(Task Related Self-Supervised Learning)

Lee, Hankook et al [14]探索了在多任务学习中增加自监督学习的可能,他们将普通的分类任务中嵌入了旋转预测任务。除了简单的多任务学习,也可以设计联合学习策略,直接预测两种监督信息。同样的想法也被用到了小样本学习[15]中,一个分支进行传统的小样本分类,另一个分支来进行自监督旋转预测,虽然这篇文章的想法和设计不是很亮眼,但提升还是比较明显的。

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

这两篇文章最后都中了 ICCV 2019,说明目前来说审稿人对于这类任务相关的自监督模型都是比较感兴趣的。

2. 基于时序(Temporal Based)

之前介绍的方法大多是基于样本自身的信息,比如旋转、色彩、裁剪等。而样本间其实也是具有很多约束关系的,这里我们来介绍利用时序约束来进行自监督学习的方法。最能体现时序的数据类型就是视频了(video)。

第一种思想是基于帧的相似性[17],对于视频中的每一帧,其实存在着特征相似的概念,简单来说我们可以认为视频中的相邻帧特征是相似的,而相隔较远的视频帧是不相似的,通过构建这种相似(position)和不相似(negative)的样本来进行自监督约束。

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

还有一种想法是来自 @Xiaolong Wang 大佬 ICCV 2015 [18]的基于无监督追踪方法,首先在大量的无标签视频中进行无监督追踪,获取大量的物体追踪框。那么对于一个物体追踪框在不同帧的特征应该是相似的(positive),而对于不同物体的追踪框中的特征应该是不相似的(negative)。

除了基于特征相似性外,视频的先后顺序也是一种自监督信息。比如ECCV 2016, Misra, I. [19] 等人提出基于顺序约束的方法,可以从视频中采样出正确的视频序列和不正确的视频序列,构造成正负样本对然后进行训练。简而言之,就是设计一个模型,来判断当前的视频序列是否是正确的顺序。

Self-supervised Dialogue Learning

基于顺序的约束还被应用了到了对话系统中,ACL 2019 [20] 提出的自监督对话学习就是基于这种思想。这篇文章主要是想解决对话系统中生成的话术连贯性的问题,期待机器生成的回复和人类交谈一样是符合之前说话的风格、习惯等等。从大量的历史预料中挖掘出顺序的序列(positive)和乱序的序列(negative),通过模型来预测是否符合正确的顺序来进行训练。训练完成后就拥有了一个可以判断连贯性的模型,从而可以嵌入到对话系统中,最后利用对抗训练的方式生成更加连贯的话术。

BERT pic from [21]

而 BERT 的另一种训练方式,Next Sentence Prediction 也可以看作是基于顺序的约束,通过构造大量的上下文样本,目的是让模型理解两个句子之间的联系。这一任务的训练语料可以从语料库中抽取句子对包括两个句子A和B来进行生成,其中50%的概率B是A的下一个句子,50%的概率B是语料中的一个随机句子。该任务预测B是否是A的下一句。

3. 基于对比(Contrastive Based)

第三类自监督学习的方法是基于对比约束,它通过学习对两个事物的相似或不相似进行编码来构建表征,这类方法的性能目前来说是非常强的,从最近的热度就可以看出,很多大牛的精力都放在这个方向上面。关于这个方向的方法,[22] 总结的比较好。这里我们再简单的阐述一下,加上一些我个人的看法。

其实我们第二部分所介绍的基于时序的方法已经涉及到了这种基于对比的约束,通过构建正样本(positive)和负样本(negative),然后度量正负样本的距离来实现自监督学习。核心思想样本和正样本之间的相似度远远大于样本和负样本之间的相似度:

\begin{equation} \operatorname{score}\left(f(x), f\left(x^{+}\right)\right)>>\operatorname{score}\left(f(x), f\left(x^{-}\right)\right) \end{equation}

这里的 x 通常也称为 「anchor」数据,为了优化 anchor 数据和其正负样本的关系,我们可以使用点积的方式构造距离函数,然后构造一个 softmax 分类器,以正确分类正样本和负样本。这应该鼓励相似性度量函数(点积)将较大的值分配给正例,将较小的值分配给负例:

\begin{equation} \mathcal{L}_{N}=-\mathbb{E}_{X}\left[\log \frac{\exp \left(f(x)^{T} f\left(x^{+}\right)\right)}{\exp \left(f(x)^{T} f\left(x{+}\right)\right)+\sum_{j=1}{N-1} \exp \left(f(x)^{T} f\left(x_{j}\right)\right)}\right] \end{equation}

通常这个损失也被称为 InfoNCE (多么炫酷的名字啊),后面的所有工作也基本是围绕这个损失进行的。

DIM

我们首先介绍 ICLR 2019 的 DIM [23],DIM 的具体思想是对于隐层的表达,我们可以拥有全局的特征(编码器最终的输出)和局部特征(编码器中间层的特征),模型需要分类全局特征和局部特征是否来自同一图像。所以这里 x 是来自一幅图像的全局特征,正样本是该图像的局部特征,而负样本是其他图像的局部特征。这个工作的开创性很强,已经被应用到了其他领域,比如 graph [24]。

CPC

CPC 同样是一个基于对比约束的自监督框架,主要是可以应用于能够以有序序列表示的任何形式的数据:文本、语音、视频、甚至图像(图像可以被视为像素或块的序列,后面作者也给出了具体的想法)。CPC 主要是利用自回归的想法,对相隔多个时间步长的数据点之间共享的信息进行编码来学习表示,这个表示 c_t 可以代表融合了过去的信息,而正样本就是这段序列 t 时刻后的输入,负样本是从其他序列中随机采样出的样本。CPC的主要思想就是基于过去的信息预测的未来数据,通过采样的方式进行训练。

CMC

所以基于对比约束的自监督方法主要围绕如何选取正负样本, @慕容腹黑 大佬提出了利用多模态(多视角)的信息来构造样本[26] ,一个样本的多个模态为正样本,其他样本的模态为负样本。我认为这个工作还是很有启发性的,很遗憾 ICCV2019 没有中,真心希望这篇文章能够有一个好的归宿。

Memory Bank

对于具体的实现上,因为存在大量的样本,如何存取和高效的计算损失是急需解决的。研究人员提出了memory bank [27]的概念,也就是说我们把之前模型产生样本特征全部存起来,当前计算损失的时候直接拿来用就可以了,每次模型更新完后将当前的特征重新更新到 memory bank 中,以便下一次使用。这个工作的缺点就在于每次需要将所有样本的特征全部存起来。后续 kaiming 大神提出的 Moco[28], 主要的贡献是 Momentum Update、 shuffleBN 等技术点来优化这个过程。关于 Moco 知乎上已经有了很多的解释了,推荐大家阅读 [2],这里我们就不展开介绍了。

SImCLR

最近 hinton 组又放出了 SimCLR[29],这个工作主要是对于一个输入的样本,进行不同的数据增广方式,对于同一个样本的不同增广是正样本,对于不同样本的增广是负样本。整个过程比之前kaiming提出的动量对比(MoCo)更加的简单,同时省去了数据存储队列。这个工作的创新主要有两个:

  1. 在表征层和最后的损失层增加了一个非线性映射可以增加性能 (这个地方我比较好奇,希望能有大佬给出更直观的解释)。
  2. 数据增广对于自监督学习是有益的,不同数据增广方式的结合比单一增广更好。
    同时作者公布了非常多的实验经验,比如自监督学习需要更大的 batch 和更长的训练时间。

Discussion

通过阅读这些经典工作,我自己的思考主要如下:

  • 找到合适的辅助任务(pretext)对于自监督学习是最需要解决的问题。
  • 数据和资源越多,自监督预训练的效果会更好(Bert, MoCo, SimCLR)。
  • 自监督直接和具体任务的结合(Task Related Self-Supervised Learning)是个可探索的方向,已经在很多任务中初露头角,也比较符合审稿人的口味。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值