目录
前言
1.方法介绍以及结构
2.思路的实现
2.1自监督对比学习
2.2有监督对比学习
3.结果
本文是根据观看了知名油管up主,对Supervised Contrastive Learning这篇文论文的解读写了一点自己的理解,初次接触,理解甚浅。
在文章中作者提出了一种新的监督训练的loss, 这种loss 是基于contrast loss的优化目标,与之前的监督学习不同,它是每个锚点取多个正例, 目的是使相同label 的normalized embedding 尽可能接近,不同label的尽可能远。最终结果证明,新的loss要比cross entropy训练更加稳定, 并且在分类任务的结果要好些。
论文通过对普通的监督学习,自监督对比学习,以及文章中提出来的有监督对比学习作比较。
(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。
这种方法是基于目前常用的contrastive loss提出的新的loss,(但是这实际上并不是新的loss,不是取代cross entropy的新loss,更准确地说是一个新的训练方式)
在网络结构中,我们需要提取图片的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距离的总和,越小越好,如下图
但是这有一个缺陷,比如同样是狗,因为红框圈出来的狗跟左边的狗不是同一张图片增强出来的,但是跟左边是同类,他们却相距很远,也就是说这种方法可能会使同label的feature距离很远。
为了让同类图片的feature彼此接近,需要使用类别信息来判断哪些图片属于同一个类,对比学习的依据,从“是否来源于同一张图片“,变成了”是否属于同一个类“,于是loss函数定义如下:
有监督对比损失是对自监督对比损失的推广,从公式中很容易可以看出,有监督对比损失拓展了xi
正对的数量,将所有标签信息相同的子数据都视为正对,计算了xi 与其所有正对之间的相似性,之后进行加权平均。
该loss表达的含义是:
对于任意图片
这样训练出来的结果如下,
可以看出之前右下角的狗,由很远的距离变得跟同类feature距离很近。
本文提出拉跌loss相对于cross entropy,准确率提升了,并且对于不同数据增强方法,optimizer以及learning rate 的变化就有更强鲁棒性。模型的效果和正例选取的数量是正相关的。
总的来说,本文 借鉴了自监督学习中的contrast loss 的方法,构建了图像分类问题的supervised contrastive loss 来代替cross entropy loss, 并且提出了对于每个锚点,根据label种类提取多个正例的方法,结果对于超参的变化更加鲁棒,在增加了50%训练时间的代价下,取得了1%的提升。