赛尔笔记 | 对比学习简述

2021 年 5 月 13 日 哈工大SCIR

作者:哈工大SCIR 侯鹏钰

1. 摘要

基于自监督学习的Bert[1]预训练模型在NLP领域大放光彩,在多项下游任务中均取得很好的效果。Bert在无标注的语料中充分地学到了通用的知识,那么很容易引出一个问题,CV领域是否也可以“复现”Bert的成功呢?近年比较火热的对比学习或许是这个问题的一个答案。

对比学习(Contrastive Learning)是自监督学习的一种,需要从无标注的图像数据中学习特征表示,并用于下游任务中。其指导原则是:通过自动构造相似实例和不相似实例,学习一个表示学习模型,通过这个模型,使得相似的实例在投影空间中比较接近,而不相似的实例在投影空间中距离比较远。本文将介绍对比学习的基本思路以及经典的MoCo系列[2][3][4]SimCLR系列模型[5][6],了解对比学习的方法和特性。

2.研究动机

首先自监督学习的定义为:自监督学习属于无监督学习范式的一种,特点是不需要人工标注的类别标签信息,直接利用数据本身作为监督信息,来学习样本数据的特征表示,并用于下游任务。在特征的表示学习中,自监督优势主要体现在以下两点:

  • 无需大量的标注数据,在很多任务例如强化学习中,获取标签所带来的边际成本更高

  • 更关注数据本身的信息,数据本身可以提供比稀疏的标签更多的信息,有监督学习的算法通常需要采用大量样本来学习,并收敛到可能是“脆弱”的结果

  • 可以学习到更通用的知识,相比于特定任务的模型所学到的表示,自监督学习得到的表示通常可以更好的迁移到下游任务中

自监督学习主要分为两大类:生成式(预测式)方法和对比式方法,如下图[7]所示:

图1 自监督学习类别

其中生成式方法在NLP领域可以参考Bert的掩码语言模型(MLM,Masked Language Modeling),MLM随机mask掉输入中的部分tokens,目标是通过这些tokens的上下文信息来预测出这些tokens,在CV领域可以参考变分自编码器[8](VAE,Variational Auto-Encoder)和生成式对抗网络[9](GAN,Generative Adversarial Networks),他们通过模型对图像进行编码再解码重构的方式完成训练。而对比式的方法则是将数据分别与正例样本和负例样本在特征空间进行对比,来学习样本的特征表示。在CV领域,生成式方法更注重于像素级别的重构,这也导致模型所学习的编码更注重于像素的细节,但是通过人的直觉可以认识到,我们记忆和区分事物并不是通过像素级别的特征来区分的,而是通过一些更高级的特征。因此,如何提取更高级的特征并使用其进行区分,成为了对比学习研究的主要目的。

3.对比学习基本思路

给定数据 ,对比学习的目标是学习一个编码器 ,使得:

其中 被称为锚点数据, 是和 相似的正样本, 是和 不相似的负样本, 是一个度量函数来衡量正负样本的相似度。 函数经常采用欧氏距离、余弦相似度等。

为了优化编码器 ,对比学习一般构造softmax分类器对正样本和负样本进行分类,损失函数此处介绍Info NCELoss,公式如下:

4.模型介绍

4.1 MoCo v1[2]

MoCo是由Kaiming He的团队发表在CVPR2020的工作,MoCo通过对比学习的方法,将无监督学习在ImageNet的分类的效果超过有监督学习的性能。MoCo关注的重点是样本数量对学习到的质量的影响。MoCo使用的正负样例生成方法中,正样本生成方法:随机裁剪,生成两个区域,同一张图片的两个区域是正样本,不同图片的两个区域是负样本,即判断两个区域是否为同一张图片。首先介绍简单的end-to-end模型结构,如下图:

图2 MoCo-end2end结构图
定义 分别为正负样本的key, 分别为正负样本,end-to-end模型可以使用同一个encoder或两个encoder来编码 ,然后通过内积计算 。需要注意的是,在end-to-end模型中,dictionary size即为mini-batch size,每个batch内的负样本也会对 产生贡献,反向传播过程中会有梯度回传给需要学习的encoder函数 ,因此在实现的时候,负样本数量必然会受到batch_size大小的限制,从而限制影响模型的性能。针对这个问题,作者介绍了Memory Bank和MoCo模型,结构如下图所示:

图3 MoCo-MemBank-MoCo结构图
Memory Bank模型解耦合dictionary size与mini-batch size,即负样本不在每个batch中进行选取,而是在所有样本的特征组成的bank中进行采样,通过随机采样,一定程度上可以认为一个query采样的负样本能代表所有样本,但是带来的问题是每个mini-batch的反向传播都会更新encoder参数,如果每一次更新重新encode一次所有样本,内存需求较大,如果只是更新下一次采样的k个样本,得到的表示和参数更新存在一定的滞后。而文章提出的MoCo则是融合了end-to-end和Memory Bank,并解决了之前存在的问题,添加了momentum encoder,将dictionary作为一个动态进出的队列,目标是构建一个大的且能在训练过程中保持一致性的dictionary,作者用该队列维护最近几个mini-batch中样本特征表示,并将队列作为所有样本采样的子集,对于负样例的encoder参数 ,采用Momentum update方法,复制正例encoder的参数 ,公式为:

4.2 SimCLR v1[5]

SimCLR是由Ting Chen等人发表在ICML2020的工作,与MoCo相比,SimCLR关注的重点是正负样例的构建方式,同时SimCLR还探究了非线性层在对比学习中的作用,并分析了batch_size大小、训练轮数等超参数对对比学习的影响。SimCLR模型结构图如下所示:

图4 SimCLR结构图
给定输入的锚点数据为 ,首先通过数据增强(随机裁剪、颜色失真、高斯模糊等)生成正负样本对,采用ResNet50作为encoder,即函数 ,在编码得到表示后通过MLP将表示映射到对比学习损失的空间,目标是希望同一张图片的不同augmentation表示相近,与mini-batch中其他图片的augmentation表示较远。
作者在数据增强的步骤中通过如下方式生成:

图5 SimCLR数据增强
作者实验了多种数据增强方法,最终得出结论:数据增强对对比学习效果提升有明显作用,并且多种数据增强的组合效果更好;数据增强对对比学习的提升比对有监督学习的提升高。此外,通过在得到编码表示后添加非线性变化,发现encoder编码后的 会保留和数据增强变换相关的信息,而非线性层的作用就是去掉这些信息,让表示回归数据的本质,提高对比学习效果。作者未使用memory bank等方法,仅通过增大batch_size至8192(使用128块TPU)及增大训练轮数等,验证得到更大的batch_size和更长的训练时间对对比学习提升的效果显著。最终SimCLR的实验效果可以达到在ImageNet上超过MoCo 7%。

4.3 MoCo v2[3]

在SimCLR发表一个月后,Kaiming He等人发表了MoCo v2,主要借鉴了SimCLR中的改动:

  • 改进了数据增强的方法,增加使用blur augmentation来进行增强

  • 在encoder得到表示后添加非线性层等

最终在以更小的batch_size和训练轮数,在ImageNet分类任务上提升超过SimCLR。

4.4 SimCLR v2[6]

SimCLR由Hinton组的Ting Chen在NIPS2020对SimCLR的模型部分做出了如下改进:

  • 相较于SimCLR v1使用的ResNet50(4x),SimCLR v2采用了带有SK的ResNet152(3x),该模型在使用1%的有标签数据进行微调后,性能比ResNet50提高了29%

  • 增大了非线性层 的深度,采用了三层的MLP,并且在进行下游任务的迁移时保留了第一层,在SimCLR v1中非线性层仅采用了一层MLP,并且在下游任务中会舍弃掉这一层,该改进在使用1%的有标签数据进行微调后,性能提升14%
  • 借鉴MoCo中的记忆机制,性能提升1%
除此之外,作者对ImageNet中的无监督方法预训练与有监督方法进行微调做了进一步的研究,并提出了如下图所示的模型:

图6 SimCLRv2

上图的半监督模型展示流程如下:

  1. 采用了相较于SimCLR v1更大的并且带有SK的ResNet152(3x)在ImageNet进行对比学习预训练

  2. 在小规模有标签的数据进行fine-tuning

  3. 通过蒸馏方式在无标签数据进行知识的迁移

最终,作者根据实验结果提出以下结论:

  • 半监督学习的性能受有标签数据规模的影响为:有标签数据规模越少,参数量更大的模型fine-tuning后性能的提升相比参数规模小的模型fine-tuning后的效果大

  • 尽管大模型对于广义特征表达非常重要,但是额外的模型容量对于特征任务而言可能并非必需的

  • 根据调整encoder模型后非线性层的数量,证明了非线性层的重要性,深的非线性层可以提高模型性能

4.5 MoCo v3[4]

终于,在2021年,Kaiming He及其团队在CVPR发布了MoCo v3,尝试使用Visual Transformer(ViT)作为encoder,但是MoCo v3中并不是使用之前改进的memory queue,而是使用SimCLR的large batch。在MoCo v3中,作者的研究回归基础问题,主要解决了对比学习在ViT训练过程中表现出的不稳定性。

使用ViT作为encoder后,作者还参考在负例编码器 添加了prediction head,MoCo v3达到了新的SOTA,但是作者在训练过程中发现,某些large batch的情况下,模型性能会发生一定幅度的下降,如下图所示:

图7 MoCov3-准确率震荡

在分析各层梯度变化后,猜测出现这种情况的原因可能是模型中第一层的梯度会出现骤增,作者给出的解决方法是固定模型的patch projection层,并认为该方法并非解决此问题的根本方法,但是使用该“trick”可以一定程度解决训练中出现的不稳定性(在学习率较高时仍会出现这种情况)。

5.总结

本文介绍了对比学习的基本思路和经典模型,并通过介绍MoCo系列和SimCLR系列模型展示了目前对比学习研究的重点。除文章中所介绍的模型外,近年来提出的SwAV[10]模型将聚类方法引入训练过程、只采用正例进行对比学习的BYOL[11]SimSiam[12]、以及在NLP领域使用对比学习的SimCSE[13]等,都值得深入学习和讨论,篇幅原因此处不详细展开,期待更多创新性的工作来提升对比学习的性能。

参考资料

[1]

Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018).

[2]

He, Kaiming, et al. "Momentum contrast for unsupervised visual representation learning." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.

[3]

Chen, Xinlei, et al. "Improved baselines with momentum contrastive learning." arXiv preprint arXiv:2003.04297 (2020).

[4]

Chen, Xinlei, Saining Xie, and Kaiming He. "An empirical study of training self-supervised visual transformers." arXiv preprint arXiv:2104.02057 (2021).

[5]

Chen, Ting, et al. "A simple framework for contrastive learning of visual representations." International conference on machine learning. PMLR, 2020.

[6]

Chen, Ting, et al. "Big self-supervised models are strong semi-supervised learners." arXiv preprint arXiv:2006.10029 (2020).

[7]

Contrastive Self-Supervised Learning https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html

[8]

Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint arXiv:1312.6114 (2013).

[9]

Goodfellow, Ian J., et al. "Generative adversarial networks." arXiv preprint arXiv:1406.2661 (2014).

[10]

Caron, Mathilde, et al. "Unsupervised learning of visual features by contrasting cluster assignments." arXiv preprint arXiv:2006.09882 (2020).

[11]

Grill, Jean-Bastien, et al. "Bootstrap your own latent: A new approach to self-supervised learning." arXiv preprint arXiv:2006.07733 (2020).

[12]

Chen, Xinlei, and Kaiming He. "Exploring Simple Siamese Representation Learning." arXiv preprint arXiv:2011.10566 (2020).

[13]

Gao, Tianyu, Xingcheng Yao, and Danqi Chen. "SimCSE: Simple Contrastive Learning of Sentence Embeddings." arXiv preprint arXiv:2104.08821 (2021).

本期责任编辑:丁 
本期编辑:朱文轩


哈工大SCIR公众号
主编:张伟男
副主编:丁效,刘铭,冯骁骋,赵森栋
执行编辑:杜佳琪
编辑:钟蔚弘,彭湃,朱文轩,冯晨,牟虹霖,张馨,王若珂,高建男

长按下图即可关注哈尔滨工业大学社会计算与信息检索研究中心微信公众号 哈工大SCIR
登录查看更多
0

相关内容

通过潜在空间的对比损失最大限度地提高相同数据样本的不同扩充视图之间的一致性来学习表示。对比式自监督学习技术是一类很有前途的方法,它通过学习编码来构建表征,编码使两个事物相似或不同
【AAAI 2022】用于文本摘要任务的序列级对比学习模型
专知会员服务
24+阅读 · 2022年1月11日
专知会员服务
88+阅读 · 2021年6月29日
专知会员服务
28+阅读 · 2021年6月25日
专知会员服务
38+阅读 · 2021年5月16日
多模态预训练模型简述
专知会员服务
108+阅读 · 2021年4月27日
专知会员服务
25+阅读 · 2021年4月13日
专知会员服务
62+阅读 · 2021年4月11日
【NeurIPS 2020】对比学习全局和局部医学图像分割特征
专知会员服务
42+阅读 · 2020年10月20日
专知会员服务
136+阅读 · 2020年9月6日
再介绍一篇最新的Contrastive Self-supervised Learning综述论文
夕小瑶的卖萌屋
1+阅读 · 2021年9月22日
赛尔笔记 | 自然语言推理数据集简述
哈工大SCIR
0+阅读 · 2021年9月1日
赛尔笔记 | 对比学习
哈工大SCIR
0+阅读 · 2021年7月27日
成本砍砍砍!不用数据也能用 BERT 做对比学习?
夕小瑶的卖萌屋
0+阅读 · 2021年7月20日
赛尔笔记| 对话摘要简述
哈工大SCIR
0+阅读 · 2021年6月15日
赛尔笔记 | 多模态预训练模型简述
哈工大SCIR
1+阅读 · 2021年4月27日
赛尔笔记 | 自然语言处理中的迁移学习(上)
哈工大SCIR
16+阅读 · 2019年10月17日
赛尔笔记 | 一文读懂图神经网络
哈工大SCIR
81+阅读 · 2019年7月12日
赛尔笔记 | BiLSTM介绍及代码实现
哈工大SCIR
23+阅读 · 2018年10月24日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
6+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
4+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
5+阅读 · 2008年12月31日
Arxiv
10+阅读 · 2018年4月19日
VIP会员
相关VIP内容
【AAAI 2022】用于文本摘要任务的序列级对比学习模型
专知会员服务
24+阅读 · 2022年1月11日
专知会员服务
88+阅读 · 2021年6月29日
专知会员服务
28+阅读 · 2021年6月25日
专知会员服务
38+阅读 · 2021年5月16日
多模态预训练模型简述
专知会员服务
108+阅读 · 2021年4月27日
专知会员服务
25+阅读 · 2021年4月13日
专知会员服务
62+阅读 · 2021年4月11日
【NeurIPS 2020】对比学习全局和局部医学图像分割特征
专知会员服务
42+阅读 · 2020年10月20日
专知会员服务
136+阅读 · 2020年9月6日
相关资讯
再介绍一篇最新的Contrastive Self-supervised Learning综述论文
夕小瑶的卖萌屋
1+阅读 · 2021年9月22日
赛尔笔记 | 自然语言推理数据集简述
哈工大SCIR
0+阅读 · 2021年9月1日
赛尔笔记 | 对比学习
哈工大SCIR
0+阅读 · 2021年7月27日
成本砍砍砍!不用数据也能用 BERT 做对比学习?
夕小瑶的卖萌屋
0+阅读 · 2021年7月20日
赛尔笔记| 对话摘要简述
哈工大SCIR
0+阅读 · 2021年6月15日
赛尔笔记 | 多模态预训练模型简述
哈工大SCIR
1+阅读 · 2021年4月27日
赛尔笔记 | 自然语言处理中的迁移学习(上)
哈工大SCIR
16+阅读 · 2019年10月17日
赛尔笔记 | 一文读懂图神经网络
哈工大SCIR
81+阅读 · 2019年7月12日
赛尔笔记 | BiLSTM介绍及代码实现
哈工大SCIR
23+阅读 · 2018年10月24日
相关基金
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2015年12月31日
国家自然科学基金
6+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
4+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
5+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员