论文阅读B-CNN: Branch Convolutional Neural Network for Hierarchical Classification

1.简介

B-CNN: Branch Convolutional Neural Network for Hierarchical Classification
Paper Github 代码
在这里插入图片描述
图像层次分类,利用CNN的层级结果与树形标签对应,来进行图像层次分类的。
使用数据集:MNIST、CIFAR-10和CIFAR-100
动机
类与类之间往往存在一般-特定的分类排序属性,例如,猫和狗通常可以归为宠物,而椅子和床则是家具,而且猫和床往往比狗更容易区分。这个属性表明可以用分层的方式进行分类,而不是把所有的类都安排在一个“平面”结构中。在进行层次分类时,分类器首先知道苹果应该在水果的粗类别中,然后可以在更精细的级别上将其分类为苹果。分层分类的一个好处是,错误可以限制在一个子类别,这也意味着它应该比平面分类提供更多的信息。例如,分类器可能会将苹果与橙子混淆,但知道它至少应该是水果,因此不会将其与红色斯诺克球混淆。

2.介绍

卷积神经网络(CNN)图像分类器传统上设计为具有单个输出层的顺序卷积层。这是基于一个假设,即所有目标阶层都应该得到平等和排他性的对待。然而,有些类可能比其他类更难区分,并且类可能被组织在类别的层次结构中。同时,CNN被设计为学习基于其分层结构从输入数据中抽象出来的内部表示。因此,很自然地要问,是否可以将这个想法的逆应用于学习一个模型,该模型可以使用多个输出层按类抽象的降序进行分类层次的预测。在本文中,我们引入了传统CNN模型的一种变体,称为分支卷积神经网络(Branch Convolutional Neural Network, B-CNN)。B-CNN模型沿着与目标类的层次结构相对应的串联卷积层输出从粗到细的多个预测,这可以看作是对输出的先验知识的一种形式。引入了分支训练策略(BT-strategy),该策略平衡了先验的严格性和在输出层上调整参数的自由,使损失最小化。通过这种方式,我们证明了基于CNN的模型可以在输出阶段强制学习内层中从粗到精的概念,并且可以采用分层先验知识来提高CNN模型的分类性能。

CNN的较低层通常捕获图像的低级特征,如基本形状,而较高层则可能提取高级特征,如狗的脸。因此,将类的层次结构嵌入CNN模型的一种可能方法是,随着数据的流动,沿着CNN层输出多个预测,从粗到细。在这种情况下,较低的层输出较粗的预测,而较高的层输出较细的预测。与传统的CNN模型不同,传统的CNN模型无法捕捉现实世界中语义标签的复杂性,分层分类模型可以以更可解释的方式进行预测,甚至可以提高最终的分类,因为分层先验对分类器是一个很好的指导。我们利用CNN的这一特性,将其与类层次结构的先验知识结合起来,强制网络在不同的层学习人类可理解的概念。

除了B-CNN,我们还针对我们的B-CNN模型提出了一种新的训练策略,名为Branch培训策略(BT-strategy)。在使用bt策略训练B-CNN模型时,较低层次参数比较高层次参数更早被激活和训练。该思想的灵感来自于梯度消失问题[11]和Simonyan和Zissermanto在[27]中训练深度ConvNet时采用的分步训练方法。BTstrategy可以在一定程度上防止梯度消失问题的影响,提高B-CNN模型的性能。

贡献:

1.引入了一种新的基于CNN的分层分类模型。
2. 提出了将目标类的语义结构嵌入到一个CNN模型来演示卷积神经网络的可解释性
3. 提出了一种针对B-CNN的训练策略,提高了分类准确率。

3.相关工作

Simonyan和Zisserman向我们表明,在边界内增加CNN模型的深度[27]可能会提高分类器的准确率。在[34]和[26]中,采用了大量的滤波器。最近,有大量的工作来增强CNN的组成部分,如新型的激活函数[4,8],线性滤波补丁的替换[20],池化操作[18,28,33]和初始化策略[23]。这些尝试主要集中在现有CNN模型的潜在弱点,并试图找到替代或提出任何策略来改进它。与他们不同,我们的B-CNN模型以现有的CNN为构建块,利用CNN的自然层次属性[34],通过定制化的训练策略来提升性能。

利用对象类别的层次结构已有很长的历史[30]。在[14,35]中,类中的层次结构被用于组合不同的模型以获得更好的性能。类的层次结构可以由人工预先定义[21,31,35],或者通过自顶向下和自底向上的方法自动构建[1,19,22,25]。

将树结构先验与CNN模型相结合最近引起了人们的兴趣。Srivastava等人[29]在训练集非常小的情况下,提出了一种受益于CNN和基于树的先验的方法。他们已经证明,标签树先验可以用于类之间的知识转移,并在训练样本不足的情况下提高性能。但他们的方法并没有利用层内的层次本质,而是保持整体CNN模型一个黑盒子。Jia等人[5]引入了一种图表示来捕获标签之间的分层和排他性语义。他们将所有标签分配的联合分布定义为条件随机场,并用它来取代传统的分类器,如深度神经网络顶部的softmax。然而,他们的工作仍然使用网络作为特征提取器,并没有试图利用CNN本身的层次性。

Zhicheng等人[32]在发现将标签树和CNN的层次性进行梳理的可能性方面做出了重大贡献。在他们的工作中,类被分组为粗类别,他们的HD-CNN模型使用共享粗分类器分离容易的类别,同时使用精细分类器区分困难的类别。该模型证实了CNN的层次属性是可以被利用的。HDCNN的一个潜在问题是,它需要对粗类和细类组件进行预训练,然后进行一个非常耗时的微调过程。HD-CNN也只使用一个粗类别,这是不可扩展的,因为在一个分层标签树中可能有远不止一个层次的粗类别。
最近的工作将深度学习与概率图形模型(如mrf、crf等)结合起来。(例如[3]),但这要么需要一个两阶段的训练过程,要么需要新的训练组合模型的方法,这不像在B-CNN中训练那么简单。一种端到端的方法是结构化预测能量[2]的网络,但这不是基于cnn。

梯度消失问题[11]在神经网络中已经存在了很长时间,人们提出了各种方法来处理它。整流线性单元(ReLU)已被成功地应用于深度神经网络[7]中作为激活函数。LSTM模型使用遗忘门来解决rnn中的梯度消失问题[6,12]。最近,残差神经网络(ResNets)通过在ConvNets中添加三层块之间的身份快捷连接来消除这一问题[9]。我们的bt策略通过改变不同粗级输出的损失权值来缓解b - cnn中的这一问题,最终使其收敛于传统的CNN分类器。

4.模型描述

分支卷积神经网络(Branch Convolutional Neural Network, B-CNN)的总体架构如图(a)所示对应的标签树如图(b)所示:
在这里插入图片描述
在标签树中,精细标签是目标类,总是由分类任务提供。它们以叶子的形式呈现,并聚类到可以手动构建或通过无监督方法生成的粗略类别中。我们用level表示标签树中的不同层,layer表示神经网络中的层,branch表示B-CNN的分支输出网络。

B-CNN模型使用现有的CNN组件作为构建块,构建具有内部输出分支的网络。图1a底部显示的网络是一个传统的卷积神经网络。它可以是任意的多层卷积网络。中间部分图1a显示了B-CNN的输出分支网络。每个分支网络在标签树的相应级别上产生一个预测(图1b,用相同的颜色显示)。在每个分支的顶部,使用全连接层和softmax层来产生单热one-hot表示输出。分支网络可以由卷积网络和全连接神经网络组成。但为了简单起见,在我们的实验中,我们只使用完全连接的神经网络作为我们的分支网络。

在进行分类时,B-CNN模型输出与相应标签树的级别相同的预测数。例如,考虑如图**(b)**所示的标签树,鼠标的图像将包含一个层次标签[natural, small mammals, mouse].。当将图像输入到B-CNN时,随着数据的流经,网络将输出三个相应的预测,每一层的损失将根据损失权值的分布(3.3)组成最终的损失函数(3.2)。

5.损失函数

在这里插入图片描述

B-CNN的损失函数是所有粗预测损失的加权和。损失函数考虑了所有层次的损失,以确保结构先验对整个模型起到内部导向的作用,使梯度更容易流回浅层。Ak值为B-CNN中各分支网络的损失权值。这个值定义了关卡对最终损失函数的贡献。只有相对值影响损失函数,实验中标准化到0-1.权重loss weights [0.1, 0.1,0.8] 来代替 [1, 1, 8]。

对于一个三分支的B-CNN(对应于一个三层标签树),当损失权值固定为[0,0,1]时,B-CNN模型收敛到只有最后一个输出分支可训练的传统CNN模型。当损失权值为[1,0,0]时,BCNN将只激活整个网络的前一部分,而剩下两个更高的层次未被训练。损失权值的分布也表明了每一层的重要性,例如,[0.98,0.01,0.01]的损失权值表示模型重视低层次的特征提取,但也想训练一点点的深层,在实验中,我们通常使用这个分配作为我们的损失权值的初始化。

Branch Training Strategy
我们的分支训练策略(Branch Training strategy, BT-strategy)利用了损失权分布的潜力,实现了端到端训练过程,且梯度消失问题的影响很小[11]。在训练B-CNN模型的过程中,bt策略修改了损失权值的分布,例如对于两级分类,初始损失权值可以赋值为[0.9,0.1],50epoch之后将损失权值改为[0.2,0.8].

损失权值分配中的最大值可视为一个“焦点”,例如,0.5为[0.2,0.3,0.5]。“焦点”在分发中是不必要的,因为所有级别都同样重要。然而,在我们的实现中,我们通常会设置一个“焦点”来明确地告诉分类器要付出更多的努力来学习这个级别。通常,分布的“焦点”会从较低的层次转移到较高的层次(从粗到细)。这个过程要求分类器先用粗指令提取较低的特征,再用细指令微调参数。它在一定程度上防止了梯度消失问题,该问题在网络深度很大时,会使底层参数的更新变得非常困难。

6.实验

具体实验细节和参数设置见原文Paper
在这里插入图片描述
Baseline 。在MNIST数据集上对Base A模型进行了测试。B和C分别在CIFAR-10和CIFAR-100上进行测试。
Base B和C的最后一层ConvNet中的x可以用10个或100个。Base C模型是VGG16[27],没有最后一个最大池化层,因为CIFAR数据集中的图像非常小。*表示对应B-CNN模型在该层有分支网络,分支的具体配置如表2所示。

在这里插入图片描述
每个B-CNN模型的分支网络。符号表示该分支连接到表1中具有相同的层,例如B-CNN a模型中,在第一个maxpooling层之后存在网络[Flatten, FC-64, FC-cA1]分支。

在这里插入图片描述
在这里插入图片描述

7.分析总结

在三个不同的数据集上进行的这些实验有许多共同的特征。首先,b - cnn的学习模式不同于传统cnn。在B-CNN模型中,损失权值贡献移位后,学习速度明显加快。这一现象证实了首先使用粗层次标签学习低层次特征对于激活CNN模型的浅层是非常有用的。也就是说,我们的bt策略防止了b - cnn的梯度消失问题。其次,B-CNN模型始终优于相应的基线模型。这一结果是一个令人信服的证据,证明cnn的层次性质可以与目标类的结构先验联系起来,以加强分类器。第三,B-CNN模型和传统cnn一样简单。b -CNN只使用现有的CNN组件作为构建块,bt策略就像修改学习率一样容易实现。第四,良好的初始化可能会降低B-CNN的优势。当使用预训练参数初始化模型时,B-CNN与基线模型之间的性能差距并不明显。我们推测这是因为使用预训练参数时,低级特征已经被成功提取,所以bt策略的好处不是很明显。

在本文中,我们介绍了分支卷积神经网络(B-CNN)将cnn的层次性与目标类的结构化先验联系起来。与传统CNN模型相比,B-CNN可以输出从粗到细的多个层次预测,信息量更大,可解释性更强。我们还引入了BCNN量身定制的分支训练策略(BT-strategy),迫使模型在训练开始时学习低级特征,然后收敛到传统的CNN分类。该策略使B-CNN模型能够利用标签树作为内部指南,并显着提高性能。实验结果证实了该模型相对于传统CNN的优势。对于进一步的工作,应该研究使用其他结构化输出(如线性链或图)进行学习的可能性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值