Supervised Contrastive Learning浅读

目录

前言

1.方法介绍以及结构

2.思路的实现

2.1自监督对比学习

2.2有监督对比学习

3.结果


前言

本文是根据观看了知名油管up主,对Supervised Contrastive Learning这篇文论文的解读写了一点自己的理解,初次接触,理解甚浅。

在文章中作者提出了一种新的监督训练的loss, 这种loss 是基于contrast loss的优化目标,与之前的监督学习不同,它是每个锚点取多个正例, 目的是使相同label 的normalized embedding 尽可能接近,不同label的尽可能远。最终结果证明,新的loss要比cross entropy训练更加稳定, 并且在分类任务的结果要好些。

1.方法介绍以及结构

论文通过对普通的监督学习,自监督对比学习,以及文章中提出来的有监督对比学习作比较。

Supervised Contrastive Learning浅读_第1张图片

(a)代表传统的交叉熵loss 主要是在最后一层通过softmax 结果和 label 来训练模型。
(b)代表自监督的contrastive loss, 通过数据增强方法来构建正负例样本, 进而优化模型。
(c)第一阶段,利用label 来做contrast loss. 第二阶段,冻住学到的特征,然后通过一个全连接层做softmax loss.

contrastive loss包括两个方面:1 是positive pair, 来自同一个训练样本通过数据增强等操作 得到的两个 feature 构成, 这两个feature会越来越接近, 2 是negative pair, 来自不同训练样本的 两个feature 构成, 这两个feature 会越来越远离。 本文提出的方法不同之处在于对一个训练样本(文中的anchor)考虑了多对positive pair,原始的contrastive learning 只考虑一个
 

其核心方法是两阶段的训练。如上图所示。 从左向右分别是监督学习,自监督对比学习,和本文的监督对比学习。 其第一阶段: 通过已知的label来构建contrastive loss中的positive 和negative pair。 因为有label,所以negative pair 不会有false negative。 其第二阶段: 冻结主干网络,只用正常的监督学习方法,也就是cross entropy 训练最后的分类层FC layer。
 

2.思路的实现

这种方法是基于目前常用的contrastive loss提出的新的loss,(但是这实际上并不是新的loss,不是取代cross entropy的新loss,更准确地说是一个新的训练方式)

2.1自监督对比学习

在网络结构中,我们需要提取图片的feature,能否提取出好的feature是衡量一个模型性能的标准。

对于自监督学习,我们可以通过如下步骤提取feature

(1)先对原始的N张图片进行数据增强,如裁剪旋转等,得到2N张图片,

(2)生成的2N张图片,通过我们的神经网络,我们可以提取到2N个feature,然后对每个feature进行normalization处理,使其变为单位向量,如{Z1,Z2......Z2n}

(3)任意一张图片i,对于其他2N-1张图片,有一张图片j是跟它是同类,其他图片是不同类的(之前一张图片生成了两张图片),让i和j距离越近越好,i与其他图片距离越远越好

总体上来说:分别用与图片 i来源相同的图片的feature、与图片 i来源不同的图片的feature,跟图片 i的feature进行对比,然后让来源相同的图片feature越接近,来源不同的图片feature越远

通过这种方法训练loss,图片 i和 j的feature的cos距离越大,loss越小,图片 i与来源不同的其它图片的feature的cos距离的总和,越小越好,如下图

Supervised Contrastive Learning浅读_第2张图片

 但是这有一个缺陷,比如同样是狗,因为红框圈出来的狗跟左边的狗不是同一张图片增强出来的,但是跟左边是同类,他们却相距很远,也就是说这种方法可能会使同label的feature距离很远。

2.2有监督对比学习

 为了让同类图片的feature彼此接近,需要使用类别信息来判断哪些图片属于同一个类,对比学习的依据,从“是否来源于同一张图片“,变成了”是否属于同一个类“,于是loss函数定义如下:

Supervised Contrastive Learning浅读_第3张图片

有监督对比损失是对自监督对比损失的推广,从公式中很容易可以看出,有监督对比损失拓展了xi
 正对的数量,将所有标签信息相同的子数据都视为正对,计算了xi 与其所有正对之间的相似性,之后进行加权平均。
 

该loss表达的含义是:

对于任意图片 

  1. 与图片 i属于同类的所有其它图片的feature,与图片  i的feature的cos距离的总和,越大越好
  2. 与图片 i不属于同类的所有其它图片的feature,与图片 i 的feature的cos距离的总和,越小越好

 这样训练出来的结果如下,

Supervised Contrastive Learning浅读_第4张图片

 可以看出之前右下角的狗,由很远的距离变得跟同类feature距离很近。

3.结果

本文提出拉跌loss相对于cross entropy,准确率提升了,并且对于不同数据增强方法,optimizer以及learning rate 的变化就有更强鲁棒性。模型的效果和正例选取的数量是正相关的。

总的来说,本文 借鉴了自监督学习中的contrast loss 的方法,构建了图像分类问题的supervised contrastive loss 来代替cross entropy loss, 并且提出了对于每个锚点,根据label种类提取多个正例的方法,结果对于超参的变化更加鲁棒,在增加了50%训练时间的代价下,取得了1%的提升。

你可能感兴趣的:(神经网络)