Tree-CNN
Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning (opens new window)
深度学习领域一直存在一个比较严重的问题——“灾难性遗忘”,即一旦使用新的数据集去训练已有的模型,该模型将会失去对原数据集识别的能力。
为解决这一问题,本文提出了树卷积神经网络,通过先将物体分为几个大类,然后再将各个大类依次进行划分、识别,就像树一样不断地开枝散叶,最终叶节点得到的类别就是我们所要识别的类。
网络结构及学习策略
网络结构
Tree-CNN 模型借鉴了层分类器,树卷积神经网络由节点构成,和数据结构中的树一样,每个节点都有自己的 ID、父亲(Parent)及孩子(Children),网(Net,处理图像的卷积神经网络),LT("Labels Transform",就是每个节点所对应的标签,对于根节点和枝节点来说,可以是对最终分类类别的一种划分,对于叶节点来说,就是最终的分类类别),其中最顶部为树的根节点。
本文提出的网络结构如下图所示。对于一张图像,首先会将其送到根节点网络去分类得到“super-classes”,然后根据所识别到的“super-classes”,将图像送入对应的节点做进一步分类,得到一个更“具体”的类别,依次进行递推,直到分类出我们想要的类。

其实这就和人的识别过程相似,例如有下面一堆物品:数学书、语文书、物理书、橡皮、铅笔。如果要识别物理书,我们可能要经历这样的过程,先在这一堆中找到书,然后可能还要在书里面找到理科类的书,然后再从理科类的书中找到物理书,同样我们要找铅笔的话,我们可能需要先找到文具类的物品,然后再从中找到铅笔。
学习策略
在识别方面,Tree-CNN 的思想很简单。如图 1 所示,主要就是从根节点出发,输出得到一个图像属于各个大类的概率,根据最大概率所对应的位置将识别过程转移到下一节点,这样最终我们能够到达叶节点,叶节点对应得到的就是我们要识别的结果。整个过程如下图所示。

如果仅按照上面的思路去做识别,其实并没有太大的意义,不仅使识别变得很麻烦,而且在下面的实验中也证明了采用该方法所得到的识别率并不会有所提高。而这篇论文最主要的目的就是要解决我们在前面提到的“灾难性遗忘问题”,即文中所说的达到“lifelong”的效果。
对于新给的类别,我们将这些类的图像输入到根节点网络中,根节点的输出为
根据根节点得到的概率分布,文中分别对下面三种情况进行了讨论:
- 当输出概率中最大概率大于设定的阈值,则说明该类别和该位置对应的子节点有很大的关系,因此将该类别加到该子节点上;
- 若输出概率中有多个概率值大于设定的阈值,就联合多个子节点来共同组成新的子节点;
- 如果所有的输出概率值都小于阈值,那么就为新类别增加新的子节点,这个节点是一个叶节点。
同样,我们将会对别的支节点继续上面的操作。通过上面的这些操作,实现对新类别的学习,文中称这种学习方式为 incremental/lifelong learning。
实验方法与结果分析
在这部分,作者分别针对 CIFAR-10 及 CIFAT-100 数据集上进行了测试。
实验方法
1. CIFAR-10
在 CIFAR-10 的实验中,作者选取 6 类图像作为初始训练集,又将 6 类中的汽车、卡车设定为交通工具类,将猫、狗、马设为动物类,因此构建出的初始树的结构如图 3(a)所示:

具体网络结构如下图所示,根节点网络是包含两层卷积、两层池化的卷积神经网络,支节点是包含 3 层卷积的卷积神经网络。

当新的类别出现时(文中将 CIFAR-10 另外 4 个类别作为新类别),按照文中的学习策略,我们先利用根节点的网络对四种类别的图片进行分类,得到的输出情况如下图所示·,从图中可以看出,在根节点的识别中 Frog、Deer、Bird 被分类为动物的概率很高,Airplane 被分类为交通工具的概率较高。
根据文中的策略,Frog、Deer、Bird 将会被加入到动物类节点,同样 Airplane 将会被加入到交通工具类节点。经过 incremental/lifelong learning 后的 Tree-CNN 的结构如图 3(b)所示。 具体训练过程如下图 所示。
为了对比 Tree-CNN 的效果,作者又搭建了一个包含 4 层卷积的神经网络,并分别通过调节全连接层、全连接 +conv_1、全连接 +conv_1+conv_2、全连接 +conv_1+conv_2+conv_3、全连接 +conv_1+conv_2+conv_3+conv4 的参数来进行微调。
2. CIFAR-100
对于 CIFAR-100 数据集,作者将 100 类数据分为 10 组,每组包含 10 类样本。在网络方面,作者将根节点网络的卷积层改为 3,并改变了全连接层的输出数目。
实验结果分析
在这部分,作者通过设置两个参数来衡量 Tree-CNN 的性能。
其中,Training Effort 表示 incremental learning 网络的更改程度,即可以衡量“灾难性遗忘”的程度,参数改变的程度越高,遗忘度越强。
图 7 比较了在 CIFAR-10 上微调网络和 Tree-CNN 的识别效果对比,可以看出相对于微调策略,Tree-CNN 的 Training Effort 仅比微调全连接层高,而准确率却能超出微调全连接层 +conv_1。
这一现象在 CIFAR-100 中表现更加明显。
从图 7、图 8 中可以看出 Tree-CNN 的准确率已经和微调整个网络相差无几,但是在 Training Effort 上却远小于微调整个网络。
从图 9 所示分类结果中可以看出,在各个枝节点中,具有相同的特性的类被分配在相同的枝节点中。这一情况在 CIFAR-100 所得到的 Tree-CNN 最终的结构中更能体现出来。
除了一些叶节点外,在语义上具有相同特征的物体会被分类到同一支节点下,如图 10 所示。
总结与分析
本文虽然在一定程度上减少了神经网络“灾难性遗忘”问题,但是从整篇文章来看,本文并没能使网络的识别准确率得到提升,反而,相对于微调整个网络来说,准确率还有所降低。此外,本文搭建的网络实在太多,虽然各个子网络的网络结构比较简单,但是调节网络会很费时。
Tree-CNN:一招解决深度学习中的「灾难性遗忘」(opens new window)
ChatGPT全文翻译 ⬇️
0. 摘要
在过去十年中,深度卷积神经网络(DCNNs)在大多数计算机视觉任务中表现出了显著的性能。这些任务传统上使用固定的数据集,一旦模型经过训练,就按原样部署。向这样的模型添加新信息会带来挑战,例如“灾难性遗忘”以及对超参数调整的敏感性。然而,在当今不断发展的数据世界中,我们的深度学习模型需要适应这些变化。在本文中,我们提出了一种由DCNNs组成的自适应层次结构网络,当有新数据可用时,它能够增长和学习。该网络以树状方式增长,以容纳新的数据类别,同时保留区分先前训练类别的能力。该网络将逐步可用的数据组织为基于特征的超级类别,并通过添加自我增长功能改进了现有的层次结构CNN模型。与微调深度网络相比,该层次结构模型在CIFAR-10和CIFAR-100上显著减少了训练工作量,同时保持了竞争性的准确性。
1. 引言
近年来,深度卷积神经网络(DCNNs)已成为大规模图像分类的领先架构。在2012年,AlexNet(一个8层深度卷积神经网络)赢得了ImageNet大规模视觉识别挑战赛(ISLVRC),使DCNNs受到广泛关注。从那时起,它们在ISLVRC中占据主导地位,并在流行的图像数据集上表现优异,例如MNIST、CIFAR-10/100和ImageNet。
如今,随着获取大量标注数据(例如ImageNet包含120万张图像,涵盖1000个类别)的能力的增加,监督学习已成为训练DCNNs进行图像识别的主流范式。传统上,DCNN是在包含大量标注图像的数据集上训练的。网络学习提取相关特征并对这些图像进行分类,然后使用训练好的模型对现实世界中的未标注图像进行分类。在这种训练中,所有训练数据在同一个训练过程中提供给网络。然而,在现实世界中,我们很少一次性获得所有信息,而是随着时间的推移逐步收集数据。这就需要能够在数据逐步可用时学习新信息的模型。在这项工作中,我们尝试解决使用深度网络在图像识别领域逐步学习数据的挑战。
DCNN将特征提取和分类嵌入在同一个模型中,形成一个统一的架构。参数空间的任何修改都会立即对模型产生全局影响。逐步训练DCNN的另一个问题是“灾难性遗忘”。当对已经训练好的DCNN仅在新数据上进行重新训练时,可能会破坏从早期数据中学到的现有特征。这要求在重新训练新数据时使用先前的数据。
为了避免灾难性遗忘并利用先前任务中学习的特征,这项工作提出了一个由CNN组成的网络,该网络随着新类别的引入而以层次方式增长。网络将新类别添加为层次结构中的新叶节点。分支是基于新旧类别之间特征的相似性。Tree-CNN的初始节点将输入分配到粗略的超级类别中,随着我们接近网络的叶节点,分类变得更精细。这样的模型允许我们将先前学习的卷积层用于扩展后的新网络。
2. 相关工作
在这个数字化世界中,数据每秒钟都在产生新的信息,推动了需要系统在新数据到达时进行学习的需求。传统的深度神经网络在这方面是静态的,目前有几种新方法正在探索增量学习。“一次性学习”是一种贝叶斯迁移学习技术,使用极少的训练样本来学习新类别。流行的目标检测框架Fast R-CNN也存在“灾难性遗忘”的问题。为了解决这个问题的一种方法是使用原始网络的冻结副本在网络中引入新类别时计算并平衡损失。“无遗忘学习”是另一种方法,它只使用新任务数据来训练网络,同时保留原有功能。原始网络是在一个广泛的数据集上训练的,如ImageNet,而新任务数据则是一个更小的数据集。“专家门”通过依次将训练好的网络(或专家)添加到系统中,并使用一组门控自动编码器为给定输入选择合适的网络(“专家”)。渐进神经网络通过横向连接利用先验知识,学习解决复杂的任务序列。另一项关于神经网络增量学习的最新工作是“iCaRL”,他们构建了一个增量分类器,能够在无限长的时间段内进行增量学习。
已经观察到,CNN的初始层学习非常通用的特征,这些特征已经被用于迁移学习。共享的特征已被用于构建层次分类器。这些特征可以是语义化分组的,也可以是基于特征驱动的。与DCNN中卷积层复杂性逐渐增加的过程类似,层次CNN的上层节点使用基本特征对图像进行粗略的超级类别分类,如将绿色物体分组在一起,或者将人脸分组在一起。然后,较深的节点执行更精细的区分,如“男孩”对“女孩”,“苹果”对“橙子”。这些层次结构CNN模型已被证明其性能可以与标准DCNNs媲美甚至更好。
“判别迁移学习”是其中最早的工作之一,在该工作中,类被层次化,以提高网络性能。深度神经决策森林将决策树与深度CNN统一起来,构建了一个层次分类器。“HD-CNN”是一个层次结构CNN模型,通过利用图像特征共享构建而成。然而,在这些工作中,数据集从一开始就是固定的,所有类别及其属性的先验知识都被用来构建层次模型。
在我们的工作中,Tree-CNN最初是一个根节点,并生成新的层次结构以容纳新类别。重新训练期间需要使用旧数据集中的图像,但通过将变化局限于整个网络的一小部分,我们的方法试图减少训练工作量和复杂性。在类似的方法中,新类别被添加到旧类别中,并通过错误驱动的模型分为两个超级类别。初始网络被克隆,形成两个新的网络,并在两个新的超级类别上进行微调。虽然他们的动机是为大型数据集提供“分而治之”的方法,我们的工作则试图在多个学习阶段中随着新数据的引入逐步增长。下一节中,我们将详细介绍我们的设计原则、网络拓扑结构和用于增长网络的算法。
3. 增量学习模型
3.1 网络架构
受层次分类器的启发,我们提出的模型 Tree-CNN 由多个以树状方式连接的节点组成。每个节点(除了叶节点)都有一个 DCNN,训练用于将输入图像分类到其子节点之一。根节点是树的最高节点,第一次分类在这里发生。然后,图像根据分类标签传递给其子节点。这个节点进一步分类图像,直到我们到达叶节点,这是分类的最后一步。分支节点是中间节点,每个节点都有一个父节点和两个或更多子节点。叶节点是树的最后一级,每个叶节点唯一地与一个类别相关联,没有两个叶节点具有相同的类别。图 1 展示了一个两阶段分类网络的根节点和分支节点。此类网络的推理方法见算法 1。


3.2 学习算法
我们假设我们已经有一个模型可以识别一定数量的物体。这个模型可以是由多个 CNN 组成的层次结构,也可以只是一个单一的 CNN 充当根节点,并且有多个叶节点。一个新任务定义为学习识别属于
我们从输出层获得一个 3 维矩阵
我们生成一个具有以下属性的有序列表
- 列表
有 个对象。每个对象唯一对应一个新的 类。 - 每个对象
具有以下属性: = 新类别的标签 ,该类别的前 3 个平均 softmax 输出值,按降序排列, = 对应 softmax 输出 , , 的输出节点
将新类别添加到现有子节点:如果
比下一个值( )大于阈值 (设计规范),则该类别表示与特定子节点的强烈相似/关联。新类别被添加到相应的子节点 。 合并两个子节点形成一个新子节点,并将新类别添加到该节点:如果新类别对多个子节点具有较高的可能性,我们可以将它们合并为一个新子节点。当
,且 (用户定义的另一个阈值)时发生。例如,如果前 3 个可能性值分别为 , ,和 。然后,如果 是一个叶节点,我们将 合并到 ,并将新类别添加到 。 将新类别添加为新子节点:如果新类别的可能性值与其他值相比没有显著差异(
, ),或所有子节点已满,网络通过将新类别添加为新子节点来水平扩展。这个节点将是叶节点。
随着根节点不断添加新的分支和子分支,具有更多子节点的分支节点趋向于变得更重。新类别的传入往往对具有较多子节点的分支节点有较高的 softmax 可能性。为了防止 Tree-CNN 变得不平衡,可以设置分支节点最多可以有多少子节点。
当计算
伪代码概述如算法 2 所示。我们还用图 2 说明了 Tree-CNN 中增量学习的一个简单例子。该网络最初是一个可以分类 3 类的单一 CNN。我们希望通过添加 3 个新类别来增加网络能力。在第一个增量学习阶段,生成 softmax 似然表 L,如图所示。C4 和 C5 被分别添加到包含 C1 和 C2 的叶节点,将它们转换为分支节点 B1 和 B2,根据条件 (i)。对于 C6,3 个可能性值为
虽然这个例子是一个两层 Tree-CNN,但该算法可以扩展到更深的 Tree-CNN 模型。
为了创建更深的 Tree-CNN 模型,一旦“Grow-Tree”算法在根节点的
一旦新类别被分配到树中的位置,对修改/新节点执行监督梯度下降训练。这使我们避免了修改整个网络,只需重新训练/微调受影响的部分网络。在每个增量学习阶段,根节点在所有可用数据上进行训练,因为它需要学习将所有对象分类到新的分支中。在推理过程中,只有当根节点将输入分类到该分支节点时,才激活一个分支节点。例如,如果根节点将一张汽车的图像错误分类为“动物节点”(CIFAR-10 示例,第 4.1 节),无论分支节点如何分类,它仍然是错误分类。因此,我们只训练分支节点分配给它的类别。如果在增量学习阶段分支节点的查找表没有变化,则保持原样。
处理 Tree-CNN 内的输入标签
用户拥有的数据集会为每个对象类分配唯一的标签。然而,Tree-CNN 的根节点和分支节点根据算法的要求倾向于对这些类别进行分组/合并/拆分。为了确保标签一致性,Tree-CNN 的每个节点都维护自己的“LabelsTransform”查找表。例如,当一个新类别被添加到根节点的预先存在的输出节点之一时,查找表会更新,将新类别分配给该输出节点。类似地,当一个新类别被添加为新节点时,类别标签和新的输出节点会作为新条目添加到查找表中。每个类别最终都与一个唯一的叶节点相关联,因此叶节点不需要查找表。每当两个节点合并时
,对于新类别,具有较低平均 softmax 值的节点(假设为节点 A)会与具有较高平均 softmax 值的节点(假设为节点 B)合并。如果两个 softmax 值相等,则随机选择。在根节点级别,查找表修改如下:分配给节点 A 的类别标签现在将分配给节点 B。合并后的节点 B 的查找表会将这些类别标签从节点 A 中添加为新条目,并分配给新的叶节点。
4. 实验设置
4.1 添加多个新类别(CIFAR-10)
4.1.1 数据集
在这个实验中使用了 CIFAR-10 数据集,该数据集具有 10 个相互排斥的类别。网络首先在 6 个类别上进行训练,然后在下一个学习阶段学习其余 4 个类别。
4.1.2 网络初始化
CIFAR-10 的 Tree-CNN 最初是一个两层网络,根节点有两个分支节点,如图 3 所示。CIFAR-10 的前六个类别被分为“车辆”和“动物”,根节点的 CNN(表 1)被训练将输入图像分类到这两个类别中。这两个分支节点中的每个都有一个 CNN(表 2),在叶节点中进行更细致的分类。图 3a) 代表了 Tree-CNN A 的初始模型。这个实验展示了,给定一个两级的 Tree-CNN,学习模型如何添加新类别。根节点的测试准确率为 98.73%,而“动物”和“车辆”分支节点的测试准确率分别为 86% 和 94.43%。总体而言,网络的测试准确率为 89.10%。
4.1.3 增量学习
现在将其余的四个类别作为新学习任务引入。每类随机选择 50 张图像(训练集的 10%),并将其显示给根节点。我们得到矩阵 L,这是一个 2×4 矩阵,每个元素
一旦新类别被分配到 Tree-CNN 中的位置,我们就开始对网络进行重新训练。根节点使用所有 10 个类别进行重新训练,分为两个子类别。“动物”分支节点使用从 6 个类别中选出的训练数据进行重新训练,其中包括 3 个旧类别和 3 个新类别。同样,“车辆”分支节点使用来自 4 个类别的训练数据进行重新训练,其中包括 3 个旧类别和 1 个新类别。
4.2 逐步添加多个类别(CIFAR-100)
4.2.1 数据集
该数据集 CIFAR-100 包含 100 个类别,每个类别有 500 个训练图像和 100 个测试图像。这 100 个类别被随机分为 10 组,每组 10 个类别,并按固定顺序组织(见附录 A)。这些类别组逐步引入网络。
4.2.2 网络初始化
我们将 Tree-CNN 初始化为一个具有 10 个叶节点的根节点。因此,根节点包括一个 CNN(表 4),具有 10 个输出节点。最初,这个 CNN 被训练以分类属于增量 CIFAR-100 数据集的第 0 组的 10 个类别。在随后的学习阶段,当新类别被分组到相同的输出节点下时,网络会添加分支节点。这些分支节点中使用的 DCNN 模型见表 5。分支节点比根节点更容易过拟合,因为随着我们在树中向下移动,每个节点的数据集规模会缩小。因此,我们在这些节点的 CNN 中引入了更多的 dropout 层,以增强正则化。
4.2.3 增量学习
剩余的 9 组,每组包含 10 个类别,逐步引入网络,分 9 个学习阶段。在每个阶段,将 50 张属于每个类别的图像显示给根节点,并生成可能性矩阵 L。根据第 3.2 节描述的方法,使用矩阵的列形成有序集 S。对于这个实验,我们对算法 2 应用了以下约束:
- 树的最大深度为 2。
- 我们设置 α=0.1 和 β=0.1。
- 分支节点的最大子节点数量分别设置为 5、10 和 20,分别用于三个测试案例:Tree-CNN-5、Tree-CNN-10 和 Tree-CNN-20。
在每个学习阶段,一旦新类别被分配到 Tree-CNN 中的位置,我们更新相应的分支和根节点 CNN,通过对它们新增的旧类别和新类别的组合数据进行重新训练。未添加新子节点的分支节点则不作改动。
4.3 基准测试
由于增量学习缺乏标准化的基准协议,我们使用了一种类似于 iCaRL 中使用的基准协议。数据集的类别被分组并按固定随机顺序排列。在每个学习阶段,会将选择的类别集引入网络。一旦某个学习阶段的训练完成,网络将对其迄今为止学习的所有类别进行评估,并报告准确率。
4.3.1 基线网络
为了与提出的 Tree-CNN 进行比较,我们定义了一个与两阶段 Tree-CNN 复杂度相似的基线网络(网络 B)。该网络具有 11 层,类似 VGG 网络。它有 4 个卷积块,每个块具有 2 组 3×3 卷积核(表 3)。
4.3.2 使用旧数据和新数据微调基线网络
基线网络在增量阶段使用微调进行训练。新类别被添加为最终层的新输出节点,并使用了 5 种不同的微调策略。每种方法重新训练/微调网络的某些层。在微调过程中,使用所有可用数据,包括旧数据和新数据。假设系统可以访问迄今为止引入的所有数据。如下所列,我们设置了不同的反向传播深度,当使用增量数据和旧数据重新训练时:
- B:I [FC]
- B:II [FC + CONV-1]
- B:III [FC + CONV-1 + CONV-2]
- B:IV [FC + CONV-1 + CONV-2 + CONV-3]
- B:V [FC + CONV-1 + CONV-2 + CONV-3 + CONV-4](相当于用所有类别训练一个新网络)
4.3.3 评估指标
我们在两个指标上比较了 Tree-CNN 与重新训练网络 B:测试准确率和训练工作量。训练工作量定义为:
训练工作量尝试捕捉每个训练时期中发生的权重更新次数。由于批量大小和训练时期数保持不变,因此使用训练阶段可用的训练样本数乘以正在重新训练的层的权重数,可以提供一个学习阶段的计算成本的度量。对于 Tree-CNN,将每个节点(或网络)的训练工作量相加。对于网络 B,它只有一个节点/神经网络,对于每个案例(B:I-B:V),我们简单地将正在重新训练的层中的权重数相加,并将其乘以训练阶段可用的训练样本总数,以计算训练工作量。
4.4 训练框架
我们使用 MatConvNet,一个用于 MATLAB 的开源深度学习工具箱,来训练网络。在训练过程中,通过以 0.5 的概率随机水平翻转训练图像进行数据增强。所有图像都进行了白化和对比度归一化。所有网络中使用的激活函数是整流线性激活 ReLU:
继续翻译文档的第五部分内容:
5. 结果
5.1 添加多个新类别(CIFAR-10)
我们初始化了一个可以分类六个类别的 Tree-CNN。它有一个根节点和两个分支节点。来自 4 个新类别的样本图像在根节点生成了 softmax 可能性输出,如图 4a 所示。相应地,将新类别添加到两个节点中,新的 Tree-CNN 如图 3b 所示。在表 6 中,我们报告了 CIFAR-10 中微调网络 B 的 5 种情况下 Tree-CNN 的测试准确率和训练工作量。我们观察到,基线网络的仅重训练 FC 层(B:I)所需的训练工作量最少,但准确率最低,为 78.37%。并且随着引入更多的类别,这种方法导致显著的准确率损失,如 CIFAR-100 中所示。Tree-CNN 的归一化训练工作量第二低,比 B:V 少约 40%,比 B:II 少约 30%。同时,Tree-CNN 的准确率与 B:II 和 B:III 相当,只比理想情况 B:V 少 3.76%。这种准确率与训练工作量之间的权衡如图 4b 所示,其中清楚地看到,Tree-CNN 为添加 4 个新类别提供了最优解决方案。
5.2 逐步添加新类别(CIFAR-100)
我们初始化了一个可以分类 10 个类别的根节点,即具有 10 个叶节点。然后,我们按分支节点的最大子节点数量(maxChildren)的 3 种不同值逐步扩展 Tree-CNN,即 5、10 和 20。我们将这 3 种模型分别命名为 Tree-CNN-5、Tree-CNN-10 和 Tree-CNN-20。在 9 个增量学习阶段结束时,Tree-CNN-5 的根节点有 23 个分支节点和 3 个叶节点。而 Tree-CNN-10 的根节点有 12 个分支节点和 5 个叶节点。正如预期的那样,Tree-CNN-20 的根节点具有最少的子节点数量,9 个分支节点和 3 个叶节点。这些 Tree-CNNs 的最终层次结构见附录 B,图 B.9-B.11。
我们观察到,随着新类别的添加,Tree-CNNs 通过添加更多分支而增大(图 5a)。网络 B 的大小基本保持不变,因为只添加了额外的输出节点,这会在最后一层转化为一小部分新权重。Tree-CNN-5 几乎增长了网络 B 的 3.4 倍,而 Tree-CNN-10 和 Tree-CNN-20 分别达到基准大小的 2.2 倍和 1.8 倍。这 3 种 Tree-CNNs 的训练工作量几乎相同,在 9 个增量学习阶段内的差距在 1e-2 范围内。随着 maxChildren 的减少,测试准确率有所提高,如图 5b 所示。如果 maxChildren 设置为 1,我们得到类似于测试案例 B:V 的情况,其中每个新类别只是一个新的输出节点。
我们比较了 Tree-CNNs 与在 9 个增量学习阶段中 5 种不同微调网络 B 的训练工作量(图 6a)。我们通过除以最高训练工作量(即 B:V)归一化了训练工作量。对于所有模型,在某个学习阶段所需的训练工作量大于前一个阶段所需的工作量。这是因为我们不得不展示属于旧类别的图像,以避免“灾难性遗忘”。Tree-CNNs 的训练工作量比 4 种微调测试案例 B:II - B:V 要低。测试案例 B:I 的训练工作量显著低于所有其他案例,因为它只重新训练了最终的全连接层。然而,在 9 个学习阶段中它遭受了最严重的准确率下降。这表明,仅重新训练最终的线性分类器,即全连接层,是不够的。我们还需要在新数据上训练特征提取器,即卷积块。
虽然 B:I 在准确率方面表现最差,但图 6b 显示,随着类别数量的增加,所有网络的准确率都有所下降。B:V 在每个阶段提供了基准准确率,因为它代表了在该阶段使用所有可用数据完全训练的网络。三种 Tree-CNNs 的表现几乎与 B:IV 相当,并且优于网络 B 的所有其他变体。从图 6 中,我们可以得出结论,Tree-CNNs 在训练工作量和测试准确率之间提供了最优的权衡。这在图 7a 中进一步说明,其中我们绘制了所有学习阶段中的平均测试准确率和平均训练工作量。
我们将我们的模型与两项关于增量学习的工作进行了比较,“iCaRL”和“无遗忘学习”,如图 7b 所示。我们使用 [16] 中报告的 CIFAR-100 准确率,并与我们的方法进行比较。对于“LwF”,每个阶段仅对新数据进行专门训练,因此它遭受了最大的准确率下降。在“iCaRL”中,在每个阶段用新数据和仅 2000 个旧数据样本(称为“典型样本”)对 ResNet-32 进行重新训练。与“LwF”相比,它能够恢复相当多的性能,但仍比最新技术低约 18%。Tree-CNNs 的准确率比“iCaRL”高出 10%,比“无遗忘学习”高出 50%。这表明,我们使用层次结构的学习方法在添加新类别时对灾难性遗忘更具抵抗力。Tree-CNNs 能够实现接近最新技术的 CIFAR-100 准确率,如表 7 所示。第二列报告了最终的准确率,第三列报告了在增量学习方法中,按 10 个类别批次添加新类别时的平均准确率。
值得注意的是,相似的类,即在语义上也相似的类,被分组在同一分支下。在九个增量学习阶段结束时,在 Tree-CNN-10 中形成的一些相似对象组如图 8 所示。虽然有些组中的对象共享语义相似性,但也有一些奇怪的组,例如图 8 中的节点 13。这为使用这种层次结构来发现传入数据中的隐藏相似性提供了可能性。
继续翻译文档的第六部分内容:
6. 讨论
这项工作的动机来自这样的想法:在逐步增加新图像类别时,应该比重新训练整个网络更为简便。我们观察到,每个增量学习阶段所需的训练工作量比前一个阶段更多,因为需要向 CNN 展示属于旧类别的图像。这是深度神经网络中“灾难性遗忘”的固有问题。与微调深度网络的层相比,我们提出的方法在准确率和训练工作量之间提供了最佳的权衡。与其他方法相比,它也获得了接近最新技术的准确率,特别是在 CIFAR-100 上。
Tree-CNN 的层次节点学习模型试图将模型的变化局限于少数节点中。这种方式限制了重新训练的计算成本,同时利用了所有以前的数据。因此,与微调深度网络相比,它能够在较低的训练工作量下进行学习,同时保持大部分的准确率。然而,Tree-CNN 随着时间的推移不断增长,其对内存需求的影响需要进一步研究。在推理过程中,一次只评估一个节点,因此每个节点推理所需的内存要求远低于整个模型的大小。
Tree-CNN 以将共享特征的图像分组在一起的方式生长。类别标签的语义相似性与分支下类别图像的特征相似性之间的相关性是另一个有趣的研究领域。Tree-CNN 生成了最初不相关类别的层次分组,从而从这些类别中生成了标签关系图。最终的叶节点及其之间的距离也可以用作衡量任何两张图像相似度的标准。这种训练和分类方法可以用于层次分类大型数据集。因此,我们提出的方法 Tree-CNN 提供了一种基于层次分类器和迁移学习的更好的学习模型,可以随着时间的推移有机地适应新信息。