Bilibili视频-对比学习论文综述【论文精读】
百花齐放
Unsupervised Feature Learning via Non-Parametric Instance Discrimination
提出个体判别任务。
Motivation
本篇文章的motivation来自于监督学习方法中的结果。对于一个分类器,输入图片是一个猎豹,而输出的结果的可能性中,可能性高的往往和猎豹有紧密的关系;而输出可能性低的往往和猎豹没有关系。
作者把每一个Instance看成一个类别,而目标则是学习到一个特征,从而让分类器能够把每个图片都区分开来。
方法:
通过一个卷积神经网络把图片编码成一个特征,然后希望这些特征能够在特征空间中尽可能的分开。
对比学习:
正样本是图片本身(数据增强);负样本是数据集中的其他图片。
把所有图片的特征存放在Memory bank中(也就是一个字典)。每个特征的维度不能太高,否则字典会很大。
用NCE loss计算对比学习的目标函数。同时更新Memory Bank。
Unsupervised Embedding Learning via Invariant and Spreading Instance Feature
SimCLR的前身。没有使用额外的结构存储数据样本。正负样本来源于同一个minibatch。
Motivation:相似的图片编码后的特征应该很相似,而不相似的图片编码后的特征应该不相似。
方法:正样本是图片本身,负样本是batch中的所有其他样本(包括原始图片和数据增强后的图片)。
该算法的好处在于可以用一个样本进行端到端的训练。
没有取得好的结果的原因在于没有使用足够大的字典。
Representation Learning with Contrastive Predictive Coding
使用生成式代理任务
想法:
给定输入 x x x,将 t t t时刻之前的输入喂给一个编码器,编码器会返回给我们一些特征,把这些特征输入给一个自回归模型,得到 c t c_t ct,用 c t c_t ct预测未来的信息。
正样本选择原本的未来信息 x t + i x_{t+i} xt+i,负样本则随机选择其他信息。
Contrastive Multiview Coding
将一个物体的多个视角定义为正样本。作者希望模型能够学习到物体的特征,使得无论输入的是哪个视角模型都能够正确的做出判断。如上图所示。
cmc是第一个使用多视角进行对比学习的工作。
缺点:使用几个视角就需要几个编码器。
CV双雄
Momentum Contrast for Unsupervised Visual Representation Learning
主要贡献:把之前对比学习的方法归纳为字典查询问题。提出队列和动量编码器来使字典更大。
- 用队列解决大字典的问题;
- 用动量编码器去解决字典特征不一致的问题。
A Simple Framework for Contrastive Learning of Visual Representations
给定输入 x x x,对于使用不同的数据增强方法得到的 x ^ i , x ^ j \hat x_i,\hat x_j x^i,x^j,把数据增强后的这两个图片作为正样本。负样本则为batch中剩下的样本以及数据增强之后的样本。再使用 f ( ⋅ ) f(·) f(⋅)对输入进行编码,再经过一个 g ( ⋅ ) g(·) g(⋅)(只在训练时使用),一个全连接层后,得到结果。
使用normalized temperature-scaled交叉损失函数进行评估。
主要贡献
- 使用了更多的数据增强
- 增加了 g g g函数
- 使用了更大的batch size
数据增强方法:
Big Self-Supervised Models are Strong Semi-Supervised Learners
文章主要分为三个部分:
- 用SIMCLR进行自监督的对比学习
- 在训练好的模型的基础上,只需要一小部分数据对模型进行微调
- 使用该模型作为Teacher模型对无标签的数据打标签,进行自学习
模型的改变:
- 更大的模型
- 增大mlp层的规模
- 使用动量编码器
Unsupervised Learning of Visual Features by Contrasting Cluster Assignments
将对比学习与聚类结合。
左边是对比学习的方法。
作者希望在对比学习的最后,不用Feature去做近似。而是借助一些先验信息去和一些简单的东西作比较(聚类的中心),从而不去和负样本作比较。
使用聚类的好处:
- 减少计算,不需要和大量负样本进行比较。
- 聚类中心存在语义含义,更高效。
Multi-crop:
- 从图片中取得更多的crop而不是两个。
- 变小crop的size从而不增大计算量
不用负样本
Bootstrap Your Own Latent A New Approach to Self-Supervised Learning
核心思想:自己和自己进行学习。
不用负样本的好处:在进行目标函数计算的时候,模型只需要让所有相似的物体的特征也尽可能的相似。从而存在一种捷径方法(问题),一个模型无论给什么输入都能返回同样的输出(0)。
输入 x x x经过数据增强得到 v , v ′ v,v' v,v′,然后分别通过架构相同参数不同的编码器 f θ , f ξ f_\theta,f_\xi fθ,fξ得到特征,然后通过mlp g θ , g ξ g_\theta,g_\xi gθ,gξ得到特征 z z z,之后将 z θ z_\theta zθ再经过一层mlp得到 q θ ( z θ ) q_\theta(z_\theta) qθ(zθ),希望得到的这个结果与 z ξ ′ z'_\xi zξ′尽可能的相似。
训练网络的时候采用MSE loss
不使用batch norm会导致模型坍塌,后续研究表明使用batch norm会让模型学习到batch中的所有样本,相当于是学习到了负样本的信息。
BYOL works even without batch statistics
提出batch norm 不关键的原因:实验发现及时在使用batch norm的条件下,某些特例依然表现不佳。
作者给出解释的理由是:如果一开始就能让模型初始化比较好,那么后面的训练即使不用batch norm也没问题
Exploring Simple Siamese Representation Learning
提出的创新点:
- 不使用负样本
- 不使用动量编码器
- 不适用大的batch size
作为认为该模型能够成功训练而不坍塌的原因在于stop gradient操作
Transformer
An Empirical Study of Training Self-Supervised Vision Transformers
核心论点:提高VIT的稳定性
MoCoV3相当于MoCoV2和SimSiam的合体
采用ViT作为骨干时存在一个问题就是当batch size增大后训练会变得不稳定。
解决方法:冻住patch projection层
Emerging Properties in Self-Supervised Vision Transformers
效果:完全不用任何标签信息训练出的vision transformer,其自注意图能够准确的抓住物体的轮廓信息。
和BYOL结构相似,但作者采用的是蒸馏的思想,把两个编码器一个看成student,一个看成teacher