MoCo作为一个无监督表征学习工作,在不仅分类而且其他例如检测、分割、人体关键点检测等主流视觉任务上超越了有监督模型(即ImageNet上的预训练模型),这给CV领域吃了一颗定心丸,证明无监督真的可行。Lecun早在2016年就用一张蛋糕图表明如果机器学习是一个蛋糕,强化学习只是上面的一颗樱桃,有监督学习只是表面奶油,真正的主体应当是无监督的。
对比学习:假设有三张图片,两张是人,一张是狗,对比学习就是不需要知道图片里具体对象的名称,但需要知道前两张相似,最后一张和前两章不一样。具体地讲就是将图片通过一个模型后映射为一个特征,那么这三张图片分别是特征空间中的三个点,我们的目标是前两个特征的距离要尽可能的近,最后一个要要和之前尽可能的远。也就是说类似的东西在特征空间的表示要尽量在相同的区域内。
但是要注意到,让模型学会分辨这三张图片的关系虽然说不需要对每个图片打具体标签,但仍然需要知道前两张图片类似等这一类信息,相当于还是需要提供一部分信息做有监督学习。但是在视觉领域对比学习仍然被认为是无监督的,因为可以通过设计一些巧妙的代理任务(pretext task)从而人为设定一些规则来提供上述这种监督信号。其中最广为应用的代理任务就是个体判别(instance discrimination),它认为每一张图片都和别人不相似,而从同一张图片上随即裁剪下来的块以及其数据增广认为是相似的。相似图片我们称为正样本,不相似称为负样本。那么ImageNet中有一百万张图片,自带的类别标签是一千个,但是如果用这种instance discrimination的话就相当于有一百万个类别。
对比学习中剩下的内容,比如说给出模型框架 以及对比学习专用的损失函数,总的来说套路和其他没有什么区别了。
这个东西最厉害的地方在于灵活性,因为这种代理任务(定义什么是正样本和负样本的方式)是非常灵活的,可以大开脑洞的设计。例如同一个视频里的任意两帧是正样本,或者nlp中有一个工作用同一个句子两次经过同一个forward,并使用不同的dropout,那么也能得到两种不同的特征表示,认为是正样本。例如同一个物体的不同视角可以作为正样本。就是说只要脑洞够大,每个领域都能找到各种不同的代理任务方式,实现这种自监督。
这里我个人有一点想法,就是在深度学习中,很多东西理解的还是比较狭隘不够深刻,我总觉得例如ViT的分patch的方式,用一维向量表示二维图片,对比学习里提到的这种代理任务。接触这些东西的第一反应就是这个玩意是不work的,有些东西好像不太符合逻辑,但是实际中人家又确实效果不错。有的时候需要打开思路,抛弃以前对传统东西的狭隘的看法,尤其是ViT和MAE中的许多实验(比如用一维向量进行二位位置编码这件事),作者开始的直观感受和我们也是一样的,这个东西效果能好吗,但是对于深度学习模型来说完全不是这样。
题目:MoCo的意思是动量对比,动量这个事在优化算法里接触过,可以理解为加权移动平均,就是不用当下时刻的输出,而是集合一下过去的结果,比较稳定。 MoCo应用这种特性来缓慢的更新编码器,从而让学习到的特征尽可能的保持一致。
摘要:从另外一个角度看对比学习,把对比学习看成一个字典查询的任务。MoCo是第一个在CV领域自监督训练,并迁移学习到下游任务中取得实质性进展的工作,超越了有监督的工作。这个有一个很重要的点在于,可以在许多没有足够数据的任务上采用预训练好的自监督模型。
标签:样本,学习,监督,MoCo,对比,图片 From: https://www.cnblogs.com/andoblog/p/17318378.html