《Decoupling Representation and Classifier for Long-Tailed Recognition》阅读笔记

论文标题

《Decoupling Representation and Classifier for Long-Tailed Recognition》

用于长尾识别的解耦表示和分类器

作者

Bingyi Kang、Saining Xie、Marcus Rohrbach、Zhicheng Yan、 Albert Gordo、Jiashi Feng 和 Yannis Kalantidis

来自 Facebook AI 和 新加坡国立大学

初读

摘要

  • 视觉世界的长尾分布对基于深度学习的分类模型如何处理类不平衡问题提出了巨大的挑战。现有的解决方案通常涉及类平衡策略(class-balancing strategies)

    • 例如通过损失重加权、数据重采样,或者从头部类别到尾部类别的迁移学习,但它们大多数遵循共同学习表示和分类器的方案。
  • 在这项工作中,我们**将学习过程解耦(decouple)为表示学习和分类(representation learning and classification),并系统地探索不同的平衡策略如何影响长尾识别。**研究结果令人惊讶:

    • 数据不平衡在学习高质量表示时可能不是一个问题;

    • 通过最简单的实例平衡(自然)采样学习的表示,也可以通过仅调整分类器来实现强大的长尾识别能力。

  • 我们进行了广泛的实验,并在常见的长尾基准测试上,如 ImageNet-LT、Places-LT 和 iNaturalist,取得了新的最先进性能,展示了通过使用一种直接的方法解耦表示和分类,可以超越精心设计的损失、采样策略,甚至是带有记忆的复杂模块

结论

  • 在这项工作中,我们探索了多种用于长尾识别的学习方案,并将同时学习表示和分类器与多种简单的解耦方法进行了比较。
  • 通过广泛的研究,我们发现尽管在同时学习表示和分类器时采样策略很重要,但实例平衡采样提供了更具有泛化性的表示,这些表示在适当地重新平衡分类器后,无需精心设计的损失或记忆单元,就能实现最先进的性能
  • 我们在三个长尾基准测试上设定了新的最先进性能,并相信我们的发现不仅有助于更深入地理解长尾识别任务,而且可以为未来的工作提供灵感。

再读

Section 1 Introduction

  • 背景介绍

    视觉识别研究在过去几年中取得了快速进展,这主要得益于深度卷积神经网络(CNNs)的使用和大型图像数据集,尤其是 ImageNet 挑战赛。这类数据集通常在训练集中每个对象/类的实例数量上是人为平衡的。然而,视觉现象遵循长尾分布,许多标准方法无法正确建模,导致准确度显著下降。受此启发,最近出现了一些工作,试图研究长尾识别,即在每个类的实例数量高度变化并遵循长尾分布的环境中进行识别。

  • 长尾学习的常见方向

    在学习长尾数据时,一个常见的挑战是实例丰富(或头部)类主导了训练过程。学到的分类模型往往在这些类上表现更好,而对于实例稀少(或尾部)类的性能则显著较差。

    • 为了解决这个问题,并提高所有类的性能,可以重新采样数据或设计特定的损失函数,以更好地促进不平衡数据的学习。
    • 另一个方向是通过从头部类别转移知识来增强尾部类别的识别性能。然而,现有方法的共同信念是,设计适当的采样策略、损失,甚至是更复杂的模型,对于学习长尾识别的高质量表示是有用的。
  • 问题与改进

    • 大多数上述方法因此是联合学习用于识别的分类器和数据表示。然而,这种联合学习方案使得长尾识别能力的实现方式不明确——是由于学习了更好的表示,还是通过移动分类器决策边界更好地处理了数据不平衡?
    • 为了回答这个问题,我们后退一步,将长尾识别解耦为表示学习和分类。
      • 在学习表示时,模型暴露于训练实例并通过不同的采样策略或损失进行训练。
      • 对于分类,在学到的表示之上,模型通过各种分类器识别长尾类别。
      • 我们在联合和解耦学习方案下评估了各种采样和分类器训练策略对于长尾识别的性能。
  • 具体策略

    • 具体来说,我们首先使用不同的采样策略训练模型来学习表示,包括标准的基于实例的采样(standard instance-based sampling)、类别平衡采样(class-balanced sampling)以及它们的混合。
    • 接下来,我们在学到的表示之上研究三种不同的基本方法来获得具有平衡决策边界的分类器。它们分别是:
      1. 类别平衡方式重新训练参数化线性分类器(即重新采样(re-sampling));
      2. 非参数最近类均值分类器,它根据训练集中最接近的特定于类的平均表示来对数据进行分类;
      3. 归一化分类器权重,它直接调整权重大小以实现更平衡,添加一个温度来调节归一化过程。
  • 实验

    • 我们进行了广泛的实验,以比较上述解耦学习方案的实例与传统的联合训练分类器和表示的方案。我们还与最近精心设计且更复杂的模型进行了比较,包括使用记忆的方法(例如,OLTR (Liu et al., 2019))以及更复杂的损失(Cui et al., 2019)。通过对 ImageNet-LT、Places-LT 和iNaturalist 这三个长尾数据集的广泛研究,
    • 我们得到了以下有趣的观察结果:
      • 我们发现,解耦表示学习和分类的结果令人惊讶,挑战了对长尾识别的常见信念:实例平衡采样学习到了最佳且最具有泛化性的表示。
      • 在长尾识别中,重新调整在表示学习中由联合学习的分类器指定的决策边界是有利的:我们的实验表明,这可以通过用类别平衡采样重新训练分类器来实现,或者通过简单但有效的分类器权重归一化来实现,后者只有一个控制“温度”的超参数,而且不需要额外的训练。
      • 通过将解耦学习方案应用于标准网络(例如,ResNeXt),我们在多个长尾识别基准数据集上实现了比已确立的最先进方法更高的准确度,包括 ImageNet-LT、Places-LT 和 iNaturalist。

Section 2 RELATED WORK

由于实际应用中普遍存在不平衡数据,长尾识别引起了越来越多的关注(Wang 等人,2017;Zhou 等人,2017;Mahajan 等人,2018;Zhong 等人,2019;Gupta 等人,2019)。近期的研究主要从以下三个方向展开:

  • 数据分布重新平衡(Data distribution re-balancing)

    沿着这个方向,研究人员提出了重新采样数据集以实现更平衡的数据分布。这些方法包括

    • 对少数类进行过采样(Chawla et al., 2002; Han et al., 2005)(通过添加数据副本)
    • 对多数类进行欠采样(Drummond et al., 2003)(通过删除数据)
    • 以及基于每个类的样本数量进行类别平衡采样(Shen et al., 2016; Mahajan et al., 2018)。
  • 类别平衡损失(Class-balanced Losses)

    提出了各种方法,为每个类的不同训练样本分配不同的损失。

    • 损失可以在类级别上变化,以匹配给定的数据分布并提高尾部类别的泛化能力(Cui et al., 2019; Khan et al., 2017; Cao et al., 2019; Khan et al., 2019; Huang et al., 2019)。
    • 也可以在样本级别上实现更细粒度的损失控制,例如使用Focal loss(Lin et al., 2017),Meta-Weight-Net(Shu et al., 2019),重新加权训练(Ren et al., 2018),或基于贝叶斯不确定性(Khan et al., 2019)。
    • 最近,Hayat等人(2019年)提出使用亲和力度量来平衡头部和尾部类的分类区域,强制类的聚类中心均匀分布且等距。
  • 从头部类到尾部类的迁移学习(Transfer learning from head- to tail classes)

    基于迁移学习的方法通过将学习自丰富训练实例的头部类特征迁移到代表性不足的尾部类,来解决训练数据不平衡的问题。最近的工作包括迁移类内方差(Yin et al., 2019)和迁移语义深层特征(Liu et al., 2019)。然而,设计特定的模块(例如外部记忆)以进行特征迁移通常是一项非平凡(non-trivial)的任务。

  • 其他

    • Hariharan & Girshick (2017) 提出了一个低样本识别的基准,该基准包括一个没有低样本类别访问权限的表示学习阶段和一个后续的低样本学习阶段。相比之下,长尾识别的设置假设可以访问头部和尾部类别,并且类别标签的减少更为连续。
    • 最近,Liu et al. (2019) 和 Cao et al. (2019) 采用重新平衡计划,在一个两阶段训练方案中联合学习表示和分类器。
    • OLTR (Liu et al., 2019) 使用实例平衡采样首先学习表示,然后在第二阶段使用类别平衡采样和记忆模块进行微调。
    • LDAM (Cao et al., 2019) 引入了一种标签分布感知的边缘损失,扩大了少数样本类别的决策边界。在第五节中,我们详尽地比较了OLTR和LDAM,因为它们报告了 ImageNet-LT、Places-LT 和 iNaturalist 数据集的最先进结果。

在我们的工作中,我们主张解耦表示和分类。我们证明,在长尾场景中,这种分离允许直接的方法实现高识别性能,而无需设计采样策略、平衡感知损失或添加记忆模块。

Section 3 LEARNING REPRESENTATIONS FOR LONG-TAILED RECOGNITION

长尾识别的学习表征/学习长尾识别的表示

  • 概述

    • 对于长尾识别,训练集在类别上遵循长尾分布。由于在训练期间我们对不常见类别的数据了解较少,使用不平衡数据集训练的模型往往会在少数样本类别上表现出欠拟合。
    • 但在实践中,我们希望获得能够良好识别所有类别的模型。因此,提出了各种重新采样策略(Chawla et al., 2002; Shen et al., 2016; Cao et al., 2019)、损失重加权和对少数样本类别的边缘正则化。
    • 然而,它们如何实现性能提升(如果有的话)对于长尾识别仍然不清楚。在这里,我们通过将表示学习与分类器学习分离,系统地调查它们的有效性,以确定长尾识别中实际重要的是什么。
  • 符号表示(Notation)

    我们定义了本文中使用的符号表示。

    • X = { x i , y i } , i ∈ { 1 , … , n } X=\{x_i,y_i\},i\in\{1,\dots, n\} X={xi,yi}i{1,,n} 为一个训练集,
      • 其中 y i y_i yi 是数据点 x i x_i xi 的标签。
    • n j n_j nj 表示类别 j j j 的训练样本数量,且令 n = ∑ j = 1 C n j n=\sum^C_{j=1}n_j n=j=1Cnj 为训练样本的总数。
      • 为了不失一般性,我们假设类别按基数降序排序,即如果 i < j i<j i<j,则 n i ≥ n j n_i\ge n_j ninj
      • 此外,由于我们处于长尾设置中,所以 n 1 ≫ n C n_1\gg n_C n1nC
    • 最后,我们用 f ( x ; θ ) = z f(x;\theta)=z f(x;θ)=z 表示 x x x 的表示,
      • 其中 f ( x ; θ ) f(x;\theta) f(x;θ) 由一个具有参数 θ \theta θ 的深度 CNN 模型实现。
    • 最终的类预测 y ~ \tilde{y} y~ 由一个分类器函数 g g g 给出,即 y ~ = arg ⁡ max ⁡ g ( z ) \tilde{y}=\arg\max g(z) y~=argmaxg(z)
      • 在常见情况下, g g g 是一个线性分类器,即 g ( z ) = W T z + b g(z) = \boldsymbol{W}^Tz+\boldsymbol{b} g(z)=WTz+b,其中 W \boldsymbol{W} W 表示分类器权重矩阵, b \boldsymbol{b} b 是偏置。我们在第 4 节中介绍了 g g g 的其他实例。
  • 采样策略(Sampling strategies)

    在本节中,我们介绍了一系列旨在为表示学习和分类器学习重新平衡数据分布的采样策略。对于下面介绍的多数采样策略,从类别 j j j 采样数据点的概率 p j p_j pj 由以下公式给出:
    p j = n j q ∑ i = 1 C n i q ( 1 ) p_j=\frac{n^q_j}{\sum^C_{i=1} n^q_i}\qquad\qquad(1) pj=i=1Cniqnjq(1)
    其中 q ∈ [ 0 , 1 ] q\in[0, 1] q[0,1] C C C 是训练类别数量。不同的采样策略对应于 q q q 的不同值,下面我们将介绍对应于 q = 1 q = 1 q=1 q = 0 q = 0 q=0 和 q$ = 1/2$ 的策略:

    • 实例平衡采样(Class-balanced sampling)

      这是采样数据的最常见方式,每个训练示例被选中的概率相等。对于实例平衡采样,概率 $p^{IB}_j $ 由公式 1 给出,其中 q = 1 q=1 q=1,即从类别 j j j 采样的数据点与训练集中类别的基数 n j n_j nj 成比例。

    • 类别平衡采样(Class-balanced sampling)

      • 对于不平衡的数据集,实例平衡采样已被证明是次优的(Huang et al., 2016; Wang et al., 2017),因为模型对少数样本类别拟合不足,导致准确性降低,特别是对于平衡的测试集。
      • 类别平衡采样已被用来缓解这种差异,因为在这种情况下,每个类别被选中的概率是相等的。概率 $p^{CB}_j $ 由公式 (1) 给出,其中 q = 0 q=0 q=0,即 p j C B = 1 / C p^{CB}_j = 1/C pjCB=1/C。这可以看作是一种两阶段采样策略,首先从类别集中均匀选择一个类别,然后从这个类别中均匀采样一个实例。
    • 平方根采样(Square-root sampling)

      已经探索了先前采样策略的许多变体。一个常用的变体是平方根采样(Mikolov et al., 2013; Mahajan et al., 2018),其中 q q q 在上述公式 (1) 中设置为 1 / 2 1/2 1/2

    • 渐进均衡采样(Progressively-balanced sampling)

      • 最近的方法(Cui et al., 2018; Cao et al., 2019)使用了混合采样方式,即上述采样策略的组合。在实践中,这包括首先在若干个时期中使用实例平衡采样,然后在最后的时期使用类别平衡采样。这些混合采样方法需要将切换采样策略之前的时期数作为一个显示的超参数设置。

      • 在这里,我们实验了一种更柔和的版本,即渐进均衡采样,它随着学习的进展,逐渐在实例平衡和类别平衡采样之间“插值”。其类别 j j j 的采样概率/权重 p j p_j pj 现在是时期 t t t 的函数,
        p j P B ( t ) = ( 1 − t T ) p j I B + t T p j C B ( 1 ) p^{PB}_j(t)=\left(1−\frac{t}{T}\right)p^{IB}_j+\frac{t}{T}p^{CB}_j\qquad\qquad(1) pjPB(t)=(1Tt)pjIB+TtpjCB(1)
        其中 T T T 是总时期数。附录中的图 3 描述了采样概率。

    • 损失重加权策略(Loss re-weighting strategies)

      针对不平衡数据的损失重加权函数已经得到了广泛的研究,而且本文的范围也不仅仅是检查所有相关的方法。更重要的是,我们发现一些最新报告高性能的方法很难训练和复现 而且在许多情况下需要大量的、特定于数据集的超参数调整。在附录的 A 部分中,我们总结了这一领域的最新、性能最佳的方法。在第 5 节中,我们展示了一些配备适当平衡分类器的基线方法,其性能与最新的损失重加权方法相比,即使不是更好,也相当不错。

Section 4 CLASSIFICATION FOR LONG-TAILED RECOGNITION

长尾识别分类

  • 概述

    • 当在平衡数据集上学习分类模型时,分类器权重通常与模型参数 θ \theta θ 一起训练,以提取表示 f ( x i ; θ ) f(x_i;\theta) f(xi;θ),通过最小化地面真实值(ground truth,指标准答案,此处指真实值) y i y_i yi 和预测 W T f ( x i ; θ ) + b \boldsymbol{W}^Tf(x_i;\theta)+\boldsymbol{b} WTf(xi;θ)+b 之间的交叉熵损失。这也是长尾识别的一个典型基线。

    • 尽管已经提出了各种重新采样、重加权和从头部类别到尾部类别的表示迁移方法,但总体方案仍然是相同的:

      • 分类器要么与表示一起联合学习,
      • 要么通过两阶段方法学习,其中分类器和表示与类别平衡采样的变体一起进行联合微调作为第二阶段(Cui et al., 2018; Cao et al., 2019)。
    • 在本节中,我们考虑在长尾识别中解耦表示和分类。

      • 我们介绍了学习分类器的方法,旨在通过不同的采样策略或其他非参数方式(如最近类均值分类器)微调来纠正头部和尾部类别的决策边界。
      • 我们还考虑了一种重新平衡分类器权重的方法,该方法在不进行任何额外重新训练的情况下,展示了高长尾识别精度。
  • 分类器重新训练(Classifier Re-training,cRT)

    一个直接的方法是使用类别平衡采样重新训练分类器。也就是说,保持表示固定,我们随机重新初始化并使用类别平衡采样优化分类器权重 W \boldsymbol{W} W b \boldsymbol{b} b 的一小部分时期。类似的方法也被最近在(Zhang et al., 2019)中用于长尾视频数据集上的动作识别。

  • 最近类均值分类器(Nearest Class Mean classifier,NCM)

    另一种常用的方法是首先在训练集上为每个类计算均值特征表示,然后使用余弦相似度或基于 L2 正则化均值特征的欧氏距离进行最近邻搜索(Snell et al., 2017; Guerriero et al., 2018; Rebuffi et al., 2017)。尽管这种方法很简单,但它是一个强大的基线(参见第 5 节的实验评估);余弦相似度的固有规范化减轻了权重不平衡问题(也请参见图 4)。

  • τ \tau τ-规范化分类器( τ \tau τ-normalized classifier)

    我们研究了一种有效的方法来重新平衡分类器的决策边界,这是受到一个经验观察的启发:在与实例平衡采样联合训练后,权重 ‖ w j ‖ ‖w_j‖ wj 的范数与类别的基数 n j n_j nj 相关,而在使用类别平衡采样微调分类器后,分类器权重的范数趋于更加相似(参见图 2-left)。

    受到上述观察的启发,我们考虑通过直接调整分类器权重范数来纠正决策边界的失衡,通过以下 τ \tau τ-规范化过程。形式上,设 W = w j ∈ R d × C \boldsymbol{W}={w_j}\in\R^{d×C} W=wjRd×C,其中 w j ∈ R d w_j\in\R^d wjRd 是类 j j j 对应的分类器权重。我们通过以下方式缩放 W \boldsymbol{W} W 的权重得到:
    w ~ i = w i ∣ ∣ w i ∣ ∣ τ ( 3 ) \tilde{w}_i=\frac{w_i}{||w_i||^{\tau}}\qquad\qquad(3) w~i=∣∣wiτwi(3)

    • 参数字典:
      • 其中 τ \tau τ 是一个控制规范化“温度”的超参数,
        • τ = 1 \tau=1 τ=1 时,它简化为标准的 L 2 L_2 L2-规范化。
        • τ = 0 \tau=0 τ=0 时,不施加缩放。
        • 我们经验性地选择 τ ∈ ( 0 , 1 ) \tau\in(0,1) τ(0,1) 以使权重可以平滑地纠正。
        • 经过 τ \tau τ-规范化后,分类的逻辑值由 y ^ = W ~ T f ( x ; θ ) \hat{y}=\tilde{\boldsymbol{W}}^Tf(x;\theta) y^=W~Tf(x;θ) 给出。注意,由于其对逻辑值和最终预测的微小影响,我们在这里丢弃了偏置项 b \boldsymbol{b} b
      • ∣ ∣ ⋅ ∣ ∣ ||\cdot|| ∣∣∣∣ 表示 L 2 L_2 L2 范数。
  • 可学习权重缩放(Learnable weight scaling,LWS)

    另一种解释 τ \tau τ-规范化的方式是将它视为对每个分类器 w i w_i wi 的幅度进行重新缩放,同时保持方向不变。这可以表示为
    W i ~ = f i ∗ w i , f i = 1 ∣ ∣ w i ∣ ∣ T \tilde{W_i}=f_i*w_i,\quad f_i=\frac{1}{||w_i||^T} Wi~=fiwi,fi=∣∣wiT1
    尽管对于 τ \tau τ-规范化通常通过交叉验证来选择 τ \tau τ,我们进一步在训练集上学习 f i f_i fi,使用类别平衡采样(如 cRT)。在这种情况下,我们保持表示和分类器权重固定,只学习缩放因子 f i f_i fi。在我们的实验中,我们将这种变体称为可学习权重缩放(LWS)。

Section 5 EXPERIMENTS

5.1 EXPERIMENTAL SETUP

  • 数据集

    我们在三个大规模的长尾数据集上进行了广泛的实验,包括 Places-LT、ImageNet-LT 和 iNaturalist 2018。

    • Places-LT 和 ImageNet-LT 是从它们的平衡版本(Places2 和 ImageNet-2012)人为截断的,以便训练集的标签遵循长尾分布。
    • Places-LT 包含来自 365 个类别的图像,每个类别的图像数量从 4980 到 5 不等。
    • ImageNet-LT 有 1000 个类别,每个类别的图像数量从 1280 到 5 张不等。
    • iNaturalist 2018 是一个真实世界的、自然长尾的数据集,由 8,142 个物种的样本组成。
  • 评估规程

    • 在长尾数据集上训练后,我们在相应的平衡测试/验证数据集上评估模型,并报告所有类别的常用 top-1 准确率,表示为 All。
    • 为了更好地检查在训练期间看到不同数量的示例时,不同类别之间的性能变化,我们遵循 Liu et al. (2019) 的做法,进一步报告了三个类别集合(split)的准确率:Many-shot(超过 100 张图像)、Medium-shot(20∼100 张图像)和 Few-shot(少于 20 张图像)。准确率以百分比形式报告。
  • 实施

    • 我们使用 PyTorch 框架进行所有实验。
    • 对于 Places-LT,我们选择 ResNet-152 作为主干网络,并在完整的 ImageNet2012 数据集上进行预训练,遵循 Liu et al. (2019) 的做法。
    • 在 ImageNet-LT 上,我们报告了 ResNet-{10,50,101,152} 和 ResNeXt-{50,101,152}(32x4d) 的结果,但主要使用 ResNeXt-50 进行分析。
    • 类似地,ResNet-{50,101,152} 也被用于 iNaturalist 2018。
    • 对于所有实验,如果没有特别指定,我们使用带有动量 0.9 的 SGD 优化器,批量大小为 512,使用余弦学习率调度(Loshchilov & Hutter, 2016),从 0.2 逐渐衰减到 0,图像分辨率为 224 × 224。
    • 在第一阶段表示学习中,主干网络通常训练 90 个周期。在第二阶段,即重新训练分类器(cRT),我们重新启动学习率,并固定主干网络训练 10 个周期。

5.2 SAMPLING STRATEGIES AND DECOUPLED LEARNING

抽样策略和解耦学习

在这里插入图片描述

  • 图片注解:

    在使用 ResNeXt-50 的 ImageNet-LT 上,不同分类器对每个类别集合(split)的性能表现。彩色标记表示学习表示时使用的采样策略。

  • 实验概述

    在图 1 中,我们比较了传统联合训练方案中不同采样策略与解耦学习方案的多种变体在 ImageNet-LT 数据集上的表现。

    • 对于联合训练方案(Joint),线性分类器和用于表示学习的骨干网络使用标准的交叉熵损失和不同的采样策略,即实例平衡、类别平衡、平方根和平衡采样,共同训练 90 个周期。
    • 对于解耦学习方案,我们展示了在 Section 4 中呈现的所有方式中学习分类器的所有方法,即重新初始化并重新训练(cRT)、最近类均值(NCM)以及 τ \tau τ-规范化分类器。

    接下来,我们讨论几个关键观察结果。

  • 结果分析

    • 在联合训练时,采样策略很重要

      • 从图 1 中的 Joint 结果来看,在不同的采样方法和分割中,使用更好的采样策略始终能够获得性能上的提升(也请参见表 5)。
      • 这些趋势在整体性能以及中等和少样本类别中是一致的,其中渐进平衡采样给出了最好的结果。
      • 如预期,实例平衡采样在多样本类别中给出了最高的性能。这是因为得到的结果模型高度偏斜于多样本类别。
      • 我们对联合训练中不同采样策略的结果验证了相关工作中试图设计更好的数据采样方法的努力。
    • 联合学习还是解耦学习?

      • 对于图 1 中展示的大多数情况,使用解耦方法的整体性能显著更好,除了多样本情况之外的所有类别集合。

      • 即使是最邻近类均值(NCM)的非参数方法在大多数情况下也非常有竞争力,而 cRT 和 τ \tau τ-规范化方法则大幅超过了联合训练的基线(即比联合学习的分类器高出 5%),甚至在渐进平衡采样的最佳联合训练设置中,整体准确率比联合训练的设置高出 2%。对于中等和少样本类别,增益分别达到了 5% 和 11%。

      • 为了进一步证明将表示和分类器解耦是有益的,我们实验了同时微调骨干网络(ResNeXt-50)和线性分类器。在表 1 中,我们展示了当整个网络使用标准或较小(0.1×)的学习率进行微调、仅微调骨干网络的最后一个块,或仅重新训练线性分类器并固定表示时的结果。

        在这里插入图片描述

        • 图片注解:在 ImageNet-LT 上重新训练/调整 ResNeXt-50 模型的不同部分。B:骨干;C:分类器;LB:最后一块。
      • 整个网络微调的性能最差(46.3% 和 48.8%),而保持表示冻结的性能最佳(49.5%)。对于中等/少样本类别,这一趋势更为明显。

      • 这个结果表明,对于长尾识别来说,将表示和分类器解耦是可取的。

    • 实例平衡采样提供了最泛化的表示

      在所有解耦方法中,当涉及到整体性能和除了多样本类别之外的所有分割时,我们发现实例平衡采样给出了最好的结果。这尤其有趣,因为它意味着数据不平衡可能在学习高质量表示时不是一个问题。

5.3 HOW TO BALANCE YOUR CLASSIFIER?

如何平衡分级器?

  • 在图 1 中探索的平衡分类器的方法中,
    • 非参数的最近类均值(NCM)似乎比 cRT 和 τ \tau τ-规范化稍微差一些。这两种方法在大多数情况下都比 NCM 更好,除了少样本情况,其中 NCM 的表现相当。
    • NCM 方法最大的下降来自多样本情况。
    • 令人惊讶的是,尽管 NCM 和 τ \tau τ-规范化不需要额外的训练,也不涉及额外的采样过程,但它们仍然给出了有竞争力的性能。
    • 正如第 4 节所讨论的,它们强大的性能可能源于它们能够自适应地调整多种类别的决策边界,包括多样本、中等样本和少样本类别(也请参见图 4)。

在这里插入图片描述

  • 图片注解:

    • 左图:ImageNet-LT 验证集的分类器权重规范(按 n j n_j nj 值降序排序)。
      • 蓝线:使用实例均衡采样学习的分类器权重。
      • 绿线:使用类平衡采样微调后的权重。
      • 金线: τ \tau τ-归一化后的权重。
      • 棕色线:通过可学习权重缩放获得的权重。
    • 右图:不同归一化参数 τ \tau τ 值下的准确率。
  • 在图 2(左)中,我们实证地展示了所有分类器的权重向量的 L 2 L_2 L2 范数,以及按训练集中实例数量降序排序的训练数据分布。

    • 我们可以观察到,联合分类器的权重范数(蓝色线)与相应类别的训练实例数量呈正相关。多样本类别倾向于学习具有更大幅度的分类器。如图 4 所示,这导致特征空间中的分类边界更宽,使得分类器能够在大样本数据类别上具有很高的准确率,但同时也损害了数据稀缺的类别。
    • τ \tau τ-规范化分类器(金色线)通过提供更平衡的分类器权重幅度,在一定程度上缓解了这个问题。
    • 对于重新训练(绿色线),权重几乎是平衡的,只是少样本类别的分类器权重范数略大。
    • 请注意,NCM 方法在图中会给出一条水平线,因为最近邻搜索之前的均值向量是 L 2 L_2 L2 正则化的。
  • 在图 2(右)中,我们进一步研究了 τ \tau τ-规范化分类器的温度参数 τ \tau τ 变化时性能如何变化。该图显示,随着 τ \tau τ 从 0 增加,多样本准确率急剧下降,而少样本准确率急剧增加。

5.4 COMPARISON WITH THE STATE-OF-THE-ART ON LONG-TAILED DATASETS

在长尾数据集上与最先进技术的比较

在本节中,我们将解耦方案的性能与其他最近的工作进行比较,这些工作在三个常见的长尾基准测试中报告了最先进的性能:ImageNet-LT、iNaturalist 和 Places-LT。结果分别展示在表 2、表 3 和表 4 中。

  • ImageNet-LT

    在这里插入图片描述

    • 图片注解:

      ImageNet-LT 上不同骨干架构的长尾识别准确率。 † \dagger 表示直接从 Liu et al. (2019) 复制的结果。 ∗ * 表示使用作者的代码复现的结果。 ∗ ∗ ** 表示使用我们的表示学习阶段实现的 OLTR。

    • 表 2 展示了 ImageNet-LT 的结果。尽管相关的工作使用了 ResNet-10,但我们发现在这个数据集上使用更大的骨干架构可以显著提高性能。因此,我们展示了三个骨干网络的结果:ResNet-10、ResNeXt-50 和更大的 ResNeXt-152。

    • 对于 Liu et al. (2019) 的最先进的 OLTR 方法,我们采用了论文中报告的结果,以及我们使用作者开源代码库复现的结果,该代码库有两个训练设置:代码库中建议的设置和我们用于表示学习的训练设置。

    • 从表中我们可以看出,非参数解耦 NCM 方法的性能与最先进的方法相当。

    • 我们还看到,通过重新训练或 τ \tau τ-规范化适当重新平衡分类器,我们得到的结果,无需额外的装饰,就可以超过所有骨干架构的当前最先进性能。

    • 我们进一步尝试在解耦 cRT 设置的基础上添加 Liu et al. (2019) 的记忆机制,但记忆机制似乎并没有进一步提高性能(请参见附录 B.4)。

  • iNaturalist 2018

    在这里插入图片描述

    • 图片注解:

      iNaturalist 2018 上的总体准确率。带有 † \dagger 的行表示直接从 Cao et al. (2019) 复制的结果。我们展示了训练 90/200 个周期的结果。

    • 我们进一步在 iNaturalist 2018 数据集上评估我们的解耦方法。我们展示了经过 90 和 200 个周期的结果,因为我们发现 90 个周期对于表示学习阶段来说不足以收敛;这与 Cao et al. (2019) 中的训练周期不同,他们在那里训练了 90 个周期。

    • 从表 3 中我们可以看出,结果与 ImageNet-LT 案例一致:

      • 重新平衡分类器可以得到超越 CB-Focal (Cui et al., 2019) 的结果。我们的性能,仅训练 90 个周期,略低于最近提出的 LDAM+DRW (Cao et al., 2019)。然而,在 200 个训练周期和分类器规范化之后,我们使用 ResNet-50 达到了新的最先进性能 69.3,对于 ResNet-152 还可以进一步提高到 72.5。
      • 值得注意的是,我们无法复现 Cao et al. (2019) 中报告的数字。我们发现 τ \tau τ-规范化分类器表现最佳,并给出了数据集的新最先进性能,而令人惊讶的是,在所有多样本、中等样本和少样本类别的分割中,达到了相似的准确率(ResNet-50/ResNet-152 为 69%/72%),这对于长尾识别是一个高度期望的结果。
      • 完整的结果,即所有类别集合和更多骨干架构的结果,可以在附录的表 8 中找到。
  • Places-LT

    在这里插入图片描述

    • 图片注解:

      Places-LT 上的结果,从 ImageNet 预训练的 ResNet152 开始。 † \dagger 表示直接从 Liu et al. (2019) 复制的结果。

    • 对于 Places-LT,我们遵循 Liu et al. (2019) 的协议,从完整的 ImageNet 数据集上预训练的 ResNet-152 骨干网络开始。

    • 与 Liu et al. (2019) 类似,我们然后使用实例平衡采样微调骨干网络以进行表示学习。分类遵循我们的解耦方法,固定表示不变。

    • 正如我们在表 4 中所看到的,所有三种解耦方法都超过了最先进的方法,包括 Lifted Loss (Oh Song et al., 2016)、Focal Loss (Lin et al., 2017)、Range Loss (Zhang et al., 2017)、FSLwF (Gidaris & Komodakis, 2018) 和 OLTR (Liu et al., 2019)。

    • 再一次, τ \tau τ-规范化分类器给出了最佳的性能,特别是在中等和少样本类别中取得了显著的改进。

附录

A LOSS RE-WEIGHTING STRATEGIES

损失再权重策略

在这里,我们总结了我们在第 5 节中与之比较的一些最佳表现的损失重加权方法。

  • Focal loss(Lin et al., 2017)是在目标检测的背景下引入的,其中大多数常见基准都存在不平衡。Focal loss 的目的是通过降低容易样本的样本级分类损失来平衡模型训练。为此,给定样本 x i x_i xi 对其真实类别 y i y_i yi 的概率预测 h i h_i hi,它将一个重加权因子 ( 1 − h i ) γ (1-h_i)^\gamma (1hi)γ 与标准交叉熵损失 LCE 相加,其中 γ > 0 \gamma>0 γ>0​:
    L f o c a l : = ( 1 − h i ) γ L C E = − ( 1 − h i ) γ log ⁡ ( h i ) ( 5 ) \mathcal{L}_{focal}:=(1−h_i)^\gamma\mathcal{L}_{CE}=−(1−h_i)^\gamma\log(h_i)\qquad\qquad(5) Lfocal:=(1hi)γLCE=(1hi)γlog(hi)(5)
    对于容易样本(可能主导训练样本)以及它们对真实类别的较大预测概率 h i h_i hi,相应的交叉熵损失将被降低。

  • 最近,Cui et al. (2019) 提出了一种类平衡的 Focal 损失变体,并将其应用于长尾识别。他们对来自类别 j j j 的样本调制了 Focal 损失,平衡感知系数等于 ( 1 − β ) / ( 1 − β j n ) (1−\beta)/(1−\beta^n_j ) (1β)/(1βjn)

  • 非常最近,Cao et al. (2019) 提出了一种标签分布感知的边缘(LDAM)损失,鼓励少样本类别具有更大的边缘,他们的最终损失形式化为一个带有强制边缘的交叉熵损失:
    L L D A M : = − log ⁡ e y ^ − Δ j e y ^ − Δ j + ∑ c ≠ j e y ^ − Δ c ( 6 ) \mathcal{L}_{LDAM}:=−\log\frac{e^{\hat{y}-\Delta_j}}{e^{\hat{y}-\Delta_j}+\sum_c\ne je^{\hat{y}-\Delta_c}}\qquad\qquad(6) LLDAM:=logey^Δj+c=jey^Δcey^Δj(6)
    其中 y ^ \hat{y} y^ 是逻辑值, Δ j \Delta_j Δj 是一个类感知的边缘,与 n j 1 / 4 n^{1/4}_j nj1/4 成反比。

B FURTHER ANALYSIS AND RESULTS

进一步分析和结果

B.1 SAMPLING STRATEGIES

抽样策略

在图 3 中,我们可视化了我们探索的四种采样策略的采样权重。在表 5 中,我们展示了在联合训练分类器和表示/骨干架构时,在 ImageNet-LT 上的“所有”类别的准确率。很明显,更好的采样策略在联合训练分类器和表示/骨干架构时有所帮助。

在这里插入图片描述

  • 图片注解:

    ImageNet-LT 的采样权重 p j p_j pj。类别按 x 轴上递减的 n j n_j nj 顺序排列。

    • 左图:实例平衡、类别平衡和平方根采样。
    • 右图:渐进平衡采样;随着周期的进行,采样从实例平衡变为类别平衡采样。

在这里插入图片描述

  • 图片注解:

    使用不同采样策略联合学习表示和分类器时的 ImageNet-LT 准确率。本表中的结果是图 1 中呈现结果的一个子集。

B.2 CLASSIFIER DECISION BOUNDARIES FOR \tau$-NORMALIZED AND NCM

τ \tau τ-标准化和 NCM 的分类判定界限

在图 4 中,我们展示了使用公式 (3) 规范化前后以及使用余弦距离时的分类器决策边界。平衡范数也导致更平衡的决策边界,使得少样本类别的分类器能够占据更多的空间。

在这里插入图片描述

  • 图片注解:

    不同分类器及其相应决策边界的说明,其中 w i w_i wi w j w_j wj 分别表示类别 i i i j j j 的分类权重, C i C_i Ci 是属于类别 i i i 在特征空间中的分类锥, m i m_i mi 是类别 i i i 的特征均值。从左到右:

    • τ \tau τ-规范化分类器( τ → 0 \tau\to0 τ0):权重较大的分类器具有更宽的决策边界;
    • τ \tau τ-规范化分类器( τ → 1 \tau\to1 τ1):不同类别的决策边界更平衡;
    • NCM 使用余弦相似度,其决策边界与分类器权重无关;
    • NCM 使用欧氏相似度,其决策边界将特征空间划分为 Voronoi 单元。
B.3 CLASSIFIER LEARNING COMPARISON TABLE

表 6 对第 4 节中介绍的四种不同的分类器学习方法进行了比较分析。

在这里插入图片描述

B.4 VARYING THE BACKBONE ARCHITECTURE SIZE

改变骨干网结构的大小

  • ImageNet-LT

    在这里插入图片描述

    在图 5 中,我们比较了不同方法下不同骨干架构大小(模型容量)的性能,包括

    1. 使用作者代码库设置的 OLTR(Liu et al., 2019)(OLTR*);
    2. 使用第 5 节中详细描述的表示学习阶段的 OLTR(OLTR**);
    3. 在训练分类器时使用 Liu et al. (2019) 的记忆模块的 cRT;
    4. cRT;以及
    5. τ \tau τ-规范化。

    我们观察到:

    • 作者实现的 OLTR 在较大模型上过拟合,

    • 使用我们的训练设置(不同的训练和 LR 调度)可以减轻过拟合,

    • 在重新训练分类器时添加记忆单元不会增加性能。表 2 的额外结果在表 7 中给出。

      在这里插入图片描述

      • 图片注解:在 ImageNet-LT 上使用不同骨干网络 {ResNet, ResNeXt}-{50, 101,152} 的综合结果
  • iNaturalist 2018

    在这里插入图片描述

    • 图片注解:在 iNaturalist 2018 上使用不同骨干网络(ResNet-50、ResNet-101 和 ResNet-152)和不同训练周期(90 & 200)的综合结果

    • 在表 8 中,我们呈现了表 3 结果的扩展版本。我们展示了每个分割的结果以及使用 ResNet-101 骨干网络的结果。正如我们在第 5 节中提到的,仅训练 90 个周期会得到次优的表示,而大型模型和更长的训练则在这个具有挑战性的大规模任务上获得更高的准确率。

    • 更有趣的是,我们发现在重新平衡分类器后,多样本、中等样本和少样本分割的性能大致相等,只在多样本类别中略有优势。

B.5 ON THE EXPLORATION OF DETERMINING τ \tau τ

关于确定 τ \tau τ 的探索

当前的 τ \tau τ-规范化策略确实需要一个验证集来选择 τ \tau τ,这在实际场景中可能是一个劣势。我们能做得更好吗?

  • 在训练集上寻找 τ \tau τ 值。

    • 我们还尝试直接在训练数据集上选择 τ \tau τ。令人惊讶的是,仅使用训练集选择的 τ \tau τ 值在测试集上的最终性能非常相似。

    • 我们实现这一目标的方法是:从训练集中模拟一个平衡的测试分布。

      • 首先,我们将整个训练集通过网络,为每个类别得到 top-1 准确率。

      • 然后,我们计算每个类别的特定准确率并求平均值,将平均准确率作为确定 τ 值的指标。

        在这里插入图片描述

      • 如表 9 所示,我们比较了在所有三个数据集上使用训练集和验证集找到的 τ \tau τ 值。我们可以看到, τ \tau τ 的值和整体性能都非常接近,这证明了在训练集上寻找 τ \tau τ 的有效性。这种策略提供了一种在验证集不可用时找到 τ \tau τ 的实际方法。

  • 在训练集上学习 τ \tau τ

    我们进一步研究是否可以自动学习 τ \tau τ 值而不是网格搜索。为此,我们设置 τ \tau τ 作为一个可学习的参数,并在平衡采样的训练集上学习它,同时保持所有其他参数固定(包括骨干网络和分类器)。我们还比较了学习到的 τ \tau τ 值和表 9 中相应的结果(标记为“learn” = 3)。这进一步减少了搜索最佳 τ \tau τ 值的人工工作,并使策略更适用于实际使用。

B.6 COMPARING MLP CLASSFIIER WITH LINEAR CLASSIFIER

MLP 分类器与线性分类器的比较

我们在实验中使用了不同层数(2层或3层)和不同隐藏神经元数量(2048 个或 512 个)的多层感知机(MLPs)。我们使用 ReLU 作为激活函数,将批量大小设置为 512,并在固定表示上使用平衡采样训练 MLP,训练 10 个周期,使用余弦学习率调度,学习率逐渐减小到零。我们在两个数据集上进行了实验。

在 ImageNet-LT 上,我们使用 ResNeXt50 作为骨干网络。结果总结在表 10 中。我们可以看到,当 MLP 变得更深时,性能变差。这可能意味着骨干网络已经足够学习到具有区分性的表示。

在这里插入图片描述

对于 iNaturalist,我们使用训练了 200 个周期的 ResNet50 模型的表示。我们只考虑一个隐藏维度为 2048,因为该数据集包含更多的类别。结果展示在表 11 中,并且显示当使用更深层的分类器时,性能下降更为严重。

在这里插入图片描述

B.7 COSINE SIMILARITY FOR CLASSIFICATION

用于分类的余弦相似度

我们尝试用带有(标记为“cos”)和没有(标记为“cos(noRelu)”)最后一个 ReLU 激活函数的余弦相似度分类器替换线性分类器,遵循 Gidaris & Komodakis (2018)。我们在表 12 中总结了结果,它们彼此相当。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/266241.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多模态论文阅读-LLaVA

Visual Instruction Tuning Abstract1. Introduction2. Related Work3. GPT-assisted Visual Instruction Data Generation4. Visual Instruction Tuning4.1 Architecture4.2 Training 5 Experiments5.1 Multimodal Chatchot5.2 ScienceQA 6 Conclusion Abstract 使用机器生成…

一道题目总结出一个模版(简单记录一下,感觉挺有用的)

代码如下 using ll long long; int main() {ll n, m,ans0,i;std::cin >> n >> m;std::vector<ll>a(m1);for (int i 1; i < m; i) {std::cin >> a[i];a[i] a[i - 1];}//如果m<n,那么只够写第一篇文章ans a[1] * std::min(m,n);for (i n; i …

stm32 pluse输出一个固定频率占空比的波形---------------小demo

配置就是这 感觉sample timer 没有作用 效果如图&#xff1a;

相聚上海新国际博览中心:2024上海人工智能展会(世亚智博会)

2024上海国际人工智能展览会&#xff08;世亚智博会&#xff09; 2024 Shanghai International Ai Expo 时间&#xff1a;2024年6月13-15日 地点&#xff1a;上海新国际博览中心 前言 作为中国最发达的城市之一&#xff0c;上海在人工智能产业发展方面也取得了显著的成绩。近…

产品经理岗位的任职资格和职业规划

产品经理主要是商业银行以客户为导向的&#xff0c;具体负责组织银行某一金融产品线的创新设计、生产营销和管理服务的工作。这类人士主要负责应用实施工作&#xff0c;其中产品线由一系列的产品构成&#xff0c;公司的产品经理主要分为全过程产品创新设计专家、全过程产品生产…

华为OD技术面试案例3-2024年

技术一面&#xff1a; 1.手撕代码&#xff0c;算法题&#xff1a; 【最小路径和】 手撕代码通过&#xff0c;面试官拍了照片 2.深挖项目&#xff0c;做过的自认为最好的一个项目&#xff0c;描述做过的项目的工作过程&#xff0c;使用到哪些技术&#xff1f; 技术二面&…

JVM运行流程

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;JavaEE &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; JVM 1. 运行流程2. 运行时数据区2.1 堆&am…

【QT+QGIS跨平台编译】之五十二:【QGIS_CORE跨平台编译】—【qgsexpressionlexer.cpp生成】

文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…

C语言数据结构基础-单链表

1.链表概念 在前面的学习中&#xff0c;我们知道了线性表&#xff0c;其中逻辑结构与物理结构都连续的叫顺序表&#xff0c;那么&#xff1a; 链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 2.链表组…

计算星期几

今天是2012年4月12日星期四&#xff0c;编写程序&#xff0c;输入今天开始到12月31日之间的任意日期&#xff0c;输出那一天是星期几。如: 输入“5 20”即5月20日&#xff0c;输出应该为sunday. 代码&#xff1a; #include <cstdio> #include <string> using nam…

挑战杯 基于YOLO实现的口罩佩戴检测 - python opemcv 深度学习

文章目录 0 前言1 课题介绍2 算法原理2.1 算法简介2.2 网络架构 3 关键代码4 数据集4.1 安装4.2 打开4.3 选择yolo标注格式4.4 打标签4.5 保存 5 训练6 实现效果6.1 pyqt实现简单GUI6.3 视频识别效果6.4 摄像头实时识别 7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xf…

综合练习(一)

目录 列出薪金高于部门 30 的所有员工薪金的员工姓名和薪金、部门名称、部门人数 列出与 ALLEN从事相同工作的所有员工及他们的部门名称、部门人数、领导姓名 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 列出薪金高于部门 30 的所…

搭建LNMP环境并配置个人博客系统

LNMP是Linux&#xff08;操作系统&#xff09;、Nginx&#xff08;Web服务器&#xff09;、MySQL&#xff08;数据库&#xff09;和PHP&#xff08;脚本解释器&#xff09;的组合&#xff0c;常用于部署高性能的动态网站&#xff0c;如WordPress等博客平台 一、安装Linux操作系…

【论文精读】DINOv2

摘要 学习与特定任务无关的预训练表示已经成为自然语言处理的标准&#xff0c;这些表示不进行微调&#xff0c;即可在下游任务上明显优于特定任务模型的性能。其主要得益于使用无监督语言建模目标对大量原始文本进行预训练。 遵循NLP中的这种范式转变&#xff0c;以探索计算机视…

【文生视频】Diffusion Transformer:OpenAI Sora 原理、Stable Diffusion 3 同源技术

文生视频 Diffusion Transformer&#xff1a;Sora 核心架构、Stable Diffusion 3 同源技术 Sora 网络结构提出背景输入输出生成流程变换器的引入Diffusion Transformer (DiT)架构Diffusion Transformer (DiT)总结 OpenAI Sora 设计思路阶段1: 数据准备和预处理阶段2: 架构设计阶…

单片机精进之路-9ds18b20温度传感器

ds18b20复位时序图&#xff0c;先将b20的数据引脚拉低至少480us&#xff0c;然后再将数据引脚拉高15-60us&#xff0c;再去将测传感器的数据引脚是不是变低电平并保持60-240us&#xff0c;如果是&#xff0c;则说明检测到温度传感器&#xff0c;并正常工作。需要在240us后才能检…

K8S存储卷与PV,PVC

一、前言 Kubernetes&#xff08;K8s&#xff09;中的存储卷是用于在容器之间共享数据的一种机制。存储卷可以在多个Pod之间共享数据&#xff0c;并且可以保持数据的持久性&#xff0c;即使Pod被重新调度或者删除&#xff0c;数据也不会丢失。 Kubernetes支持多种类型的存储卷…

宝塔FTP服务设置并结合cpolar内网穿透实现远程传输文件

文章目录 1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 宝塔FTP是宝塔面板中的一项功能&#xff0c;用于设置和管理FTP服务。通过宝塔FTP&#xff0c;用户可以创建FTP账号&#xff0c;配置FTP用户权限…

免费的Git图形界面工具sourceTree介绍

阅读本文同时请参阅-----代码库管理工具Git介绍 sourceTree是一款免费的Git图形界面工具&#xff0c;它简化了Git的使用过程&#xff0c;使得开发者可以更加方便地下载代码、更新代码、提交代码和处理冲突。下面我将详细介绍如何使用sourceTree进行这些操作。 1.下载和…

【Vue3】学习computed计算属性

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…