论文笔记-Supervised Contrastive Learning

论文:https://arxiv.org/pdf/2004.11362.pdf
代码:https://github.com/HobbitLong/SupContrast

交叉熵损失有很多缺点,例如对嘈杂标签缺乏鲁棒性,分类边距可能较差,导致泛化性能下降。

作者在对比学习的基础上加上了标签信息,提出了一种监督学习的损失,让来自相同类别的特征比不同类别的特征更靠近。

方法

给定一批输入数据,首先应用两次数据增强,获得该 batch 的两个副本。两个副本都通过编码器网络向前传播,获得 2048 维的归一化嵌入。在训练期间,该特征表示通过一个投影网络进一步传播。监督对比损失是在投影网络的输出上计算的。为了使用经过训练的模型进行分类,作者使用交叉熵损失在冻结的特征表示之上训练了一个线性分类器。

特征学习框架

主要组成部分是:

  • 数据增强模块,。对于每个输入样本 ,生成两个随机增强 ,每个代表数据的不同视角(view),并包含原始样本中信息的一些子集。
    在实验中, 包括了4种实现:AutoAugment, RandAugment,SimAugment, Stacked RandAugment。
  • 编码器网络,,它将 映射到表示向量 。两个增强样本分别输入到同一个编码器,产生一对表示向量。 被归一化为 中的单位超球面(本文所有实验中的 = 2048),实验表明这种归一化提高了 top-1 的准确性。
    实验中, 的结构有 ResNet-50,ResNet-101,ResNet-200。
  • 投影网络,,将 映射到向量。作者将 设置为为一个多层感知器 ,具有一个大小为 2048 的隐藏层和大小为 的输出向量,或者只是一个大小为的线性层。作者在对比训练结束时丢弃 。因此,在推理时模型包含与使用相同编码器 的交叉熵模型完全相同数量的参数。

对比损失函数

对比学习中的 infoNCE loss:


其中, 是网络输出特征,是anchor, 是所有正样本。

作者提出的有监督对比loss加入了多个正样本:


作者认为这两个版本的loss:

  • 能够泛化到任意数量的正样本,作者让同一个batch里的同一个类别的都作为正样本,让来自同一类别的样本更加靠近
  • 对比能力随着负样本数量增强
  • 能够更好的实现强负样本(正样本)的选择

但是这两种 loss 并不是等价的,作者通过推导证明了 ,也就是 是 的上界,因此作者选择了 。

与其他 loss 的联系
作者证明了 Triplet Loss 是使用一正一负样本时对比损失的特例。当使用多个负数时,作者表明 SupCon Loss 等同于 N-pairs Loss。

实验

实验也证明了确实有提高:


你可能感兴趣的:(论文笔记-Supervised Contrastive Learning)