NIPS20 - 将对比学习用于监督学习任务《Supervised Contrastive Learning》
文章目录
- 原文地址
- 论文阅读方法
- 初识
- 相知
- 回顾
- 代码
原文地址
原文
论文阅读方法
三遍论文法
初识
对比学习这两年在自监督学习、无监督学习任务中非常火,取得了非常优秀的性能。这个工作就是想办法将其用在监督学习任务中,在训练过程中更有效地利用标签信息。
文章研究的点主要在于对比学习在分类任务中的应用
作者首先分析了分类任务中最常采用的交叉熵损失函数的缺点:① 对噪声数数据缺乏鲁棒性; ② 分类边界的问题(the possibility of poor margins
)。这样会导致模型泛化能力下降,因此也有不少工作针对交叉熵进行改进(比如人脸领域的LargeMargin Loss, ArcFace,以及Label smoothing,知识蒸馏等),但目前大数据集上的分类任务(比如ImageNet),使用最多的仍然是交叉熵。
因此本文就探索了对比学习在ImageNet任务上的效果,提出了Supervised Contrastive Learning
,并验证了其性能优越性。如下图所示,对比了在ImageNet上的实验性能。
auto-augment
和rand-augment
可以参考博客,简单理解的话,就是一种自动增广策略,针对数据集找到最有效的增广策略,提升模型泛化性。
相知
对比学习
对比学习的核心思想就是在特征空间将拉近achor
和正样本,推远负样本。其目前主要用于无监督表征学习中,在这个任务中没有标注信息,所以正常样本通常是同一个实例的两个View
(同一图像的两个增广结果),而负样本来自同一个batch中的其他样本。
可以视为在最大化数据不同视角下的互信息,这个思路最先由SimCLR提出,目前已经广泛采用。
而本文的出发点非常简单,既然有了标签信息,那我不就可以准确地找到anchor
对应的正样本和负样本吗?因此Supervised Contrastive Learning
的目标就是在特征空间中拉近同一类数据的特征,推远不同类之间的特征。
训练框架
采用两阶段训练的方法,第一阶段非常与SimCLR非常像。首先对batch内的图像都进行两次增广,得到两倍Batch大小(2N)的数据。
先送入Encoder网络得到2048维的特征输出,然后再进一步经过一个Project网络映射到另一个空间中(通常维度更小,本文中为128),经过归一化(normalization
映射到超球面)后在这个特征空间中计算Supervised Contrastive Learning
。
第一阶段训练好之后,移除掉Project网络,固定住Encoder网络,用交叉熵损失再训练一个分类head,用于后续测试。
一些细节:① 也可以不采用2阶段的方式,而是使用交叉熵联合训练分类head,效果也能差不多。但这里为了更好地体现所提出的监督学习效果(迁移任务上),选择分离训练。② 达到相同的形象,SupCon需要的学习率比交叉熵的要更大。③ 理论上温度系数越小越好,但是过小容易数值不稳定。④ 实验过程中尝试了不同的优化器(LARS,RMSProp,SGDm)。
监督对比学习形式
自监督对比学习的形式如下所示:
其中I
包含了一个Batch中的所有数据(2N),·
表示内积,其实在超球面上就可以表示余弦相似度,τ\tauτ表示温度系数,A(i)表示I\{i}
,1个anchor
对应1个正样本和2N-2个负样本。
根据自监督对比学习的定义,引入标签信息后,可以非常容易地对其进行更改。作者首先提出了两种监督对比学习形式:
其中,P(i)表示在当前batch内,anchor样本i
所对应的所有正样本。在形式2中,会先计算所有正样本对之间的log项再求均值,而形式3会先计算求得均值再计算log项。
首先,无论是形式2还是形式3,他们都有以下几个性质:
- 可以很好地泛化到多个正样本对:也就是说对于正样本的个数没有限制;
- 负样本越多,对比性能越强:形式2和形式3在分母的负样本求和,这也保留了在原对比学习中的负样本越多越好的性质(实际上负样本越多,对比时就有更多hard negative,效果更好);
- 具有困难样本挖掘能力:不仅仅是正样本也包含了负样本,在损失中hard positive/negative的贡献远大于easy positive/negative(作者在附录中给了数学上的证明)。
但这两中形式实际上是不一样的,根据杰森不等式能得到如下关系:
Jensen’s Inequality: 过一个下凸函数上任意两点所作割线一定在这两点间的函数图象的上方
这或许推测in
形式要优于out
形式,但结论却恰好相反,作者经过实验表明,out
的性能要更优。作者在也给出了数学上的证明,说明in
形式更容易达到次优解,因此在之后的实验中均采用out
形式。
部分实验
表2展示了本文提出的supervised contrastive learning
要优于SimCLR,交叉熵以及Max-Margin,表3展示了其也优于其他的数据增广策略。
需要注意的是,训练过程中的batch size为6144,增广后就是12288了。
作者也尝试了MoCo这类方法,使用memory bank,memory size为8192,batch size为256,取得了79.1%的top-1准确率,效果更好(Kaiming yyds)。
但即使使用的是memory bank也需要8块V100… …
作者也在ImageNet-C数据集上进行了测试,其包含一些人造噪声,效果也很不错。这也说明了supervised contrastive learning
要更鲁棒。
作者还测试了损失对超参数的稳定性以及一些消融实验,如下图所示,均优于交叉熵。
作者还验证了Supervissed Contrastive Learning
的模型迁移能力。
回顾
对比学习核心在于“在特征空间拉近anchor
与正样本对之间的距离,推远与负样本之间的距离”
往简单了说,对比学习就是一种损失函数类型。往深了说,就是对数据分布的一种先验假设。在无监督学习任务中,由于没有具体的标签信息,所以在对比学习任务中采用同一实例的不同增广结果作为正样本对,其他实例作为负样本。这样会受到false negative的影响,比如两张图片全是cat
这一类,但你却要强行推远它们在特征空间中的距离,这样会损害特征的判别性(缺少了捕获同类特征的能力)。
因此本文引入了标签信息,在强监督学习设置下进行对比学习SupCon
。提出了两种损失形式,并通过实验和数学上的证明,保留了效果最好最鲁棒的一种。
SupCon
也保留了对比学习本身的一些特性,其中有一条就是随着负样本的增加,性能会越来越好。实验也证明了在大batch size下性能优于普通的交叉熵。但在batch size较小的情况下却没有给出实验结果(我觉得可能不如交叉熵)。如果只有在大batch size的情况下才能彰显SupCon
的优越性显然就限制了它的应用场景,毕竟不是谁都像G家卡那么多,所以这也意味着还有很大的改进空间。
代码
官方tf代码链接:https://t.ly/supcon,torch代码链接:https://github.com/HobbitLong/SupContrast
NIPS20 - 将对比学习用于监督学习任务《Supervised Contrastive Learning》相关推荐
- Micro-expression recognition with supervised contrastive learning基于对比监督学习的微表情识别
Micro-expression recognition with supervised contrastive learning基于对比监督学习的微表情识别--2022 PRL 文章链接:https ...
- CIKM 2021 | Google出品:将对比学习用于解决推荐系统长尾问题
©作者 | Sybil Wu 单位 | 明略科技集团 研究方向 | NLP.推荐算法 本文主要分享一下 Google 发表于 CIKM 2021 的文章如何采用对比学习解决推荐长尾问题. 论文标题: ...
- 文章分享《Supervised Contrastive Learning》 自监督对比学习和有监督对比学习的区别
文章题目 Supervised Contrastive Learning 作者: Prannay Khosla Piotr Teterwak Chen Wang Aaron Sarna 时间:2020 ...
- Supervised Contrastive Learning(学习笔记)
Supervised Contrastive Learning NeurlPS2020 原文链接: https://arxiv.org/pdf/2004.11362v4.pdf b站讲解视频: htt ...
- 对比学习用于推荐系统问题(SSL,S^3-Rec,SGL,DHCN,SEMI,MMCLR)
本篇博文继续整理推荐系统系列,更多文章可以参考博主的以往系列论文:推荐系统专栏. 自监督学习在CV和NLP已经用的很多了,那很自然也会被迅速引进并占坑到推荐系统领域咯.而发掘推荐数据上的自监督信号,其 ...
- 论文阅读笔记(7-1)---Supervised Contrastive Learning
原文链接 B站讲解视频 Toutube视频搬运 参考解读 参考解读 研究背景 交叉熵损失函数是分类模型监督学习中应用最广泛的损失函数,但是它具有对噪声标签缺乏鲁棒性.边界性差等特点,泛化能力较差. 研 ...
- Targeted Supervised Contrastive Learning for Long-Tailed Recognition(2022.5.14)
(一)解决的问题: 数据往往呈现出长尾分布,类间严重失衡,多数类可能主导训练过程,并改变少数类的决策边界. (二)动机: 提出一种平衡采样的方法,同时能够学习到统一的特征空间,使长尾分布的数据在特征空 ...
- Supervised Contrastive Learning For Recommendation
摘要: 我们的目的是充分考虑对比学习在推荐系统场景中的应用,使其更适合于推荐任务.我们提出了一个监督对比学习框架来预训练用户-项目二部图,然后对图卷积神经网络进行微调.具体来说,我们将在数据预处理过程 ...
- 对比学习(Contrastive Learning)综述
A.引入 https://zhuanlan.zhihu.com/p/346686467 A.引入 深度学习的成功往往依赖于海量数据的支持,其中对于数据的标记与否,可以分为监督学习和无监督学习. 1 ...
最新文章
- DataGrid的几个小技巧
- 超年轻!93年小伙已是985大学教授、博导!
- 关于ML.NET v0.7的发布说明
- contract net with fipa
- java单例模式几种实现方式
- kotlin学习笔记——接口与委托
- LeetCode 606. 根据二叉树创建字符串(递归)
- Fly.Box天禾云盘2016双11超级钜惠,超低折扣!!!
- 简单介绍WaitForSingleObject / WaitForMultipleObjects
- 算法竞赛入门 第2版 习题3-3 UVa1225
- SQL代码自动生成器
- 制作自己的个人博客网站
- UCF101数据集处理
- Git 提交大文件提示 fatal: The remote end hung up unexpectedly
- iOS 【真机调试-免证书-开发者信任问题】
- python中screen用法_screen的用法
- Neo4j登录报错Neo4j Server shutdown initiated by request解决
- 使用Linux命令cURL实现文件定时上传到ftp服务器的程序
- Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式
- JetBrains Account验证时JetBrains账户连接错误:连接拒绝(连接拒绝) 或 用于签署许可证的证书不是由JetBrains root certifi签署的。
热门文章
- 上海大学计算机学院同等学力申硕,上海大学也能以同等学力申硕的方式报考吗?...
- win7计算机搜索记录,如何在win7中清空电脑的搜索记录?
- DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版原创发布-带官方示例程序版
- Java斗地主小游戏有序版
- 编译opencv出现Could NOT find PythonLibs: Found unsuitable version “3.6.9“, but required is exact version
- 3GPP相关5G-NR物理层协议
- 计算机等级二级Java环境配置注意事项
- FPGA复位的正确使用
- educoder web程序设计基础知识点 期末总结
- 一群前高盛集团员工仍认为可以用加密货币拯救华尔街