MoCo和SimCLR【CV双雄】
文章目录
- 文章列表
- 五、MoCo V1
- 5.1 文章摘要
- 5.2 实验结果
- 5.3 文章图示
- 图 1: Momentum Contrast (MoCo) 训练方法概述
- 图 2: 三种对比损失机制的比较
- 六、SimCLR V1
- 6.1 文章摘要
- 6.2 文章实验
- 6.3 文章图示
- 图 1: ImageNet Top-1 Accuracy of Linear Classifiers
- 图 2: 对比学习框架
- 图 3:全局和局部视图 相邻视图
- 图 4: 数据增强的组合
- 七、MoCo v2
- 7.1 文章摘要
- 7.2 实验结果
- 7.3 文章图示
- 图 1: 对比学习的两种优化机制
- 表 1: MoCo基线的消融研究
- 表 2: MoCo与SimCLR的比较
- 7.4 通俗理解
- 7.5 具体升级
- 八、SimCLR v2
- 8.1 文章摘要
- 8.2 文章重点
- 8.3 文章图示
- 8.4 文章总结
- 8.5 具体改进
文章列表
文章参考 对比学习论文综述【论文精读】 🌹 🚀
是否完成 | 年份 | 文章及其链接 | 简介 | 其他 |
---|---|---|---|---|
✅ | 2018 | InstDisc | 提出实例判别和memory bank做对比学习 | |
✅ | 2019 | InvaSpread | 一个编码器的端到端对比学习 | |
✅ | 2018 | CPC | 对比预测编码,图像语音文本强化学习全都能做 | |
✅ | 2019 | CMC | 多视角下的对比学习 | |
✅ | 2019 | MoCov1 | 无监督训练效果也很好 | |
✅ | 2020 | SimCLRv1 | 简单的对比学习 (数据增强 + MLP head + 大batch训练久) | |
✅ | 2020 | MoCov2 | MoCov1 + improvements from SimCLRv1 | |
✅ | 2020 | SimCLRv2 | 大的自监督预训练模型很适合做半监督学习 | |
✅ | 2020 | BYOL | 不需要负样本的对比学习 | |
✅ | 2020 | SWaV | 聚类对比学习 | |
✅ | 2020 | SimSiam | 化繁为简的孪生表征学习 | |
✅ | 2021 | MoCov3 | 如何更稳定的自监督训练ViT | |
✅ | 2021 | DINO | transformer加自监督在视觉也很香 |
前情提要:
第一阶段大概讲了这四篇论文,可以看到
- 它们使用的
代理任务
是不一样的,有个体判别,有预测未来,还有多视角多模态 - 它们使用的目标函数也不尽相同,有 NCE,有infoNCE,还有NCE的其它变体
- 它们使用的模型也都不一样,比如说Invariant spread用了一个编码器;Inst Disc用一个编码器和memory bank;CPC有一个编码器,还有一个自回归模型;CMC可能有两个甚至多个编码器
- 它们做的任务从图像到视频到音频到文字到强化学习,非常的丰富多彩
五、MoCo V1
《Momentum Contrast for Unsupervised Visual Representation Learning》, 文章提出了一种用于无监督,具体是自监督模型视觉表征学习的新技术,名为Momentum Contrast(MoCo)。
- MoCo将对比学习方法归纳为
字典查询问题
,贡献在于引入队列和动量编码器构建大而一致的字典,优化对比学习。与Inst Disc相似,均使用ResNet-50,特征维度128维,L2归一化,但MoCo采用InfoNCE损失(温度0.07),借鉴数据增强、学习率0.03及训练200 epochs。MoCo的亮点在于:
- 简单有效的影响力:动量编码器技术被后续工作如SimCLR、BYOL等广泛采用,显著提升无监督预训练效果,甚至超越有监督预训练。
- 高超的写作风格:从cv与nlp差异及无监督学习困境入手,将对比学习统一为字典查询问题,提出MoCo框架,旨在通过大字典提升性能,拓宽论文视野与深度。方法部分自顶向下,从目标函数出发,逐步展开网络结构与实现细节,灵活定义输入与网络结构,展现高度概括性与灵活性。
MoCo跟Inst Disc是非常相似的
- 它用队列取代了原来的memory bank作为一个额外的数据结构去存储负样本
- 它用动量编码器去
取代了原来loss里的约束项
,从而能达到动量的更新编码器的目的,而不是动量的去更新特征,从而能得到更好的结果
5.1 文章摘要
摘要:
- MoCo通过构建一个动态字典来实现无监督学习,该字典使用队列和移动平均编码器,从而在训练过程中实现大型且一致的字典构建。
- MoCo在ImageNet分类的常见线性协议上提供了有竞争力的结果,并且学习到的表征在多个下游任务中表现良好,甚至在某些情况下超过了有监督预训练模型。
- 研究表明,MoCo在许多视觉任务中大大缩小了无监督和有监督表征学习之间的差距,并且可以在多种应用中替代ImageNet有监督预训练。
重点:
- 引言:介绍了无监督表示学习在自然语言处理中的成功,以及在计算机视觉中的挑战。
- 相关工作:讨论了无监督/自监督学习方法,包括不同的预文本任务和损失函数。
- 方法:
- 对比学习作为字典查找:将对比学习视为训练编码器进行字典查找任务。
- MoCo:通过维护一个队列来构建动态字典,并使用动量更新来保持编码器的一致性。
- 预文本任务:使用简单的实例区分任务,其中查询和键是同一图像的不同视图。
- 实验:
- 在ImageNet和Instagram数据集上进行了无监督预训练,并在PASCAL VOC、COCO等数据集上进行了下游任务的评估。
- MoCo在多个下游任务中的表现超过了有监督预训练模型。
- 讨论和结论:MoCo在多个视觉任务中的表现表明,无监督学习可以与有监督学习相媲美。
5.2 实验结果
实验结果:
- MoCo在ImageNet线性分类协议上取得了60.6%的准确率,并且在使用不同的模型变体时表现更好。
- 在PASCAL VOC和COCO数据集上,MoCo在多个检测和分割任务中超过了有监督预训练模型。
5.3 文章图示
图 1: Momentum Contrast (MoCo) 训练方法概述
- 目的:展示MoCo方法如何通过对比学习训练视觉表征编码器。
- 内容:
- 图中展示了一个编码器网络,用于将输入数据(如图像)编码成特征向量。
- 使用对比损失函数来训练编码器,使得编码后的查询向量(q)与字典中的键向量(k)匹配。
- 字典键是通过维护一个队列来构建的,其中包含历史小批量数据的编码表示。
- 键向量由一个动量编码器编码,该编码器是查询编码器的缓慢进展版本。
- 结论:MoCo方法能够构建一个大型且一致的字典,有助于无监督学习视觉表征。
图 2: 三种对比损失机制的比较
这三种机制的不同之处在于密钥的维护方式和密钥编码器的更新方式。(a):用于计算查询和键表示的编码器通过反向传播被端到端地更新(这两个编码器可以是不同的)。(b)从存储器组[61]中对密钥表示进行采样。( c)MoCo通过动量更新编码器对新密钥进行动态编码,并维护密钥队列(此图中未示出)。
- 目的:比较不同的对比损失机制,包括端到端更新、记忆库方法和MoCo。
- 内容:
- 端到端更新:查询和键的编码器通过反向传播更新。
- 记忆库方法:从记忆库中随机抽取字典键,不涉及反向传播。
- MoCo:使用动量更新的编码器实时编码新键,并维护一个键的队列。
- 结论:MoCo方法在保持字典键的一致性方面具有优势,同时支持更大的字典大小。
六、SimCLR V1
《A Simple Framework for Contrastive Learning of Visual Representations》, 文章提出了一个名为SimCLR的简单框架,用于无监督视觉表征的对比学习。
6.1 文章摘要
摘要:
- SimCLR通过对比学习来学习视觉表征,它简化了最近提出的对比自监督学习算法,无需专门的架构或内存库。
- 通过系统地研究框架的主要组成部分,文章展示了数据增强的组合、在表征和对比损失之间引入可学习的非线性转换以及对比学习从更大的批次大小和更多的训练步骤中受益。
- SimCLR在ImageNet上实现了最先进的自监督和半监督学习性能。在仅有1%标签的情况下进行微调,SimCLR达到了85.8%的top-5准确率,超过了使用100倍标签的AlexNet。
重点:
- 引言:介绍了无监督学习在计算机视觉中的重要性和挑战。
- 相关工作:讨论了无监督表示学习的相关研究,包括生成和判别方法。
- 方法:
- 对比学习框架:通过最大化来自同一数据样本的不同增强视图之间的一致性来学习表示。
- 数据增强:数据增强的组合对于定义有效的预测任务至关重要。
- 非线性投影头:在表征和对比损失之间引入非线性投影头可以显著提高学习表征的质量。
- 对比损失:使用NT-Xent损失函数,优化了正负样本的权重。
6.2 文章实验
- 实验:
- 在ImageNet、CIFAR-10和CIFAR-100等数据集上进行了广泛的实验。
- 在不同的下游任务中评估了学习到的表征,包括分类、目标检测和分割。
- 结论:SimCLR通过简单的框架和训练策略实现了优异的性能,证明了无监督学习在视觉任务中的潜力。
实验结果:
- SimCLR在ImageNet线性分类协议上达到了76.5%的top-1准确率,与监督预训练的ResNet-50相匹配。
- 在使用极少标签(1%)进行微调时,SimCLR的性能超过了使用全部标签的AlexNet。
代码:文章提供了SimCLR的代码链接。
文章的实验结果表明,通过仔细选择数据增强、损失函数和训练策略,无监督学习方法能够在多种视觉任务中与有监督学习方法相媲美。
6.3 文章图示
《A Simple Framework for Contrastive Learning of Visual Representations》中提到的图表展示了SimCLR方法的性能和对比学习的相关分析。以下是对文章中提到的图表的详细解释:
图 1: ImageNet Top-1 Accuracy of Linear Classifiers
- 目的:比较不同自监督学习方法在ImageNet数据集上的性能。
- 内容:
- 展示了使用不同自监督方法预训练的模型在ImageNet上的top-1线性分类准确率。
- 包括了SimCLR与多种其他方法的比较,如InstDisc、MoCo、PIRL等。
- 灰色的十字表示有监督的ResNet-50作为基准。
- 结论:SimCLR在自监督学习领域取得了显著的性能,与有监督学习的性能相当。
图 2: 对比学习框架
- 目的:展示SimCLR框架的工作原理。
- 内容:
- 描述了如何通过随机数据增强生成两个视图(正样本对),并通过对比损失函数最大化它们的一致性。
- 展示了基础编码器和投影头的作用,以及如何使用对比损失。
- 结论:通过简单的框架和有效的数据增强策略,SimCLR能够有效地学习视觉表征。
数据扩充算子是从同一个扩充族(t ˇ T和t ˇ
T)中抽取的,并应用于每个数据示例,以获得两个相关视图。训练基本编码器网络f(·)和投影头g(·)以使用对比损失最大化一致性。训练完成后,我们扔掉投影头g(·),使用编码器f(·)和表示h进行后续任务
图二里说,如果有一个mini-batch的图片,假如说是x,对这个mini-batch里的所有图片做不同的数据增强就会得到x i和xj
在图二所描述的对比学习(Contrastive Learning)框架中,提到的关于数据增强和正负样本的构造过程,可以通过以下方式详细解释:
首先,假设我们有一个mini-batch的图片集合,我们称之为 X X X,其中包含了 n n n张图片(即batch size为 n n n)。对于这 n n n张图片中的每一张图片 x i x_i xi(其中 i i i从1到 n n n),我们执行两种不同的数据增强操作(例如,裁剪、旋转、颜色失真等),从而得到两个增强的图片版本: x i ′ x_i' xi′和 x i ′ ′ x_i'' xi′′。这里的关键是,对于同一张原图 x i x_i xi,通过不同的数据增强操作生成的两个版本 x i ′ x_i' xi′和 x i ′ ′ x_i'' xi′′被视为正样本对。
接下来,关于负样本的构造:
- 对于每个正样本对(例如, x i ′ x_i' xi′和 x i ′ ′ x_i'' xi′′),剩下的 n − 1 n-1 n−1张原图(即 x 1 , . . . , x i − 1 , x i + 1 , . . . , x n x_1, ..., x_{i-1}, x_{i+1}, ..., x_n x1,...,xi−1,xi+1,...,xn)以及它们各自通过数据增强得到的图片版本,均被视为当前正样本对的负样本。
- 值得注意的是,由于每个 x j x_j xj( j ≠ i j \neq i j=i)都会生成两个增强的版本(例如, x j ′ x_j' xj′和 x j ′ ′ x_j'' xj′′),所以负样本的总数实际上是原图数量的两倍( 2 ( n − 1 ) 2(n-1) 2(n−1)),但是需要注意的是,我们实际上是在计算损失时不会重复计算同一张图的不同增强版本作为负样本对正样本的影响,而是会考虑整个batch中所有不同图片(包括它们的增强版本)对某个正样本对的贡献。
因此,总结来说,在batch size为 n n n的情况下:
- 正样本的个数确实是 n n n,因为每张原图都会生成一个正样本对。
- 负样本的个数并不是简单的两倍的 n − 1 n-1 n−1(即 2 ( n − 1 ) 2(n-1) 2(n−1)),因为我们在计算损失时不会重复考虑同一张图的增强版本。但从概念上讲,我们可以认为batch中除了当前正样本对所对应的原图及其增强版本外,所有的其他图片(及其增强版本)都作为潜在的负样本参与损失的计算。
这样的设计有助于模型学习到对于不同变换(数据增强)下仍然保持一致的特征表示,同时能够区分不同图片之间的差异,从而学习到更加鲁棒和泛化的视觉表示。
图 3:全局和局部视图 相邻视图
- 实心矩形是图像,虚线矩形是随机裁剪。通过随机裁剪图像,我们对包括全局到局部视图(B → A)或相邻视图(D → C)预测的对比预测任务进行采样。
图 4: 数据增强的组合
- 目的:分析数据增强的组合对学习有效表示的影响。
- 内容:
- 展示了不同数据增强操作的组合对性能的影响。
- 包括了随机裁剪、颜色失真和高斯模糊等增强操作。
- 结论:随机裁剪和颜色失真是学习有效表示的关键数据增强操作。
和MoCo比起来确实很简单,这里只有一个编码器,既不需要memory bank,也不需要队列和动量编码器;正负样本全都是从同一个mini-batch里来的;整个前向过程非常的直接,就是图片进入编码器编码然后projector降维,最后算个对比学习的loss,非常符合大家对深度学习工作的期待
-
前面说invariant spread可以看作是SimCLR的前身,为什么这么说呢?本文其实整体的这个思路和结构跟SimCLR是基本一致的,SimCLR跟Inva Spread的区别其实都写在SimCLR的贡献列表里了
-
首先第一个就是它用了更多的数据增强,它发现对比学习真的是需要很强的数据增强的技术
-
第二就是它加了一个g函数(一个可以学习的分线性的变换,就是一个 mlp层)
-
第三就是它们用了更大的batch size ,而且训练的时间更久,它发现这两个策略都能让网络学到的特征变得更好
七、MoCo v2
《Improved Baselines with Momentum Contrastive Learning》, 文章提出了一种改进的无监督对比学习基线,称为MoCo v2,通过在MoCo框架中实施SimCLR的两项设计改进来实现。
7.1 文章摘要
- MoCo v2通过在MoCo框架中引入MLP投影头和更强的数据增强,提高了无监督学习的性能。
- 这些改进使得MoCo v2在ImageNet分类和PASCAL VOC目标检测任务中超过了SimCLR,并且不需要大批量训练。
- MoCo v2的实现更易于访问,因为它不需要像SimCLR那样的大型TPU支持,可以在标准的8-GPU机器上运行。
- 作者希望这些改进的基线能够为未来的无监督学习研究提供参考,并计划公开代码。
重点:
- 引言:介绍了对比学习在无监督表示学习中的进展,以及MoCo和SimCLR在这一领域的贡献。
- 背景:对比学习框架通过组织成相似/不相似对的数据来学习相似/不相似的表示。
- 改进设计:SimCLR在端到端变体的实例区分任务中进行了三方面的改进:更大的批次大小、MLP头部替换和更强的数据增强。
7.2 实验结果
- 实验:
- 在ImageNet数据集上进行无监督学习,并遵循两种常见的评估协议:ImageNet线性分类和转移到VOC目标检测。
- 通过实验验证了MLP头部和数据增强在MoCo框架中的有效性。
- 与SimCLR相比,MoCo v2在较小的批次大小下达到了更好的性能,并且不需要大型TPU支持。
- 计算成本:MoCo v2在内存和时间成本上比端到端变体更高效。
实验结果:
- MoCo v2在ImageNet线性分类协议上达到了67.5%的准确率,超过了SimCLR。
- 在PASCAL VOC目标检测任务中,MoCo v2也显示出比SimCLR更好的性能。
结论:MoCo v2通过简单的修改实现了更好的无监督学习基线,并且更容易在标准硬件上实施,这可能有助于推动无监督学习领域的研究。
7.3 文章图示
在文章《Improved Baselines with Momentum Contrastive Learning》中,图表用于展示实验结果和方法的比较。以下是对文章中提到的图表的详细解释:
图 1: 对比学习的两种优化机制
- 目的:从批处理的角度展示两种对比学习优化机制。
- 内容:
- (a) 端到端机制:负键(负样本)来自同一批次,并通过反向传播端到端更新。
- (b) MoCo机制:负键在队列中维护,只有查询和正键在每个训练批次中编码。
- 展示了这两种机制如何在表示空间中计算成对亲和性。
- 结论:
- MoCo机制可以处理大量的负样本,而不需要大批次大小。
- MoCo通过动量编码器维持当前和早期键的表示一致性。
对比学习的两种优化机制的透视。图像被编码到表示空间中,在该表示空间中计算成对的亲和度。
“affinity” 指的是在对比学习框架中用于衡量样本之间相似度的度量。在对比学习的上下文中,affinity 通常指代特征向量之间的相似性得分,这可以通过不同的相似性度量方法来计算,例如点积、余弦相似性或其他距离度量。
Affinity 在对比学习中的角色:
-
正样本对的相似度:在对比学习中,如果两个数据增强版本来自同一张图片,它们会被视为正样本对,模型的目标是使得这些正样本对的 affinity 值较高。
-
负样本对的相似度:与正样本对相对,负样本对来源于不同的图片,模型的目标是使得负样本对的 affinity 值较低。
-
损失函数:在对比损失函数(如InfoNCE损失)中,affinity 用于计算损失,模型通过最大化正样本对的相似度同时最小化负样本对的相似度来训练。
表 1: MoCo基线的消融研究
- 目的:展示在MoCo框架中引入MLP投影头和额外数据增强对性能的影响。
- 内容:
- 展示了不同的训练配置,包括是否使用MLP头、额外的数据增强(aug+),以及是否使用余弦学习率调度(cos)。
- 列出了在ImageNet线性分类和PASCAL VOC目标检测任务上的性能。
- 显示了使用不同配置时的准确率(acc.)和目标检测的AP50和AP75指标。
- 结论:
- 使用MLP头和额外的数据增强可以显著提高模型的性能。
- 这些改进使得MoCo v2在较小的批次大小下达到了比SimCLR更好的性能。
表 2: MoCo与SimCLR的比较
- 目的:比较MoCo v2和SimCLR在ImageNet线性分类任务上的性能。
- 内容:
- 展示了在不同的训练配置下,MoCo v2和SimCLR的准确率。
- 包括了是否使用MLP头、额外的数据增强,以及不同的批次大小。
- 结论:
- MoCo v2在较小的批次大小下达到了比SimCLR更好的性能。
- MoCo v2在800周期预训练时达到了71.1%的准确率,超过了SimCLR在1000周期预训练时的69.3%。
7.4 通俗理解
- MoCo v2主要就是说,在看到SimCLR这个比较好的结果以后,它们发现SimCLR里的那些技术都是即插即用型的,所以说它们就把那些就拿过来了,它直接说,就在MoCo上面做很简单的改动,引入了
mlp projection head
以及使用更多的数据增强,就又刷新ImageNet 上的最好成绩,不仅比之前的MoCo高很多,而且比最新的SimCLR也要高很多
7.5 具体升级
MoCo v2 具体进行了哪些改进?如下表表1所示
准确的说就四个方面
改进的设计。SimCLR [2]在三个方面改进了实例区分的端到端变体:(i)实质上更大的批次(4k或8k),可以提供更多的负样本;(ii)用MLP头替换输出fc投影头[16];(iii)更强的数据增强。在MoCo框架中,大量的负样本是现成的;
MLP头部和数据扩充与对比学习的实例化方式是正交的
- 灰色的结果76.5属于是有监督的这个基线模型; MoCo v 1只能达到60.6,差的还是比较远的
- 就在上面加上这个projection head mlp层,一下准确率就提高到66.2,就长了6个点,所以说加projection head 不光是对 SimCLR 有用,对MoCo也有用,其实对其之后的很多方法都有用,像SwAV呢也用了,BYOL也用了
- 如果使用更强的数据增强,就是也能提三个点,从60到63,但是不如mlp提升的多
- 如果把这个mlp 和augmentation一起用就已经到67.3了,就非常高了
- 再加上这个cos的这个学习率,就到67.5还能再提0.2个点,那这个提升就很小了可以忽略不计
- 最后如果训练更长的时间,训练800 epochs,就能再提高到71.1,SimCLR结果也是这样,如果它训练更久的话,它的结果也会提升很多,一直到现在为止,就连凯明最新的MAE这个工作,也是训练了1,600个epochs,而且的这个效果还在继续往上涨
无监督学习真的是训练的越久或者模型越大,它的结果就会越好
八、SimCLR v2
- 《Big Self-Supervised Models are Strong Semi-Supervised Learners》提出了一种新的半监督学习算法,该算法包括三个步骤:无监督预训练、监督微调和使用未标记样本进行蒸馏。下面是对论文重点和摘要的总结:
8.1 文章摘要
- 论文提出了一种新的半监督学习范式,即先进行无监督预训练,然后进行监督微调。
- 作者们发现,使用大型(深层和宽层)网络在预训练和微调阶段非常关键,尤其是当标记样本较少时。
- 论文提出了一种改进的对比学习框架SimCLRv2,用于无监督预训练ResNet架构。
- 通过在ImageNet数据集上进行实验,作者们展示了他们的方法在仅使用1%的标签时,就能达到73.9%的top-1准确率,这是之前最佳方法的10倍提升。
- 进一步地,当使用10%的标签时,他们的方法能够达到77.5%的top-1准确率,超过了使用全部标签的标准监督训练。
8.2 文章重点
- 无监督预训练的重要性: 论文强调了在标记样本有限的情况下,使用大型网络进行无监督预训练的重要性。
- SimCLRv2框架: 作者们提出了SimCLRv2,这是一个改进的对比学习框架,用于无监督预训练。
- 监督微调: 在无监督预训练之后,使用少量标记样本对模型进行监督微调。
- 蒸馏技术: 使用未标记样本对大型网络进行进一步的改进,并通过蒸馏技术将知识转移到更小的网络中,以提高分类准确率。
- 实验结果: 在ImageNet数据集上的实验结果表明,该方法在标签效率上有显著提升,即使在标签数量很少的情况下也能实现高准确率。
- 模型大小与标签效率: 论文发现,更大的模型在标签效率上表现得更好,即使它们有更大的过拟合风险。
文章中的图表提供了对论文提出的方法和实验结果的直观展示。以下是对文章中提到的一些图表的解读:
8.3 文章图示
-
图 1: 展示了更大的模型在用少量标记样本
进行微调
时获得的增益更大。图中显示了不同大小的模型在不同标签比例下的ImageNet top-1准确率的相对提升。这表明,当标签数量较少时,更大的模型可以更有效地利用未标记数据。
-
图 2: 展示了使用1%或10%标签的先前最佳方法(SOTA)和本文提出的方法(SimCLRv2)在ImageNet上的top-1准确率。虚线表示使用100%标签训练的完全监督的ResNet-50。这显示了本文提出的方法在标签数量较少时显著优于先前的方法。
- 图 3: 描述了本文提出的半监督学习框架,该框架利用未标记数据的两种方式:(1) 在无监督预训练中的task-agnostic使用,(2) 在自训练/蒸馏中的task-specific使用。这个框架包括三个主要步骤:无监督预训练、监督微调和使用未标记数据进行蒸馏。
8.4 文章总结
这篇文章分了三个部分
- 第一部分就是SimCLR,怎样自监督或者说自监督的对比学习去训练一个大的模型出来
- 第二部分就是说,一旦有了这么好的一个模型,只需要一小部分有标签的数据,然后去做一下有监督的微调,一旦微调结束了,就相当于有一个 teacher 模型,就可以用这个teacher模型去生成很多伪标签,这样就可以在更多的无标签的数据上去做自学习了
8.5 具体改进
作者其实就在第三页大概花了半页的篇幅来讲了一讲怎么把v1变成v2了,其实大概就是提高了这三个点:
- 第一个就是大家其实都公认的一个事实,就是用更大的模型,无监督训练就会训练的更好,在这里就换了一个更大的模型,换了一个152层的残差网络,同时用了这个selective kernels,也就是SK net,这个骨干网络变得非常的强
- 第二点改进就是,之前SimCLR说protection head的mlp层特别有用,而且MoCo v2也证明了特别特别的有用,所以SimCLR的作者就想那一层都这么有用了,把它再变深点会不会更有用,所以它就试了试变成两层变成三层这个性能会不会继续提升,
最后发现其实就是两层就够了
,原来是 fc + relu,现在是 fc + relu fc + relu,一层变成两层的 mlp,这个效果呢就最好了,就是加深了这个projection head - 第三点改进就是它们也使用了
动量编码器
(这里说 motivated by 29,就是MoCo v2 ,20就是 MoCo),就是SimCLR的作者发现MoCo 的这个动量编码器真的很管用,所以也想试一试,事实上动量编码器真的管用,后面BYOL 都用了动量编码器,但在这里作者说动量编码器在SimCLR 里的提升并不是很大可能就提了一个点,具体原因它们解释说,因为它们已经有非常大的这个mini-batch,要么是4096,要么是8192,所以它们的负样本已经相当多了,所以不论是从字典的大小,还是从字典里特征一致性来说,SimCLR v2 都已经做的很好了,所以说再加这种队列或者加这种动量编码器其实都不会带来很大的提升
总的来说就是三点改进:
- 使用了更大的模型
- 加深了projection head
- 引入了动量编码器