论文标题
Contrastive Deep Supervision
论文作者、链接
作者:
Zhang, Linfeng and Chen, Xin and Zhang, Junbo and Dong, Runpei and Ma, Kaisheng
链接:https://arxiv.org/abs/2207.05306
Introduction逻辑(论文动机&现有工作存在的问题)
随着大规模数据集数量的增长,深度神经网络成为了主要的模型——往往只在最后一层的训练中添加了监督信息——深度监督deep supervision,直接对中间层进行优化,对中间层添加了数个辅助分类器,这些分类器根据原始的最后一个分类器进行优化
浅层网络往往学习一些低级的特征,最后几层则是学习高维的任务相关的语义特征——deep supervision强行使得浅层网络去学习任务相关的知识,但是这违背了原本的特征提取的过程,暗示这可能并不是最好的对中间层级优化的监督
作者认为,对比学习可以为中间层级提供更好的监督信息——对比学习即对一张图片使用不同的数据增广构成的样本对称为正对,将不同的图片视为负对——由此网络可以学习数据中的不变信息——数据增广下的不变信息往往是低维的,任务无关的可以迁移到不同的视觉任务,由此作者任务这对中间层学习到的信息更有利
作者提出了Contrastive Deep Supervision,通过对比学习对中间层级进行优化,如图1所示
在中间层级添加多个映射头,在这些映射头上执行对比学习——这些映射头会在推理阶段被丢弃,以避免计算资源的损耗——deep supervision训练中间层去学习一个针对具体任务的知识,本文学习的是数据增广中的不变信息
作者为了增加模型效果,还使用了知识蒸馏技术——其他的研究表明知识蒸馏往往会蒸馏那些”关键知识“,比如注意力和相连关系,使得有更好的模型表现
论文核心创新点
通过对比学习对中间层进行优化
通过任务损失对中间层级进行训练
将对比学习和有监督学习结合到一个模型中,而不是两阶段策略
相关工作
deep supervision
对比学习
知识蒸馏
论文方法
deep supervision
为给定的主干分类器。假设
,
是最后的分类器,
是特征提取器的操作,并且
。
表示在
中的卷积阶段的编号。在每一个特征提取阶段
中,deep supervision添加了一个辅助分类器
以提供中间层级的监督。因此共有
个分类器,公式如下:
给定一个训练样本集并且其对应的标签
,deep supervision的训练损失
计算如下:
代表交叉熵损失,
是一个平衡性超参。近日,一些研究提出了将分层一致性应用于deep supervision,即在辅助分类器的预测和最后的分类器之间计算一个KL损失。这些方法也被视为知识蒸馏,将最后一层分类器视为教师模型,将辅助分类器视为学生模型。训练损失公式如下:
其中是平衡性超参。
对比深度监督Contrastive Deep Supervision
对于尺寸为的小批次数据
,在每一张数据上使用随机的数据增广两次,于是可以得到
张增广后的数据。将
记为两个由同一张原图生成的增广图片,视为一个正对。将
记为一个正则化映射头的输出,对比损失公式如下:
其中是一个指示函数,当
的时候值为1;
是一个温度超参。直觉上,
鼓励编码器网络从同一张图片的不同数据增广中学习相似的特征表示,同时增大不同图片的区分度。
本文方法和deep supervision的主要不同在于,deep supervision通过交叉熵损失来训练辅助分类器,本文使用对比损失来训练辅助分类器。将在第层的对比损失记为
,于是本文的对比深度监督的损失可以记为:
是一个平衡系数超参。基于上述的公式,可以将对比深度监督应用于半监督学习和知识蒸馏。
半监督学习Semi-supervised Learning
在半监督学习中,假定有一个有标签数据集及其对应的标签
,和一个无标签数据集
。对于有标签数据集直接使用
进行学习。对于无标签数据集,对比深度监督只优化对比学习损失
,公式如下:
知识蒸馏Knowledge Distillation
在对比深度监督的中间层是可以在对比学习的监督下,学习到不同数据增广之间的不变性。根据别的研究表明,这些数据增广对下游任务是有益的。本文提出了通过在教师模型和学生模型之间进行增广不变性的转换,进一步提升知识蒸馏的效果。
将学生模型和教师模型分布记为,蒸馏过程是最小化两者之间的特征距离,公式如下:
在本文模型中,将中间层的分类器级视为学生模型,将最后一层的分类器视为教师模型,进行知识蒸馏,公式如下:
总体的目标函数如下
其他的实验细节和技巧 Other Details and Tricks
映射头的设计Design of Projection Heads
映射头将主干特征映射到正则化的嵌入空间中。常用的映射头是由两层的全连接层堆叠然后接一个ReLU激活函数。本文模型中,映射头的输入是中间层的输出而不是最后一层,于是映射复杂度增加了,于是本文在非线性映射前添加了一些卷积层。
对比学习Contrastive Learning
本文并不依靠具体的对比学习算法,实验中主要使用了SimCLR和SupCon作为对比学习算法。
负样本Negative Samples
其他研究表明负样本的数量对对比学习的表现有很大的影响,现有方法往往要依靠:大的batch-size,动量编码器或者是memory bank来解决。本文不需要依靠这些方法,因为有监督的损失可以避免对比学习收敛到崩溃解
消融实验设计
对知识蒸馏的消融
是否加映射头
映射头的数量