• Deeply-supervised Knowledge Synergy 深度监督知识协同


    卷积神经网络(CNNs)与最早的AlexNet相比,已经变得更加深入和复杂。然而,目前流行的训练方案遵循了以前的方法,即只在网络的最后一层增加监督,并将错误信息层层传播。本文提出了一种新的深度监督知识协同(DKS)方法,目的是在不增加推理计算量的情况下,训练具有改进的图像分类任务泛化能力的CNN。受深度监督学习方案的启发,我们首先在某些中间网络层上附加辅助监督分支。当适当地使用辅助监督可以在一定程度上提高模型的精度时,我们进一步探讨了将连接到骨干网的分类器动态学习的概率知识作为一种新的正则化方法来改进训练的可能性。提出了一种新的协同损失模型,该模型考虑了各监督分支之间的知识匹配问题。有趣的是,它能够在每次训练迭代中在自上而下和自下而上两个方向上进行密集的成对知识匹配操作,类似于同一任务的动态协同过程。我们使用最新的CNN体系结构对图像分类数据集的DKS进行了评估,结果表明用它训练的模型始终优于相应的模型。例如,在ImageNet分类基准上,我们的ResNet-152模型在1.47%的精度上优于基准模型。

    Code is available athttps://github.com/sundw2014/DKS.

    1.介绍

    深卷积神经网络(CNN)具有大量的可学习参数,与传统的机器学习方法相比,具有更好的训练数据拟合能力。随着包括大规模数据集、强大硬件平台和有效开发工具在内的培训资源的不断增加,CNNs已成为各种视觉识别任务的主要学习模型[21、26、7、42]。为了获得更令人信服的性能,CNN[39,10,47,17,44,15,1]被设计成比开创性的AlexNet[21]更深入和复杂,后者有8层,并在2012年ImageNet分类竞赛中取得了突破性的成果[37]。尽管现代cnn广泛使用各种工程技术,如仔细的超参数调整[39]、积极的数据论证[44,49]、有效的规范化[18,9]和复杂的连接路径[10,17,44,15,1]来简化网络训练,但它们的训练仍然是困难的。

    图1:所提方法的说明。在图中,我们在骨干网的一些中间层之上添加了三个辅助监控分支。每个分支输出一个基于训练数据的类概率分布,以此作为知识。我们使用圆来表示计算这些知识输出的节点,并提出一个协同损失项来实现它们之间的成对匹配。

    我们注意到最先进的CNN模型,如ResNet[10]、WRN[47]、DenseNet[17]、ResNeXt[44]、SENet[15]、DPN[1]、MobileNet[14,38]和ShuffleNet[51,27]采用了AlexNet的训练方案。更具体地说,在训练过程中,监督只添加到网络的最后一层,并且训练错误从最后一层反向传播到更早的层。由于网络深度、构建块和网络拓扑的复杂性增加,这可能会造成表示学习不足的风险,特别是对于那些与监视层有长连接路径的层。文[41]和[22]提出的深度监督学习方案可以独立地解决这个问题。Szegedy等人[41]将辅助分类器添加到其建议的GoogLeNet的两个中间层,而Lee等人[22]提议将辅助分类器添加到网络的所有隐藏层。在网络训练中,虽然这两种方法使用了不同类型的辅助分类器,但它们采用了相同的优化策略,其中训练损失是所有辅助分类器损失和连接到最后一层的分类器损失的加权和。这种方法在解决消失梯度问题和克服收敛性问题方面具有显著的效果,可用于训练一些旧的深度分类网络。然而,现代CNN骨干网通常没有收敛性问题,很少使用辅助分类器。最近,Huang等人[16]提出了一种二维多尺度CNN结构,该结构使用早期的出口分类器进行成本感知的图像分类。在文献[16]中,实证结果表明,单纯地将简单的辅助分类器附加到最先进的CNN的早期层(如ResNet或DenseNet)会导致性能下降,但是从建筑设计的角度来看,多尺度特征和密集连接的结合可以缓解这一问题。

    本文回顾了用于图像分类任务的深度监督学习方法,提出了一种新的深度监督知识综合(DKS)方法,该方法以训练最新的CNN为目标,提高了分类精度,并且在推理过程中不引入额外的计算代价。受上述工作的启发[41,22,16],我们首先在网络训练期间在某些中间层的顶部附加辅助超视觉分支,如图1所示。结果表明,采用精心设计的辅助分类器可以在一定程度上提高最新CNNs的准确率。实践表明,辅助督导信息有利于规范现代CNNs的培训。我们推测,通过在连接到骨干网的所有监管分支之间实现明确的信息交互,可能仍然存在性能改进的空间,因此,我们进一步探讨了利用辅助分类器动态学习的知识(即在训练数据上评估的类概率输出)和添加到最后一个网络层的类筛选器作为改进训练的新规则的可能性。在优化过程中,在训练损失的基础上增加了一个新的协同损失,该协同损失考虑了各监督分支之间的成对知识匹配。这种损失使得在每个训练步骤中都可以在自顶向下和自下而上的方向上进行密集的成对知识匹配操作,类似于同一任务的动态协同过程。我们使用最流行的CNN体系结构(包括ResNet[10]、WRN[47]、DenseNet[17]和MobileNet[14])对两个著名的图像分类数据集进行了评估。结果表明,与各自的基线模型相比,用本方法训练的模型具有显著的精度改进。例如,在具有挑战性的ImageNet分类数据集上,即使是非常深入的ResNet-152体系结构,Top-1的精度也提高了1.47%。

    2.相关工作

    在这里,我们总结了文献中的相关方法,并用我们的方法分析了它们之间的关系和区别。

    深入监督学习。

    2014年发布了深度监督的学习方法[4122]。它使用连接到网络隐藏层的辅助分类器来解决一些旧的深层cnn在图像分类任务中的收敛问题。最近,它还被用于其他视觉识别任务,如边缘检测[45]、人体姿势估计[31]、场景分析[54]、语义分割[53]、关键点定位[23]、自动描绘[29]和旅行时间估计[50]。尽管最近在其新应用方面取得了这些进展,但现代CNN分类模型很少使用辅助分类器。如[16]所述,直接在最新网络(如ResNet或DenseNet)的早期层上附加简单的辅助分类器会损害其性能。本文提出了一种新的用于图像分类任务的深度监督学习方法DKS,在训练先进的cnn时,提高了分类精度。
    知识转移。
    近年来,知识转移(KT)的研究已经吸引了越来越多的研究者。一项开创性的工作是知识蒸馏(KD)[11],其中使用大型教师模型或教师模型集合的软输出来规范较小学生网络的训练。[36]、[46]和[48]进一步表明,中间特征表示也可以用作增强知识提取过程的提示。KD技术也被用于其他任务,例如,提高用于图像分类的低精度cnn的性能[28]和设计用于视频动作识别的多流cnn[5]。与知识只从教师模型转移到学生模型的KD及其变体不同,[52]通过提出相互学习策略来扩展KD,表明学生模型的知识也有助于提高教师模型的准确性。后来,这一思想被用于人的重新识别[55]和联合人类分析和姿势估计[32]。Li和Hoiem[24]通过KD和微调的结合,解决了在保留旧知识的同时,采用训练好的神经网络模型来处理新的视觉任务的问题。文[12]提出了一种改进的方法。乔等人。[35]提出了一种半监督图像分类的深度协同训练方法。在他们的方法中,所有的模型都被视为学生,并使用包含对抗性样本的不同数据视图进行训练。本文提出的深度监督知识综合方法是一种在单一神经网络中进行知识转移的新形式,它在焦点和形式上都不同于以往的方法。

    CNN正规化。

    ReLU[30]、Dropout[40]和BN[18]被证明是现代CNNs克服拟合或加速收敛的关键。因此,最近提出了许多改进的变体[9、43、4、8、6]。通过增强变换(如随机裁剪、翻转、缩放、颜色操作和线性插值)综合增加现有训练数据的大小,也可以减少过度拟合[21、13、41、49]。此外,预训练[39]可以帮助神经网络训练的早期阶段。这些方法在现代CNN建筑设计和训练中得到了广泛的应用。我们的方法和他们是一致的。如图3所示,使用DKS训练的模型具有最高的训练误差,但测试误差最低,这表明我们的方法表现得像正则化器,并且减少了ResNet-18的过度拟合。

    3.我们的方法

    在这一部分中,我们将介绍我们的方法的公式,强调它的洞察力,并详细说明它的实现。

    3.1 深度监督学习

    由于我们的方法是以深度监督学习方案为基础的,所以我们从它的制定开始。让Wc作为需要学习的L层CNN模型的参数。设D={(xi,yi)| 1≤i≤N}为带注释的数据集,其中N个训练样本来自K个图像类。这里,x是第i个训练样本,Yi是相应的标签(一个具有K维度的one hot向量)。设F(WC,XI)为训练样本模型的K维输出向量。对于标准的训练方案,只在网络的最后一层增加监督,优化目标可以定义为

    Lc是损失,R是正则化项。

    H是交叉熵损失函数。

    这个优化问题可以很容易地通过SGD及其变体来解决[3,19,2]。据我们所知,大多数知名CNN[21、39、10、47、17、44、14、38、15、1、51、27、56、34、25]在模型训练中都采用了这种优化方案。相比之下,文[22]中明确提出的深度监督学习方案在训练过程中为网络的所有隐藏层增加了辅助分类器。LetWa={wal | 1≤l≤l−1}附加在网络每个隐藏层顶部的辅助分类器集。这里,wal表示添加到lth隐藏层的辅助分类器的参数。设f(wal,Wc,xi)为lh辅助clas-sifier的K维输出向量。在不丧失通用性的前提下,深度监督学习方案的优化目标可以定义为

    辅助损失La是在训练集上评估的所有辅助分类器的损失的加权和,αl是lth辅助分类器的损失的加权和。通过引入辅助损失La,深度监督学习方案使得网络在训练过程中不仅可以从最后一层监督,而且可以从隐藏层监督中收集梯度。这被认为是克服了消失梯度问题,增强了收敛性[22,41]。

    至于当代的工作[41],其优化目标可以看作是(3)的一个特例,因为它只在提出的GoogLeNet的两个中间层添加了辅助分类器。另一个区别在于辅助量词的结构。在实验中,[22]使用了具有零位策略的模拟分类器在训练过程中动态控制αl的值,而[41]使用了更复杂的具有固定αl值的分类器。我们发现,在训练最先进的CNNs时,设置αl的固定值与零位策略具有相似的性能,因此,我们在实现中使用αl的固定值。

    3.2。深度监督的知识协同

    现在,我们提出了我们的DKS的公式,并从一个新的角度发展了深度监督学习方法。DKS还使用连接到网络某些隐藏层的辅助分类器,但与现有方法不同的是,它在所有监督分支之间引入了显式的信息交互。具体来说,DKS利用所有分类者动态学习的知识(即训练数据上估计的类概率输出)来规范网络训练。它的核心贡献是一种新的协同损失,使得连接到后骨网络的所有分类器之间能够进行密集的成对知识边缘匹配,从而使优化更加有效。
    在本节中,我们将遵循最后一节中的注释。我们只向某些隐藏层添加辅助分类器。设A⊆{1,2,···,L-1}是一个带有| A |层索引的预定义集,指示添加辅助分类器的位置。设Aˆ=A∪{L},其中列出了网络的stlayerIndex,以便Aˆ指示连接到网络的所有分类器的位置,包括辅助分类器和原始分类器。设B⊆Aˆ×Aˆ为另一个具有| B |对层索引的预定义集合,指示激活成对知识匹配操作的位置。
    现在,根据(3)的定义,我们的DKS的优化目标被定义为

    其中FM和FN是分类器M和N的类概率输出,在训练样本席上进行了评估,βMN加权了从M到N的成对知识边缘匹配的损失,我们使用SoftMax函数计算类概率。在实验中,我们设置αl=1,βmn=1并保持它们不变,这意味着与优化(2)和(3)相比,我们的方法在优化中没有额外的超参数。对于协同损失,任意两个分类器之间的知识匹配是一个带软目标的修正交叉熵损失函数。原则上,将分类器m的当前类概率输出作为软标签(这些软标签被认为是常数值,梯度w.r.t.不会在反向传播中计算),迫使分类器n模拟分类器m。这样,分类器m当前学习的知识就可以被转换-我们称之为定向监督。有趣的是,在连接到主干网的所有监控分支之间启用密集的成对已知L-边缘匹配操作类似于同一任务的动态协同过程。

    成对知识匹配。

    对于DKS,一个关键问题是如何配置知识匹配对(即set B)。我们提供了三种选择,包括自顶向下、自下而上和双向策略,如图2所示。采用自顶向下的策略,只利用与后骨网络深层相连接的分类器的知识来指导前几层分类器的训练。自下而上的策略逆转了这种设置,双向策略包括了这两种策略。对比研究(见实验部分)表明,双向策略具有最佳的性能,因此我们在最后的实现中采用了它。

    辅助分类器。DKS的另一个基本问题是如何设计辅助分类器的结构。尽管深度监督学习方案已经证明在为图像分类任务训练一些旧的深度网络时有效地解决了收敛问题[22],但最先进的cnn,如ResNet和DenseNet,即使对于具有数百层的模型,也不存在收敛问题。有鉴于此,直接将简单的辅助分类器添加到网络的隐藏层可能没有帮助,这已经被[16]和[53]的经验验证。从CNN架构设计的角度来看,[41]和[16]建议添加复杂的辅助分类器到网络的一些中间层来缓解这个问题。随后,在实验中,我们在网络训练过程中,在一定的中间层上附加了相对复杂的辅助视觉分支。具体地说,每个辅助分支由与骨干网中相同的构造块(例如ResNet中的剩余块)组成。如[16]中的经验验证,早期层缺乏有助于图像级分类的粗糙级特征。为了解决这个问题,我们使用启发式原则,使得从输入到每个分类器的路径具有相同数量的下采样层。对比实验表明,这些精心设计的辅助监控分支可以在一定程度上提高最终模型的性能,但增益相对较小。通过提出的协同损失,实现了稠密的知识边缘匹配,取得了较好的效果。图3显示了一些说明性的结果,更多的结果可以在实验部分找到。

    与知识蒸馏比较。

    在DKS中,成对知识匹配的灵感来源于知识转换中常用的知识边缘提取思想[11、48、36、46、28、52、24、12、35]。在这里,我们澄清他们的分歧。首先,我们的方法和他们的不同。这条研究路线主要解决了学生-教师框架下的网络压缩问题,但我们的方法侧重于通过进一步开发深度监督学习方法来推进最新CNNs的训练。第二,我们的方法在公式上与它们不同。在学生-教师框架下,通常假设大的教师模型是预先可用的,并定义优化以使用教师模型的软输出来指导较小的学生网络的训练。也就是说,教师模型和学生模型是分开优化的,二者之间没有直接关系。在我们的方法中,辅助分类器共享骨干网的不同层次的特征层,并与连接到最后一层的分类器联合优化。本文还对它们的性能进行了实验比较。
    据我们所知,DKS是第一个将深度监督学习和知识提炼方法紧密结合起来的工作,能够在一个深度CNN模型中的不同层之间传递当前所学的知识。在补充材料中,我们提供了一些理论分析,试图更好地理解DKS。

    4.1。CIFAR-100实验

    CIFAR-100数据集[20]包含50000个训练图像和10000个测试图像,其中实例是从100个对象类中提取的32×32彩色图像。我们使用与[10,22]相同的数据预处理方法。在训练中,首先在图像两侧填充4个像素,然后从填充图像或其水平翻转中随机抽取32×32个作物,最后用每个通道的平均值和std值进行归一化。为了评估,我们在原始大小的测试图像上重新移植错误。骨干网和实施细节。我们考虑了四种最先进的CNN架构,包括:(1)深度32和110的ResNets[10];(2)深度40/100和增长率12的DenseNets[17];(3)深度28/28和加宽因子4/10的WRNs[47];(4)MobileNet[14]如[52]所用。我们使用作者发布的代码并遵循标准设置来训练每个骨干网。在训练过程中,对于ResNets和MobileNet,我们使用带动量的SGD,将批大小设置为64,权重衰减为0.0001,动量设置为0.9,训练点数设置为200。初始学习率为0.1,每60个阶段除以10。对于DenseNets,我们使用带有Nesterov动量的SGD,将批大小设置为64,权重衰减为0.0001,动量设置为0.9,训练点数设置为300。初始学习率设为0.1,并除以总训练时段数的50%和75%时的10。对于WRNs,我们使用带动量的SGD,将批大小设置为128,权重衰减为0.0005,动量设置为0.9,训练点数设置为200。初始学习率设置为0.1,并在60、120和160个阶段除以5。受[41,16]的启发,我们在这些CNN结构的某些中间层附加了两个辅助分类器。具体来说,我们在具有下采样层的对应构建块之后添加每个辅助分类器。所有辅助分类器都具有与骨干网相同的构造块、全局平均池层和完全连接层。不同之处在于构建块的数量和卷积滤波器的数量(详见补充材料)。所有模型都是在使用1个GPU的服务器上训练的。对于每个网络,我们运行每个方法5次并报告“平均(std)”错误

    结果比较。结果总结在表1中,其中基线表示标准训练方案,DS表示使用我们设计的辅助分类器的深度监督学习方案[41,22]。一般来说,利用我们设计的辅助分类器,DS在所有情况下都比基线方法提高了模型的准确率,其准确率从0.08%提高到0.92%。相比之下,我们的方法在所有网络上的性能最好,给DS带来至少0.67%和最多3.08%的准确度增益。随着网络的深入(如ResNet-110和DenseNet-100)/更宽(如WRN-28-10)/更小(如MobileNet),我们的方法也比所有同行有显著的精度改进。这些实验清楚地验证了该方法在训练最新CNNs时的有效性。

    4.4。讨论
    虽然实验中使用的CNNs具有良好的结构块设计,提高了特征连接路径的灵活性,并显示出稳定的收敛性,但与标准训练方案和DS相比,我们的DKS可以显著地改善训练效果。这首先得益于在网络的中间层添加适当的辅助分类器,但我们认为,这更得益于所提出的协同损失,即在连接到网络的所有受监督分类器之间实现全面的成对知识匹配,增强学习的特征表示。另一方面,我们为模特训练提供大量的时间。对于站姿,基线ResNet-18模型在8 gpu服务器上训练约20小时(SSD用于加速数据访问过程),而我们的方法需要约37小时,几乎是训练时间的两倍。另外,DS的训练时间与我们的方法基本相同。我们认为这主要与辅助分类器的数量及其复杂性有关。因此,在所需的培训时间和预期的准确性改进之间存在一个权衡。要获得更大的精度增益,需要辅助分类器更加复杂,而简单的分类器往往会降低模型的精度。由于增加辅助分类器的数目并不总是带来更高的准确率增益,如我们的消融研究所示,我们认为目前增加训练时间是合理的。更重要的是,所有的辅助分类器在推理阶段都被丢弃,因此没有额外的计算开销。

    5。结论
    本文回顾了深度监督学习的研究成果,提出了一种新的深度监督学习优化方案DKS。引入了一种新的协同损失,该协同损失通过考虑连接到网络的所有有监督分类器之间的密集成对知识匹配来调整训练。在两个已知的图像分类任务上的大量实验验证了该方法的有效性。

     

  • 相关阅读:
    Git安装配置
    Openstack 错误日志查看方法
    keystone v3.0与2.0的区别
    Python远程调试Openstack
    openstack遇到的错误
    特别翔实的adaboost分类算法讲解 转的
    h5 html5 模拟时钟 页面
    js 面向对象 jquery 全局变量 封装
    HTML5 h5 微信 浮层 提示 点击右上角,从浏览器打开 pop.png
    jquery中ajax使用error调试错误的方法,实例分析了Ajax的使用方法与error函数调试错误的技巧
  • 原文地址:https://www.cnblogs.com/happytaiyang/p/12418904.html
Copyright © 2020-2023  润新知