论文:https://arxiv.org/pdf/2004.11362.pdf
代码:https://github.com/HobbitLong/SupContrast
交叉熵损失有很多缺点,例如对嘈杂标签缺乏鲁棒性,分类边距可能较差,导致泛化性能下降。
作者在对比学习的基础上加上了标签信息,提出了一种监督学习的损失,让来自相同类别的特征比不同类别的特征更靠近。
![](https://img.haomeiwen.com/i16576979/d565f68b87d7eb4e.png)
方法
给定一批输入数据,首先应用两次数据增强,获得该 batch 的两个副本。两个副本都通过编码器网络向前传播,获得 2048 维的归一化嵌入。在训练期间,该特征表示通过一个投影网络进一步传播。监督对比损失是在投影网络的输出上计算的。为了使用经过训练的模型进行分类,作者使用交叉熵损失在冻结的特征表示之上训练了一个线性分类器。
特征学习框架
主要组成部分是:
- 数据增强模块,
。对于每个输入样本
,生成两个随机增强
,每个代表数据的不同视角(view),并包含原始样本中信息的一些子集。
在实验中,包括了4种实现:AutoAugment, RandAugment,SimAugment, Stacked RandAugment。
- 编码器网络,
,它将
映射到表示向量
。两个增强样本分别输入到同一个编码器,产生一对表示向量。
被归一化为
中的单位超球面(本文所有实验中的
= 2048),实验表明这种归一化提高了 top-1 的准确性。
实验中,的结构有 ResNet-50,ResNet-101,ResNet-200。
- 投影网络,
,将
映射到向量
。作者将
设置为为一个多层感知器 ,具有一个大小为 2048 的隐藏层和大小为
的输出向量,或者只是一个大小为
的线性层。作者在对比训练结束时丢弃
。因此,在推理时模型包含与使用相同编码器
的交叉熵模型完全相同数量的参数。
对比损失函数
对比学习中的 infoNCE loss:
![](https://img.haomeiwen.com/i16576979/75edd0185378afef.png)
其中, 是网络输出特征,
是anchor,
是所有正样本。
作者提出的有监督对比loss加入了多个正样本:
![](https://img.haomeiwen.com/i16576979/b41c74ea916f0f34.png)
作者认为这两个版本的loss:
- 能够泛化到任意数量的正样本,作者让同一个batch里的同一个类别的都作为正样本,让来自同一类别的样本更加靠近
- 对比能力随着负样本数量增强
- 能够更好的实现强负样本(正样本)的选择
但是这两种 loss 并不是等价的,作者通过推导证明了 ,也就是
是
的上界,因此作者选择了
。
与其他 loss 的联系
作者证明了 Triplet Loss 是使用一正一负样本时对比损失的特例。当使用多个负数时,作者表明 SupCon Loss 等同于 N-pairs Loss。
实验
![](https://img.haomeiwen.com/i16576979/edb51db3f09a2492.png)
实验也证明了确实有提高:
![](https://img.haomeiwen.com/i16576979/26a383fbe1d8ebe4.png)
网友评论