一文看清这些年自监督和无监督的进展

c024c2b8cc0326b63a2c59b98c4a2169.png

最早在2005年被Sumit Chopra et all提出.对比学习是一种从相似/不相似数据pair对中学习相似/不相似表征的框架。常见的损失函数就是InfoNCE,如下所示:

83168ceb884b4c427741de76190c7d97.png

q是query样本的表达,k+和k-分别是正例和负例的表达.通常q和k是同一个图片的增强样本.最后温度超参tau用户调节敏感度,这在很多对比学习论文中都是这样的思路.

226e1e2914a40dae27d2412d7b9f75aa.png

最著名的莫属Ting Chen et al提出的SimCLR.

f7368b3d8d1ce44fdbd39d954c90569f.png

首先,我们通过对一个mini-batch做增强,以获得positive pair。然后,将相同的编码器f和投影g(MLP)应用于增强样本。最后,我们应用上面定义的对比损失来最大化相同样本图像的positive pair之间的一致性,最小化距离。需要注意的是,batchsize越大,对比学习框架中的负面样本就越多,这带来了计算复杂度。

d1347b7441d3c5f5ab262fb0026a3d51.png

cdc8e8bed26fd5e1cbff66cb027435ba.png

7e4928e90e9811b860cbd4deefad809e.png

Ishan Misra et al提出PIRL,上图显示了PIRL框架的概述。I_t是原始样本图像I的增强样本,而θ表示主编码器(ResNet)的权重,f和g是两个独立的投影(全连接层)。正如我们所看到的,我们需要获得9个变换/增强的图像块,并连接它们的表示。最后使用下式进行对比学习:

7bf51fdda2edfb4f3b3a2ea72083b178.png

m_I是原始图像的特征向量,用完会存在memory bank M中,因此上式的目标就是最大化特征向量m_I和来自两个分支的相应投影之间的一致性。需要注意负样本是从memory bank中随机抽取的。

4f4bcc565abd3bab5d844d404de8dcba.png

Kaiming He et al 提出MoCo, 如下图所示:

e802fd05bbf6ff8a815d6227d06e378d.png

如上图所示,作者放弃了在整个训练过程中存储特征表示的memory bank,因为它在训练中会带来内存开销。相反,他们引入了一个momentum encoder,该编码器被更新为主要在线编码器的移动平均值。此外,他们提出字典作为队列结构(先进先出),它还存储特征表示。它比内存库小得多,因为作者认为不需要存储过去epoch获得的特征向量。如图中所示,对比损失是通过最小化来自两个网络的图像增强pair对的表示距离和最大化从字典中随机抽样的表示距离来实现的。有趣的是,有很多研究表明,由memory实现的表示平均与momentum encoder非常相似。然而,动量编码器显著降低了内存成本。

伪代码如下:

7faa70b346062f4bc1c6651dfe8dd6af.png

f9ac57291e686a6e7dd31d1227aa0340.png

a70cb411175cf512d8678d5834ffab34.png

MoCo v2对原始框架进行了一些修改。根据上图,总结如下:

1、两个encoder增加了mlp作为最终模块,如下代码所示.我们可以看到,我们只是用一对全连接层替换最后一个完全连接的层,中间有ReLU激活(隐藏层2048-d,带有ReLU)。

3f4282e0910a802e90a39b504a4eb61e.png

2、更强的数据增强方式(blur augmentation)

3、学习率(cosine learning rate scheduler)

MoCo v3伪代码如下:

9394e8602dca4cd42840b6aef2dd4e2e.png

总结就是所有mlp都有BN,并且batch size在4096效果足够好,伪代码中的backbone可以尝试用ViT做替换.

7fbe4da577e8cb35b3c82862c2102efa.png

3aa75cb5cf662b70f12a785bb6e5f614.png

BYOL完全放弃了MoCo和PIRL使用的字典和Memory Buffer的方式,提出了prediction head.上图中,我们可以看到prediction head是作为在线encoder的,并且尝试去预估momentum encoder的投影,prediction head的存在就是避免所有representation都是一样的.

作者完全放弃使用阴性样本,并提出如下损失:

b486da9f1bd86cd64837ad6f4106d532.png

此外还有Siamese和RAFT.以下参考文献中的论文都推荐大家详细阅读.

644ecc7c1102e1d4bc641d09fe614c1e.png
1、Learning a Similarity Metric Discriminatively, with Application to Face Verification
http://yann.lecun.com/exdb/publis/pdf/chopra-05.pdf
2、A Simple Framework for Contrastive Learning of Visual Representations
https://arxiv.org/pdf/2002.05709.pdf
3、Self-Supervised Learning of Pretext-Invariant Representations
https://arxiv.org/pdf/1912.01991.pdf
4、Momentum Contrast for Unsupervised Visual Representation Learning
https://arxiv.org/pdf/1911.05722.pdf
5、Bootstrap Your Own Latent A New Approach to Self-Supervised Learning
https://arxiv.org/pdf/2006.07733.pdf
6、An Empirical Study of Training Self-Supervised Vision Transformers
https://arxiv.org/pdf/2104.02057.pdf
7、Exploring Simple Siamese Representation Learning
https://arxiv.org/pdf/2011.10566.pdf
8、RUN AWAY FROM YOUR TEACHER: UNDERSTANDING BYOL BY A NOVEL SELF-SUPERVISED APPROACH
https://arxiv.org/pdf/2011.10944.pdf

监督对比学习是一种用于训练深度神经网络的自监督学习方法,它在没有标签的大规模未标记数据上进行训练。该方法通过使模型学习将相似样本聚集在一起,将不相似样本分开来,从而学习到有用的特征表示。 以下是几种常见的无监督对比学习方法: 1. MoCo(Momentum Contrast):MoCo是一种基于对比学习的方法,它使用了动量更新策略来增强对比学习的性能。它通过构建一个动态的字典来扩展正样本的数量,并使用动量更新策略来提高特征的一致性。 2. SimCLR(Simple Contrastive Learning):SimCLR是一种简单而有效的对比学习方法,它通过最大化正样本间的相似性并最小化负样本间的相似性来进行训练。SimCLR使用了数据增强和大批量训练等技术来提高性能。 3. SwAV(Swapping Assignments between Views):SwAV是一种基于视图交换的对比学习方法,它通过交换不同视图下的样本分配来增强对比学习过程。SwAV还使用了聚类损失来进一步优化特征表示。 4. BYOL(Bootstrap Your Own Latent):BYOL是一种基于自举的对比学习方法,它通过预测一个网络的自我编码器输出来进行训练。BYOL使用了移动平均权重和在线网络更新等技术来提高性能。 5. SimSiam(Simplified Siamese):SimSiam是一种简化的孪生网络对比学习方法,它通过最大化网络预测的一致性来进行训练。相比于传统的对比学习方法,SimSiam省略了负样本的构造过程,简化了训练过程。 这些无监督对比学习方法在图像和自然语言处理等领域都取得了很好的效果,并且被广泛应用于预训练模型的训练中。每种方法都有其独特的特点和优势,可以根据具体任务和数据集选择适合的方法进行使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值