论文标题
《Solving Long-tailed Recognition with Deep Realistic Taxonomic Classifier》
使用深度现实分类器解决长尾识别问题
作者
Tz-Ying Wu、Pedro Morgado、Pei Wang、Chih-Hui Ho 和 Nuno Vasconcelos
来自加州大学圣地亚哥分校
初读
摘要
-
长尾识别问题:
长尾识别处理的是现实世界中自然分布不均的数据。虽然现代分类器在数量多的类别上表现良好,但在尾部类别上的性能显著下降。然而,人类受到的影响较小,因为当面对不确定的样本时,他们简单地选择提供更粗略的预测。
-
深度现实分类器:
- 受此启发,提出了一种新的解决长尾问题的解决方案——深度现实分类器(deep realistic taxonomic classifier,Deep-RTC),它结合了现实主义和分层预测。
- 该模型在无法保证所需性能时,可以选择在分类学的各个层级拒绝对样本进行分类。
- Deep-RTC 在训练期间通过随机树采样来模拟更细或更粗的分类条件下所有可能的分类条件,并在推理时采用拒绝机制。
-
性能表现:
- 在四个数据集的长尾版本(CIFAR100、AWA2、Imagenet 和 iNaturalist)上的实验表明,所提出的方法在不同流行程度的所有类别上保留了更多信息。
- Deep-RTC 还使用所提出的正确预测比特(correctly predicted bits,CPB)指标,在长尾识别、分层分类和带有拒绝的学习领域中,超越了最先进的方法。
结论
- 设计思路:
- 在这项工作中,提出了一种现实分类器(RTC)来解决长尾识别问题。我们不是为每个样本寻求最细粒度的分类,而是建议将每个样本分类到分类器能够胜任的层级。
- 然后,引入了深度现实分类器(Deep-RTC)架构,用于使用深度 CNN 实现 RTC,它能够
- 在头部和尾部类别之间共享知识,
- 将数据层次与模型设计对齐,以便在分类学的各个层级进行预测,
- 在样本过于困难时选择提供更粗略的预测来保证高预测性能。
- 通过在 4 个长尾数据集上进行的广泛实验,使用所提出的树度量验证了所提出方法的有效性。这表明RTC非常适合解决长尾问题。我们认为这为长尾文献开辟了一个新的方向。
- 致谢 这项工作部分得到了NSF奖项IIS-1637941、IIS-1924937和NVIDIA GPU捐赠的资助。
再读
Section 1 Introduction
-
CNN 与长尾问题:
- 计算机视觉领域的最新进展可以归因于大型数据集和深度卷积神经网络(CNN)。尽管这些模型在平衡数据集上取得了巨大成功,其中每个类别的图像数量大致相同,但现实世界的数据往往高度不平衡,呈现出非常长的尾部类别分布。
- 在这种情况下,类别通常根据示例数量被划分为多样本、中等样本和少样本类别。由于深度 CNN 在小数据规模下容易过拟合,它们在中等和少样本类别上的表现经常不佳。
- 为了克服这一限制,流行的尝试包括数据重采样、成本敏感损失、从多样本类别向少样本类别的知识转移、归一化或基于边界的方法。所有这些方法都旨在提高标准 softmax CNN 架构的分类性能。
-
长尾问题分析:
-
然而,几乎没有证据表明这种架构最适合处理长尾识别问题。
-
例如,人类并不使用这种模型。他们不是努力区分世界上的所有物体,而是采用类分类法(class taxonomies),其中类别在不同粒度级别上以分层的方式组织,例如从粗略的领域到细粒度的“物种”或“品种”,如图1所示。
- 图片注解:现实世界的数据集存在类别不平衡和长尾问题(左图)。人类通过结合类别的分类和自我意识来处理这些问题(右图)。当面对稀有物体时,比如“墨西哥无毛犬”,他们会将决策推至更粗糙的分类级别,例如简单地识别出更自信的粗糙类别“狗”。这被称为现实的分类以保证所有样本都以高置信度进行处理。
-
使用分类法进行分类通常被称为分层分类(hierarchical)。标准 softmax,也称为平面分类器(flat classifier),是一个单一层级分类法的分类器。使用更深层的分类法已被证明对分类有益,因为它允许特征共享和类别间信息传递。尽管大多数关于平面或分层分类的先前工作都试图在分类树的叶子节点上对所有图像进行分类,而不考虑这有多困难,引入分类法使得可以采用替代策略。
-
-
引入现实分类法(realistic taxonomic classification,RTC):
- 在这项工作中,我们探索了一种受人类认知启发并适合长尾识别的策略。当人类感觉在某个粒度级别上训练不足以回答问题时,他们简单地提供一个他们感到自信的更粗略级别的答案。例如,大多数人不会将图1中的动物识别为“墨西哥无毛犬”。相反,他们将问题从分类犬种转变为分类哺乳动物,并简单地说它是一只“狗”。
- 因此,一种更符合人类认知的长尾识别策略是采用分层分类,并允许在树的中间层级做出决策,以实现两个目标:
- 以高置信度对所有示例进行分类,
- 在不违反第一个目标的情况下,尽可能深入树中对每个示例进行分类。
- 由于低样本类别的示例比流行类别的示例更难以高置信度进行分类,它们往往在树的较早层级被分类。这可以被视为现实分类(realistic classification)的一种软版本,其中分类器拒绝处理低分类置信度的示例,并被称为现实分类法(realistic taxonomic classification,RTC)。分类法的扩展允许在不同的分类学层级上设置多个“退出层”,用于分类。
-
现实分类法的要点:
- RTC 认识到,虽然在叶子节点进行分类可以揭示完整的标签信息,但在不可行的情况下,仍然可以通过在中间分类学阶段进行分类恢复部分标签信息。接下来可以优先考虑中间层级的正确决策而不是叶子节点的错误决策,以最大化每个样本恢复的平均信息量。
- 我们引入了一个新的分类器性能度量,称为正确预测比特(correctly predicted bits,CPB),以捕捉这种平均信息,并提议将其作为长尾识别的新性能度量。与仅仅优化叶子节点的分类准确率不同,高 CPB 分数要求学习算法在所有树层级产生校准的类别概率估计。这对于准确确定何时应离开树至关重要。对于长尾识别,不同图像可以在不同的分类学层级进行分类,这种校准尤其具有挑战性。
-
现实分类器的训练:
我们通过两项新的对 RTC 深度 CNN 训练的贡献来解决这个问题。
- 第一项是基于随机树采样(stochastic tree sampling,STS)的新正则化过程,它允许在训练期间考虑分类树的所有可能切分。然后,RTC 以类似于 dropout 的程序进行训练,考虑到 CNN 与所有这些切分的一致性。
- 第二项贡献解决了 RTC 需要一个动态 CNN 的挑战,该 CNN 能够为每个输入示例在不同的分类学层级生成预测。这是通过一种新颖的动态预测器合成过程来解决的,该过程受到参数继承的启发,这是一种在分层分类中常用的正则化策略。据我们所知,这些贡献使得 RTC 与深度 CNN 和动态预测器的首次实现成为可能。这被称为 Deep-RTC,它实现了与最先进的长尾识别方法相当的叶子分类准确率,但每个样本恢复的平均标签信息要多得多。
-
本文贡献:
总的来说,这篇论文做出了三项贡献。
- 我们提出了 RTC 作为解决长尾问题的新方案。
- Deep-RTC 架构,它实现了随机分类学正则化和动态分类学预测的结合,用于在深度 CNN 中实现 RTC。
- 基于 CPB 分数的长尾识别评估的替代设置,该设置考虑了类别预测中信息量的大小。
Section 2 Related Work
相关工作
-
长尾识别(Long-Tailed Recognition):
已经提出了几种策略来解决识别中的类别不平衡问题:
- 一种可能性是通过欠采样头部和过采样尾部类别来进行数据重采样。还提出了样本合成来增加尾部类别的数量。与 Deep-RTC 不同,这些方法并不寻求改进长尾识别的分类架构。
- 另一种选择是将知识从头部转移到尾部类别。受元学习的启发,这些方法学习了如何利用来自头部类别的知识来提高尾部类别的泛化能力。引入了封装来自头部类别的知识的记忆特征,并使用注意力机制区分头部和尾部类别。这与 Deep-RTC 有一些相似之处,后者也通过利用它们之间的层次关系将知识从头部转移到尾部类别。
- 长尾识别也可以通过成本敏感的损失来解决,这些损失为不同的样本分配不同的权重。
- 一种典型的方法是根据类的频率对类进行加权或将尾部类视为难例。提出了一种可以直接应用于 softmax 层的类平衡损失和焦点损失。这些方法对于非常低频的类可能表现不佳。
- 通过强制少数类的大间隔来解决这个问题,其中间隔与类样本的数量成反比。虽然有效损失是这项工作的目标,但我们寻求用于分类校准的损失,而成本敏感的损失并没有解决这一问题。
- 最后,受类权重范数与其样本数之间相关性的启发,提出在分类器训练后调整前者。所有这些方法都使用了平坦的 softmax 分类器架构,并没有解决 RTC 的设计问题。
-
分层分类(Hierarchical Classification):
分层分类在计算机视觉领域受到了广泛关注。例如,
- 在大规模和不平衡的数据集上进行对象识别时,跨类共享信息,以及探索定义跨类的共同层次语义空间以实现零样本学习。这项工作中使用的一些想法,如参数继承,都来自这篇文献。然而,它们大多数都是在深度学习之前提出的,不能直接应用于现代 CNN。
- 最近,分层共享参数或特征的想法启发了 CNN 架构的设计。其中一些不支持类分类法,例如为平面分类学习层次特征结构。其他方法只适用于某种固定的两级层次结构。
- 与本工作更接近的是那些用卷积分支补充平面分类器的架构,这些分支对其特征进行正则化以强制实施层次结构。
- 这些分支可以基于特征池化算子的层次结构,或者由中间分类级别的标签监督的分类层。
- 然而,额外层的使用使得与平面分类器的比较不公平,这将破坏本文的一个重要目标:研究分层(相对于平面)分类对长尾识别的好处。因此,我们避免使用给主干网络增加参数的分层架构。这些方法也没有解决 RTC 的一个核心挑战,即需要同时优化许多标签集,这些标签集与类分类的不同级别相关联。
- 这需要动态的网络,其架构可以实时更改,以实现:
- 使用不同的标签集对不同的样本进行分类,
- 以及针对多个标签集进行优化。
-
带有拒绝机制的学习(Learning with Rejection):
- 拒绝学习的想法至少可以追溯到[9]。后续的工作推导了关于错误拒绝权衡的理论结果,并探索了替代的拒绝标准,以避免计算类后验概率。
- 由于深度学习的引入使得后验分布的估计成为分类的核心,最近的拒绝函数包括阈值后验或派生数量,如后验熵。
- 还提出了其他的拒绝方法,包括使用样本之间的相对距离、蒙特卡罗 dropout,或使用带有路由或拒绝网络的分类模型。
- 在我们的 RTC 实现中:
- 我们采用了[24,25,57]中的简单基于阈值的拒绝规则。
- 然而,拒绝被应用到层次分类器的每个级别,而不是一次用于平面分类器。这类似于[15,18]中的对冲策略,其目标是最大化每个样本恢复的平均标签信息。
- 然而,虽然[15,18]累积了平面分类器的类概率,但我们的 Deep-RTC 解决了整个树的概率校准问题。我们的实验表明,这显著优于平面分类器概率的累积。
- [15]进一步在校正前校准类概率,但校准仅在事后进行(在测试时)。相反,我们提出STS来训练层次分类器,其预测在所有分类级别上都是内在校准的。
Section 3 Long-tailed recognition and RTC
长尾识别和 RTC
本节介绍了将 RTC 作为长尾识别解决方案的必要性。
-
长尾识别:
-
长尾定义:
现有的方法将长尾识别表述为平面分类(flat classification),通过 softmax 分类器的一些变体来解决。这结合了特征提取器 h ( x ; Φ ) ∈ R k h(\boldsymbol{\mathrm{x}};\Phi)\in\R^k h(x;Φ)∈Rk,由参数 Φ \Phi Φ 的 CNN 实现,以及由线性变换 W \boldsymbol{\mathrm{W}} W 和 softmax 函数 σ ( ⋅ ) \sigma(\cdot) σ(⋅) 组成的 softmax 回归层:
f ( x ; W , Φ ) = σ ( z ( x ; W , Φ ) ) z ( x ; W , Φ ) = W T h ( x ; Φ ) f(\boldsymbol{\mathrm{x}};\boldsymbol{\mathrm{W}},\Phi)=\sigma(z(\boldsymbol{\mathrm{x}};\boldsymbol{\mathrm{W}},\Phi))\qquad z(\boldsymbol{\mathrm{x}};\boldsymbol{\mathrm{W}},\Phi)=\boldsymbol{\mathrm{W}}^Th(\boldsymbol{\mathrm{x}};\Phi) f(x;W,Φ)=σ(z(x;W,Φ))z(x;W,Φ)=WTh(x;Φ)
这些网络被训练成最小化分类错误。由于中等和少样本类别的样本有限,性能可能会较弱。长尾识别方法通过示例重采样、成本敏感损失、跨类参数共享或后处理来解决这个问题。这些策略并非没有缺点。例如,成本敏感或重采样方法面临“打地鼠”困境,其中少样本类别的性能改进(例如,通过给予它们更多的权重)意味着更多样本的类别(权重较小)的性能下降。它们也与人类的认知识别策略大不相同,后者广泛依赖于类分类法。 -
现实分类器的灵感萌芽:
-
许多认知科学的研究试图确定人类对物体进行分类的分类水平。这表明大多数物体类都有一个默认级别,大多数人类用它来标记物体(例如“狗”或“猫”)。然而,这个所谓的基本级别因人而异,取决于个人对该物体类的训练,也被称为专业知识。
- 例如,一个狗主人自然会把他的宠物称为“拉布拉多犬”,而不是“狗”。这表明,即使人类也不是伟大的长尾识别者。除非他们是专家(即在一个类别上有过大量的训练),否则他们会在更高的分类级别上进行分类。
-
从机器学习的角度来看,这在两个方面是有意义的。
- 首先,通过向上移动分类树,总是有可能找到一个具有足够训练样例的节点来进行准确的分类。
- 其次,虽然它没有为所有例子提供完整的标签信息,但这可能比平面分类器的全有或全无策略产生更高的平均标签信息。
总之,当面对少样本类别时,人类会权衡分类粒度和类流行度,选择一个他们的训练有足够的样例来保证准确识别的分类级别。这并不意味着他们不能进行细粒度的识别,只是这种识别仅限于他们擅长的类别。例如,因为所有人类都在人脸识别方面接受过大量的训练,所以他们在这一非常精细的任务中表现出色。这些观察结果激发了 RTC 方法在长尾识别中的应用。
-
-
-
现实分类学分类:
-
公式化描述:
-
分类学分类器将图像 x ∈ X x\in\mathcal{X} x∈X 映射到一组 C C C 个类别 y ∈ Y { 1 , … , C } y\in\mathcal{Y}\{1,\dots,C\} y∈Y{1,…,C},这些类别按照树型层次结构 T \mathcal{T} T 组织成一个分类学结构,其中类别递归地分组到父节点。它由一组分类节点 N = { n 1 , … , n N } \mathcal{N}=\{n_1,\dots,n_N\} N={n1,…,nN} 和一组分类关系 A = A ( n 1 ) , … , A ( n N ) \mathcal{A}={\mathcal{A}(n_1),\dots,\mathcal{A}(n_N)} A=A(n1),…,A(nN) 定义,其中 A ( n ) \mathcal{A}(n) A(n) 是节点 n n n 的祖先节点的集合。
-
分类学所允许的最细粒度的分类决策发生在叶子上。我们将这组细粒度类别表示为 Y f g = L e a v e s ( T ) \mathcal{Y}_{fg}=\mathrm{Leaves}(\mathcal{T}) Yfg=Leaves(T)。图2给出了一个分类问题的例子:
-
图片注解:
- 基于树层次的参数共享是通过码字矩阵Q实现的。训练从随机选择的标签集全局正则化,并从节点条件一致性损失局部正则化。
-
其中 ∣ Y f g ∣ = 4 |\mathcal{Y}_{fg}|=4 ∣Yfg∣=4, ∣ N ∣ = 5 |\mathcal{N}|=5 ∣N∣=5, A ( n 4 ) = A ( n 5 ) = { n 1 } \mathcal{A}(n_4)=\mathcal{A}(n_5)=\{n_1\} A(n4)=A(n5)={n1} 且 A ( n i ) = ∅ , i ∈ { 1 , 2 , 3 } \mathcal{A}(n_i)=\varnothing,i\in\{1,2,3\} A(ni)=∅,i∈{1,2,3}。
-
类别 y 1 y_1 y1、 y 2 y_2 y2 属于父类别 n 1 n_1 n1,根 n 0 n_0 n0 是一个包含所有类别的虚拟节点。请注意,我们用 n n n 表示节点,用 y y y 表示叶子标签。
-
在 RTC 中,不同的样本可以在不同的层次级别上进行分类。
- 例如,类别 y 2 y_2 y2 的一个样本可以在根处被拒绝,也可以在节点 n 1 n_1 n1 处被分类,或者被分类到一个叶子类别中。这些选项依次为样本分配更细粒度的标签。
- 在根处被拒绝的样本可以属于四个类别中的任何一个,
- 而那些在节点 n 1 n_1 n1 处被分类的样本则属于类别 y 1 y_1 y1 或 y 2 y_2 y2。
- 在叶子处的分类将样本分配给一个单一的类别。
因此,RTC 可以预测分类学 T \mathcal{T} T 中的任何子类。
-
-
给定一组训练集 D = { ( x i , y i ) } i = 1 M i \mathcal{D}=\{(x_i,y_i)\}^{M_i}_{i=1} D={(xi,yi)}i=1Mi,包括图像和类别标签,以及一个类别分类学 T \mathcal{T} T,目标是学习一对分类器 f ( x ) f(\boldsymbol{\mathrm{x}}) f(x) 和拒绝函数 g ( x ) g(\boldsymbol{\mathrm{x}}) g(x),它们协同工作,将每个输入图像 x \boldsymbol{\mathrm{x}} x 分配到可能的细粒度类别 y ^ \hat{y} y^,同时确保对这个分配有一定的信心。
-
-
置信度设置:
-
类别预测 y ^ \hat{y} y^ 的深度取决于样本难度和分类的能力水平 γ \gamma γ。这是对 x \boldsymbol{\mathrm{x}} x 可以被分类的置信度的下限。
-
为 f ( x ) f(\boldsymbol{\mathrm{x}}) f(x) 定义了一个置信度分数 s ( f ( x ) ) s(f(\boldsymbol{\mathrm{x}})) s(f(x)),如果 s ( s ( f ( x ) ) ) ≥ γ s(s(f(\boldsymbol{\mathrm{x}})))≥\gamma s(s(f(x)))≥γ,则声明 f ( x ) f(\boldsymbol{\mathrm{x}}) f(x) 有能力(在 γ \gamma γ 水平上)对 x \boldsymbol{\mathrm{x}} x 进行分类。
-
如果 RTC 的所有中间节点决策都具有这种能力水平,那么 RTC 就具有能力水平 γ \gamma γ。
-
-
虽然对于使用叶子标签集 Y f g \mathcal{Y}_{fg} Yfg 的分类来说,这可能无法保证,但总是可以通过拒绝层次结构的中间节点上的样本来保证,即定义
g v ( x ; γ ) = 1 [ s ( f v ( x ) ) ≥ γ ] g_v(\boldsymbol{\mathrm{x}};\gamma)=1_{[s(f_v(\boldsymbol{\mathrm{x}}))\ge\gamma]} gv(x;γ)=1[s(fv(x))≥γ]- 参数列表:
- 每个分类节点 v v v,
- 其中 1 [ ⋅ ] 1_{[\cdot]} 1[⋅] 是克罗内克delta(Kroneker delta)。
- 参数列表:
-
这动态地对每个样本 x \boldsymbol{\mathrm{x}} x 修剪了层次结构 T \mathcal{T} T,生成了一个定制的切割 T p \mathcal{T}_p Tp,对于这个切割,层次分类器在能力水平 γ \gamma γ上是胜任的。
-
这种修剪在图3的右侧进行了说明。
- 难以分类的样本,例如来自少样本类的样本,会导致低置信度分数,并在层次结构中被更早地拒绝。与分类器专业知识相匹配的样本,例如来自多样本类的样本,会进展到叶子。
- 这是平面现实分类器的一般化,后者只是接受或拒绝样本。RTC 模仿了人类的行为,即,尽管 x \boldsymbol{\mathrm{x}} x 可能不会被分类到最细粒度的级别,但在中间或粗略级别通常可以做出自信的预测。
- 能力水平
γ
\gamma
γ 为这些决策的质量提供了保证。由于较大的
γ
\gamma
γ 值需要更高置信度的决策,它们鼓励在层次结构中尽早进行样本分类,避免更容易出错的困难决策。
- 通过调整 γ \gamma γ 来控制精确度和细粒度标记之间的权衡。置信度分数 s ( ⋅ ) s(\cdot) s(⋅) 可以用各种方式实现。
- 虽然 RTC 与这些中的任何一个都兼容,但我们采用了流行的最大后验概率准则,即 s ( f ( x ) ) = max i f i ( x ) s(f(\boldsymbol{\mathrm{x}}))=\max_if^i(\boldsymbol{\mathrm{x}}) s(f(x))=maxifi(x),其中 f i ( ⋅ ) f^i(\cdot) fi(⋅) 是 f ( ⋅ ) f(\cdot) f(⋅) 的第 i i i 个条目。
- 根据我们的经验,节点预测器 f v ( x ) f_v(\boldsymbol{\mathrm{x}}) fv(x) 的校准比置信度得分函数的特定实现更为重要。
-
-
Section 4 Taxonomic probability calibration
分类学概率校准
-
分类学校准(Taxonomic calibration):
-
小规模:
-
由于 RTC 要求在分类树的所有层级上做出决策,样本可以被分类到包含 T \mathcal{T} T 的任何切分的叶节点的任何潜在标签集 Y \mathcal{Y} Y 中。例如,图2的分类学允许两个标签集,即包含所有类别的 Y f g = { y 1 , y 2 , y 3 , y 4 } \mathcal{Y}_{fg}=\{y_1,y_2,y_3,y_4\} Yfg={y1,y2,y3,y4},以及通过修剪节点 n 1 n_1 n1 的子节点得到的 Y = { n 1 , y 3 , y 4 } \mathcal{Y}=\{n_1,y_3,y_4\} Y={n1,y3,y4}。
-
对于长尾识别,不同的图像可以在非常不同的分类学层级上被分类,因此校准所有这些标签集的后验概率分布是很重要的。我们通过优化层次结构中所有可实现的分类器的集合来解决这个问题,即最小化损失 :
L e n s = 1 ∣ Ω ∣ ∑ Y ∈ ω L Y \mathcal{L}_{ens}=\frac{1}{|\Omega|}\sum_{Y\in\omega}L_\mathcal{Y} Lens=∣Ω∣1Y∈ω∑LY- 参数字典:
- Ω \Omega Ω 是通过修剪树T可以得到的所有目标标签集 T \mathcal{T} T 的集合,
- L Y L_\mathcal{Y} LY 是与标签集 Y \mathcal{Y} Y 相关的损失函数。
- 参数字典:
-
-
大规模:
-
虽然这种方法对于小的分类学是可行的,但它不随分类学的大小扩展,因为集合 Ω \Omega Ω 随着 ∣ T ∣ |\mathcal{T}| ∣T∣ 呈指数增长。
-
相反,我们引入了一个受 dropout 启发的机制,在训练期间进行随机树采样(STS)。在每次训练迭代中,对分类树 T \mathcal{T} T 进行随机切分 T c \mathcal{T}_c Tc 的采样,并优化与相应标签集 Y c \mathcal{Y}_c Yc 相关的预测器 f Y c ( x ; W Y c , Φ ) f_{\mathcal{Y}_c}(\boldsymbol{\mathrm{x}};\boldsymbol{\mathrm{W}}_{\mathcal{Y}_c}, \boldsymbol{\mathrm{\Phi}}) fYc(x;WYc,Φ)。
-
为此,对于每个内部节点 v v v,通过采样伯努利随机变量 P v ∼ B e r n o u l l i ( p ) P_v\sim Bernoulli(p) Pv∼Bernoulli(p) 来生成随机切分,给定 dropout 率 p p p。如果 P v = 0 P_v=0 Pv=0,则修剪以 v v v 为根的子树。这些分类学切分的例子如图3所示。
- 图片注解:
- Deep-RTC 由一个特征提取器、一个节点切分生成器(为所有内部节点生成 Y n = C ( n ) \mathcal{Y}_n=\mathcal{C}(n) Yn=C(n) )和一个随机切分生成器(从 T c \mathcal{T}_c Tc 产生潜在标签集 Y c \mathcal{Y}_c Yc)组成。为每个标签集构建分类矩阵 W Y c \mathrm{W}_{\mathcal{Y}_c} WYc ,并施加公式(12)的损失。
- 右:在推理时在特定层级拒绝样本。
- 图片注解:
-
然后合成与切分 T c \mathcal{T}_c Tc 相关的目标标签集Yc一致的预测器 f Y c f_{\mathcal{Y}_c} fYc,并计算损失
L s t s = 1 M ∑ i = 1 M L Y c ( x i , y i ) \mathcal{L}_{sts}=\frac{1}{M}\sum^M_{i=1}L_{\mathcal{Y}_c}(\boldsymbol{\mathrm{x}}_i,y_i) Lsts=M1i=1∑MLYc(xi,yi)
通过在不同迭代中考虑不同的切分,学习算法迫使分层分类器为所有标签集产生校准良好的决策。
-
-
-
参数共享(Parameter sharing):
-
上述过程需要为从分类学 T \mathcal{T} T 派生出的所有可能的标签集 Y c \mathcal{Y}_c Yc 实时合成预测器 f Y c f_{\mathcal{Y}_c} fYc 。这意味着需要一个动态 CNN 架构,其中 Section 3 公式1 随样本 x \boldsymbol{\mathrm{x}} x 变化。
-
受此启发的 Deep-RTC 就是这样一种架构。对于长尾识别,预测器 f Y c f_{\mathcal{Y}_c} fYc 应该共享参数,以便从头部类别向尾部类别传递信息。这是通过两种参数共享机制的结合来实现的:
- 首先,所有标签集共享骨干特征提取器 h ( x ; Φ ) h(\boldsymbol{\mathrm{x}};\Phi) h(x;Φ)。由于这使得 Deep-RTC 能够在单个网络中实现,且无需额外参数,这对于与平面分类器进行公平比较也是至关重要的。更复杂的分层网络架构会破坏这些比较,因此没有进行研究。
- 其次,Section 3 公式1 的预测器应该反映每个标签集 Y c \mathcal{Y}_c Yc 的层次结构。
-
一种流行的实现这种约束的方法,称为参数继承(parameter inheritance,PI),在节点 n n n 的预测器中重用祖先节点 A ( n ) \mathcal{A}(n) A(n) 的参数。然后, W Y \boldsymbol{\mathrm{W}}_\mathcal{Y} WY 的列向量 w n \boldsymbol{\mathrm{w}}_n wn 定义为:
w n = θ n + ∑ p ∈ A ( n ) θ p , ∀ n ∈ Y \boldsymbol{\mathrm{w}}_n=\theta_n+\sum_{p\in \mathcal{A}(n)}\theta_p,\quad\forall n\in\mathcal{Y} wn=θn+p∈A(n)∑θp,∀n∈Y- 其中 θ n \theta_n θn 是非层次节点参数。
这种组合结构有两个优点:
- 首先,它利用父节点的参数(更多的训练数据)来正则化其低级后代的参数(较少的训练数据)。
- 其次,节点 n n n 的参数向量 θ n \theta_n θn 只需要模拟 n n n 与其父节点之间的残差,以便区分其兄弟节点。总之,低级决策同时被简化和强化。
-
-
动态预测器合成(Dynamic predictor synthesis):
-
Deep-RTC 是一种新颖的架构,用于实现符合参数共享部分公式的预测器 f Y c f_{\mathcal{Y}_c} fYc 的动态合成。这是通过为每个节点 n n n 引入一个代码字向量 q n ∈ { 0 , 1 } ∣ N ∣ \boldsymbol{\mathrm{q}}_n\in\{0,1\}^{|\mathcal{N}|} qn∈{0,1}∣N∣,包含二进制标志,用于标识 n n n 的祖先 A ( n ) \mathcal{A}(n) A(n):
q n ( v ) = 1 [ v ∈ A ( n ) ∪ { n } ] \boldsymbol{\mathrm{q}}_n(v) = 1_{[v\in\mathcal{A}(n)\cup\{n\}]} qn(v)=1[v∈A(n)∪{n}]- 例如,在图 2 的分类学中,因 A ( n 1 ) = ∅ \mathcal{A}(n_1)=\varnothing A(n1)=∅ 而 q n 1 = ( 1 , 0 , 0 , 0 , 0 ) \boldsymbol{\mathrm{q}}_{n_1}=(1,0,0,0,0) qn1=(1,0,0,0,0),因 A ( n 4 ) = { n 1 } \mathcal{A}(n_4)=\{n_1\} A(n4)={n1} 而 q n 4 = ( 1 , 0 , 0 , 1 , 0 ) \boldsymbol{\mathrm{q}}_{n_4}=(1,0,0,1,0) qn4=(1,0,0,1,0)。
- T \mathcal{T} T 的节点代码字 q n \boldsymbol{\mathrm{q}}_n qn 编码了在 PI 策略下对节点 n n n 的预测有贡献,从而为任何标签集 Y \mathcal{Y} Y 的预测器合成提供了一个配方。
-
然后引入一个节点特定参数矩阵 θ = [ θ 1 , … , θ ∣ N ∣ ] \theta=[\theta_1,\dots,\theta_{|\mathcal{N}|}] θ=[θ1,…,θ∣N∣],其中对于所有 n ∈ N n\in\mathcal{N} n∈N, θ n ∈ R k \theta_n\in\R^k θn∈Rk,并且 w n \boldsymbol{\mathrm{w}}_n wn 可以重构为
w n = θ q n \boldsymbol{\mathrm{w}}_n=\theta\boldsymbol{\mathrm{q}}_n wn=θqn
所有节点 n ∈ Y n\in\mathcal{Y} n∈Y 的代码字向量随后被写入代码字矩阵 Q y ∈ { 0 , 1 } ∣ N ∣ × ∣ Y ∣ \boldsymbol{\mathrm{Q}}_\mathcal{y}\in\{0,1\}^{|\mathcal{N}|\times|\mathcal{Y}|} Qy∈{0,1}∣N∣×∣Y∣ 的列中,以定义(1)中的预测器,
f Y ( x ; Θ , Φ ) = σ ( z Y ( x ; Θ , Φ ) ) z Y ( x ; Θ , Φ ) = W Y T h ( x ; Φ ) f_\mathcal{Y}(\boldsymbol{\mathrm{x;\Theta,\Phi}})=\sigma(z_\mathcal{Y}(\boldsymbol{\mathrm{x;\Theta,\Phi}}))\qquad z_\mathcal{Y} (\boldsymbol{\mathrm{x;\Theta,\Phi}})=\boldsymbol{\mathrm{W}}^T_\mathcal{Y}h(\boldsymbol{\mathrm{x;\Phi}}) fY(x;Θ,Φ)=σ(zY(x;Θ,Φ))zY(x;Θ,Φ)=WYTh(x;Φ)
其中 W Y = Θ Q Y \boldsymbol{\mathrm{W}}_\mathcal{Y}=\Theta\boldsymbol{\mathrm{Q}}_\mathcal{Y} WY=ΘQY。这使得通过简单地使 Q Y \boldsymbol{\mathrm{Q}}_\mathcal{Y} QY 成为动态矩阵 Q Y ( x ) = Q Y c \boldsymbol{\mathrm{Q}}_\mathcal{Y}(\boldsymbol{\mathrm{x}})=\boldsymbol{\mathrm{Q}}_\mathcal{Y_c} QY(x)=QYc,就可以对样本 x \boldsymbol{\mathrm{x}} x 进行任何标签集 Y c \mathcal{Y}_c Yc 的分类,如图3所示。
-
-
损失函数(Loss function):
-
Deep-RTC 使用交叉熵损失
L Y ( x i , y i ) = − y i T log f Y ( x ; Θ , Φ ) L_\mathcal{Y}(\boldsymbol{\mathrm{x}}_i,y_i)=−\boldsymbol{\mathrm{y}}^T_i\log f_\mathcal{Y}(\boldsymbol{\mathrm{x;\Theta,\Phi}}) LY(xi,yi)=−yiTlogfY(x;Θ,Φ)
进行训练,其中 y i \boldsymbol{\mathrm{y}}_i yi 是 y i ∈ Y y_i\in\mathcal{Y} yi∈Y 的一位有效编码。当这在(4)中使用时,CNN 针对与分类学切分 T c \mathcal{T}_c Tc 相关的标签集 Y c \mathcal{Y}_c Yc 进行全局优化。与 T \mathcal{T} T 的不同切分相关的许多分类器的正则化是一种全局正则化,保证所有分类器都校准良好。 -
除此之外,还可以校准内部节点条件决策。假设样本 x \boldsymbol{\mathrm{x}} x 已被分配给节点 n n n,节点条件决策是局部的,并确定样本应该分配给 n n n 的哪些子节点 C ( n ) \mathcal{C}(n) C(n)。它们只考虑由 n n n 的子节点定义的目标标签集 Y n = C ( n ) \mathcal{Y}_n=\mathcal{C}(n) Yn=C(n)。对于这些标签集,所有节点 v ∈ C ( n ) v\in\mathcal{C}(n) v∈C(n) 共享相同的祖先集 A v \mathcal{A}_v Av,因此(5)的第二项。因此,在 softmax 归一化之后,(5)等价于 w v = θ v \boldsymbol{\mathrm{w}}_v=\theta_v wv=θv,节点条件分类器 f n ( ⋅ ) f_n(\cdot) fn(⋅) 简化为
f n ( x ; Θ , Φ ) = σ ( Q n T Θ T h ( x ; Φ ) ) f_n(\boldsymbol{\mathrm{x;\Theta,\Phi}})=\sigma(\boldsymbol{\mathrm{Q^T_n\Theta^T}}h(\boldsymbol{\mathrm{x;\Phi}})) fn(x;Θ,Φ)=σ(QnTΘTh(x;Φ))
其中,如图2所示,代码字矩阵 Q n \boldsymbol{\mathrm{Q}}_n Qn 对于所有祖先节点都包含零。因此,可以通过注意到样本xi为其真实祖先路径 A ( y i ) \mathcal{A}(y_i) A(yi) 中的所有节点条件分类器提供监督来校准内部节点决策。这允许定义每个节点 n n n 的节点条件一致性损失
L n = 1 M ∑ i = 1 M 1 ∣ A ( y i ) ∣ ∑ n ∈ A ( y i ) L Y n ( x i , y n , i ) \mathcal{L}_n=\frac{1}{M}\sum^M_{i=1}\frac{1}{|\mathcal{A}(y_i)|}\sum_{n\in\mathcal{A}(y_i)}L_{\mathcal{Y}_n}(\boldsymbol{\mathrm{x}}_i,y_{n,i}) Ln=M1i=1∑M∣A(yi)∣1n∈A(yi)∑LYn(xi,yn,i)
其中 L Y n L_{\mathcal{Y}_n} LYn 是标签集 Y n \mathcal{Y}_n Yn 的(9)的损失, y n , i y_{n,i} yn,i 是节点 n n n 的决策 x i \boldsymbol{\mathrm{x}}_i xi 的标签。Deep-RTC 通过最小化这些局部节点条件一致性损失和(4)的全局集成损失的组合
L c l s = L n + λ L s t s \mathcal{L}_{cls}=\mathcal{L}_n+\lambda\mathcal{L}_{sts} Lcls=Ln+λLsts
进行训练,其中 λ \lambda λ 权衡了两个项的贡献。
-
-
性能评估(Performance Evaluation):
-
由于平面分类器的普遍采用,以前的长尾识别工作将性能等同于识别准确率。在分类学设置下,这等同于测量叶节点准确率 E { 1 [ y ^ i = y i ] } \mathbb{E}\{1_{[\hat{y}_i=y_i]}\} E{1[y^i=yi]},并且未能奖励分类粒度和准确率之间的权衡。在图1的例子中,它只奖励“墨西哥无毛犬”标签,对“狗”或“蜘蛛”标签没有区分,这两者都被认为是错误的。
-
分类学的替代方案是依赖于分层准确率 E { 1 [ y ^ i ∈ A ( y i ) ] } \mathbb{E}\{1_{[\hat{y}_i\in\mathcal{A}(y_i)]}\} E{1[y^i∈A(yi)]}。这有一个局限性,即平等奖励“狗”和“墨西哥无毛犬”,即不鼓励更细粒度的决策。
-
在这项工作中,我们提出更好的性能度量应该捕捉分类捕获的类标签信息量。虽然在叶节点的正确分类捕获了所有信息,但在中间节点的拒绝只能捕获部分信息。为了衡量这一点,我们建议使用分类器正确预测的比特数(correctly predicted bits,CPB),假设分类学叶节点的每个类贡献了一位信息。这定义为
C P B = 1 M ∑ i = 1 M 1 [ y ^ i ∈ A ( y i ) ] ( 1 − ∣ L e a v e s ( T y ^ i ) ∣ ∣ L e a v e s ( T ) ∣ ) \mathrm{CPB}=\frac{1}{M}\sum^M_{i=1}1_{[\hat{y}_i\in\mathcal{A}(y_i)]}\left(1−\frac{|\mathrm{Leaves}(\mathcal{T}_{\hat{y}_i})|}{|\mathrm{Leaves}(\mathcal{T})|}\right) CPB=M1i=1∑M1[y^i∈A(yi)](1−∣Leaves(T)∣∣Leaves(Ty^i)∣)
其中 T y ^ i \mathcal{T}_{\hat{y}_i} Ty^i 是以 y ^ i \hat{y}_i y^i 为根的子树。这为叶节点的正确分类分配了 1 分,为更高树层级的正确分类分配了较小的分数。请注意,任何中间层级的正确预测都优于叶节点的错误预测,但分数低于更细粒度的正确预测。最后,对于平面分类器,CPB 等于分类准确率。
-
Section 5 Experiments
本节介绍了Deep-RTC在长尾识别方面的性能。
5.1 Experimental Setup
实验设置
-
数据集
我们考虑了4个数据集
- CIFAR100-LT 是 CIFAR100 的长尾版本,具有“不平衡因子” 0.01(即样本量最多的类别比最稀有的类别大100倍)。
- AWA2-LT 是我们自己策划的 AWA2 的长尾版本。它包含来自 50 个动物类别的 30,475 张图像和从 WordNet 提取的层次关系,形成了一个 7 级不平衡树。训练集的不平衡因子为 0.01,测试集是平衡的。
- ImageNet-LT 是 ImageNet 的长尾版本,有 1000 个类别,每个类别的图像数量在 5 到 1280 之间,测试集是平衡的。
- iNaturalist (2018) 是一个大规模数据集,包含 8,142 个类别,类别不平衡因子为0.001,测试集是平衡的。虽然完整的 iNaturalist 数据集用于与之前工作的比较,但为了消融研究,我们使用了更易管理的子集 iNaturalist-sub,其中包含 55,929 张图像用于训练和 8,142 张用于测试。有关更多详细信息,请参考补充材料。
-
长尾评估的数据分割
- 采用[46]的评估协议,将类别分为多样本、中等样本和少样本。
- 在 iNaturalist 上使用[46]的分割规则。
- 在 CIFAR100-LT 和 AWA2-LT 上,人口最多的 1/3 类别和人口最少的 1/3 类别分别属于多样本和少样本,其余属于中等样本。
-
骨干架构
- CIFAR100-LT 和 iNaturalist 使用[14]的设置,分别使用 ResNet32 和 ImageNet 预训练的 ResNet50。
- 对于 ImageNet-LT,选择 ResNet10,如[46]所述。
- 对于 AWA2-LT,我们使用 ResNet18。
-
能力水平
除非另有说明,否则 γ \gamma γ 的值通过交叉验证确定,即在验证集上表现最佳的值应用于测试集。
5.2 Ablations
消融
-
设置:
- 我们首先评估了 Deep-RTC 的不同组成部分——参数继承(PI)正则化、节点一致性损失(NCL)和随机树采样(STS)——对性能的影响。
- 在这个实验中使用了两个基线。
- 第一个是平面分类器,使用标准的 softmax 架构实现,并训练以优化分类准确率。这是长尾识别文献中使用架构的代表性基线。
- 第二个是从这个平面分类器派生出的分层分类器,通过根据类分类学递归添加类概率。这被称为递归分层分类器(recursive hierarchical classifier,RHC)。
- 我们将这种概率计算称为自下而上(bottom-up,BU)推理。
- 这与大多数分层方法使用的自上而下(TD)推理相反,后者是从树的根(顶部)到叶(底部)顺序计算概率。
- 不同分类器的性能以多种方式进行测量。
- CPB是度量标准。
- 叶节点准确率是分类学叶节点的分类准确率。
- 对于平面分类器,这是标准的性能度量。
- 对于分层分类器,当不允许中间拒绝时,它是准确率。分层准确率是支持拒绝的分类器的准确率,在做出决策的点进行测量。
- 在图1的例子中,根据这个度量,“狗”的决定被认为是准确的。最后,深度是图像被拒绝的平均深度,通过树的深度进行归一化(例如,如果没有允许中间拒绝,则是 1)。
-
CPB性能:
-
表1显示,平面分类器的CPB性能非常差,因为在叶节点进行预测需要分类器在训练不足的尾部类别上做出决策。结果是大量的错误,即没有保留任何标签信息的图像。
-
RHC,其自下而上的分层扩展,是解决长尾识别问题的更好方案。虽然大多数图像不在叶节点分类,但分层准确率和 CPB 都显著提高。
-
然而,RHC 的 CPB 性能比图2的 PI 架构与 STS 或 NCL 的组合要弱。
-
在这些方法中,STS 的全局正则化比 L n L_n Ln 的局部正则化更有效。然而,通过结合两种正则化,它们引导出一个(Deep-RTC)保留关于类标签最多信息的分类器。
-
性能度量:
-
长尾识别文献一直专注于最大化平面分类器的准确率。表1显示了这种方法的一些局限性。
-
首先,所有分类器在这个度量下的性能都非常差,叶节点准确率在16%到18%之间。
-
此外,如图4所示,标签可能完全无法反映对象类别。
- 在示例中,平面分类器将“海星”(“星花”)的标签分配给顶部(底部)显示的植物(蘑菇)图像。我们不知道有任何应用会觉得这样的标签有用。
-
-
其次,所有分类器在分层准确率方面表现得要好得多。对于实践者来说,这意味着它们是准确的分类器。虽然不足以总是将决策带到树的底部,但它们的决策是可靠的。
- 在同一示例中,Deep-RTC 正确地将图像分类到更广泛的类别“植物”(顶部)和“真菌”(底部)。
-
此外,Deep-RTC在这个层级正确分类了90%的图像!这可能使其对许多应用有用。例如,它可以用于自动将图像路由到这些特定类别的专家,以便进一步标注。
-
第三,在自上而下的分类器中,Deep-RTC 将决策推得最远(例如,比 PI+STS 深4%)。这使得它在 iNaturalist-sub 上比其两个变体更像专家,这一事实被提出的 CPB 度量所捕捉。
鉴于所有这些,我们认为CPB最优性比叶节点准确率作为长尾识别的性能度量更有意义。
5.3 Comparisons to hierarchical classifiers
与分层分类器的比较
接下来,我们在表2中使用CPB对先前的工作进行了分层分类的比较。
- 这些实验表明,先前的方法性能相似,TD(自上而下)或BU(自下而上)推理没有明显的优势;
- 然而,它们都不如 Deep-RTC。这特别有趣,因为这些方法使用的网络比 Deep-RTC更复杂,为了根据分类学正则化特征而在骨干网络中添加分支(和参数)。
- Deep-RTC 只是实现了图2中的动态 softmax 分类器。相反,它利用其动态能力和随机采样同时优化多个树切分的决策。
- 结果表明,这种对标签集的优化比根据分类学塑造网络架构更重要。这是合理的,因为在 Deep-RTC 策略下,特征正则化是端到端学习的,而不是硬编码的。比较方法的详细信息在补充材料中。
5.4 Comparisons to long-tail recognizers
与长尾识别器的比较
在iNaturalist和ImageNet-LT的数据集上,与长尾识别的最新方法的比较分别在表3-4中呈现。在补充材料中还提供了其他数据集的更多比较。
- 在所有情况下,Deep-RTC 正确预测的比特数更多(即 CPB 更高),在 iNaturalist 上比最新的平面分类器提高了9%,在 ImageNetLT 上提高了11%。
- 对于 iNaturalist,我们还讨论了按类别流行度的其他度量,其中 leaf freq. 表示样本被分类到叶节点的频率。与标准 softmax 分类器的比较显示,之前长尾方法在少样本类别上提高了 CPB 性能,但在流行类别上有所下降。Deep-RTC 是唯一一种能够持续提高所有类别流行度水平的 CPB 性能的方法。
- 还值得注意的是,与最新的平面分类器不同,Deep-RTC 不需要为了适应少样本类别而牺牲多样本类别的叶节点准确率,因为在那里它的性能无论如何都不会很好。相反,它为少样本类别的大约一半图像提前退出,并为所有类别保证高度准确的答案(大约 90% 的分层准确率)。这类似于人类处理长尾识别问题的方式。
5.5 Comparisons to learning with rejection
与带有拒绝机制的学习的比较
- 虽然前几节中的分类器在可行的情况下被允许在中间节点拒绝示例,但它们并没有明确地为这种拒绝进行优化。
- 表5展示了在 CIFAR100-LT 和 AWA2-LT 上与最新的平面现实预测器(RP)的比较。在这些比较中,拒绝示例的百分比(拒绝率)保持不变。Deep-RTC 的拒绝率是在根节点拒绝的示例的百分比。
- Deep-RTC 在两个数据集上的所有拒绝率上都取得了最佳性能,因为它有软拒绝的选项,即让示例传播到某个中间树节点。这对于平面 RP 是不可能的,后者总是面临全有或全无的决策。
- 在类别流行度方面,Deep-RTC 在少样本类别上始终具有更高的 CPB,并且经常有显著的增益。对于许多和中等样本类别,在 CIFAR100-LT 上两种方法的性能相当。在 AWA2-LT 上,RP 在许多类别上有优势,而 Deep-RTC 在中等样本类别上有优势。这表明 Deep-RTC 的增益主要是由于其能够尽可能地将低样本类别的图像推向树的深处,而不强迫分类器做出其训练不足的决策。