深入BBN,如何解决长尾数据分布的同时兼顾表示学习

1. 问题引入

  • 本次要记录的论文是,CVPR2020 的 " BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition "。该文旨在解决长尾数据分布的同时兼顾表示学习。
  • 长尾数据是视觉认知任务如:图像分类、目标检测中影响实验结果的主要问题之一。长尾数据分布的意思是:数据集中某几个类别占据了大部分的数据,而剩余的类别各自的数据很少。
  • 举个例子,想用一个1000张图像的数据集训练一个分类模型,数据集包含三个类别:人、狗、猫。其中,人900张,狗80张,猫20张。那么狗、猫就属于长尾数据了。对于深度学习这种见多识广的技术来说,见得少了的东西识别起来当然困难,最后训练出来的分类模型几乎看到什么都判别为人,错误率特别高。

2. 相关工作

当然,长尾数据分布的问题并不是第一次提出来,也有很多方法对其进行了缓解,这些方法统称为Re-balancing Strategies,具体如下:

  • Class Re-balancing Strategies。这里面又分为两种方法,Over-Sampling和Under-sampling。
    • Over-Sampling,在训练的过程中多次采样数据集中数据量占比量较小的数据,使得这些数据在训练时被多次用到,从而缓解长尾数据分布的问题。
    • Under-Sampling,在训练中抛弃数据量占比较高的数据,从而达到各个类别数据量的平衡,以缓解长尾数据分布的问题。
  • Re-weighting Strategies。在训练模型的过程中,增加损失中长尾数据的权重,有点类似于Boost的方法。但该方法无法处理实际生活中的数据,一旦长尾数据分布很严重,该方法还容易引起优化的问题。
  • Two-stage Fine-tuning Strategies。这个方法将训练分为两个阶段。第一阶段像往常一样正常训练,第二个阶段使用较小的学习率以Re-balancing的方式微调网络。
  • Mix-up。这是数据增强领域的一种方法,通过在融合多张图像到同一个图像中增广数据集用于训练;还有的方法在图像的流形特征上进行增广。

3. 进一步探索

那么,为什么Re-balancing Strategies的方法能够处理长尾数据分布的问题呢?作者做了实验,作者假设:

  • 基于深度学习的分类模型分为2部分,特征抽取器(feature extractor) 和 分类层(the classifier)。
  • 那么,分类模型学的过程也可以分为2部分,表示学习(Representation Learning) 和 分类学习(Classifier Learning)。

作者认为:Class re-balancing通过改变原始训练集的分布,使之接近测试集的分布,从而使得分类模型将更多的关注放在长尾数据身上,提升了分类的准确性。但作者又认为由于Class re-balancing改变了原始训练集的分布,导致Representation Learning的过程受到破坏,故对图像中原始特征的提取也会收到破坏。为此,作者做了如下实验,如下图所示:
深入BBN,如何解决长尾数据分布的同时兼顾表示学习_第1张图片

  • 作者将训练分为2个阶段,former stage和latter stage,两个阶段分别采取3种训练方式,一共训练出9个模型。上图中左右两个矩阵是在两个数据集上训练出来模型的精度,我们以左边的矩阵为例解释。
  • 横坐标代表Representation Learning采用的学习策略,纵坐标代表Classifier Learning采用的学习策略。CE代表传统的交叉熵方法训练,RW即上述的Re-weighting Strategies,而RS代表上述的Re-sampling方法。
  • 当垂直的看矩阵的每一列时,表明该列所有分类模型先用(CE, RW, RS)三个方法之一正常训练出一个模型,模型训练完毕之后,固定feature extractor参数不变,重头开始训练the Classifier。通过这个方法固定Representation Learning,可以判别出哪种方法训练出来的分类器具有较好的效果。根据结果,可以看出RS,RW的方法明显好于CE。
  • 当水平看矩阵的每一行时,表明该行所有分类模型先用(CE, RW, RS)三个方法之一正常训练出一个模型,模型训练完毕之后,固定the Classifier参数不变,重头开始训练feature extractor。通过这个方法固定the Classifier,可以判别出哪种方法训练出来的特征抽取器具有较好的效果。根据结果,可以看出CE的方法具有最低的错误率。

最后,作者就可以得到结论:传统的训练方式有助于Feature Extractor的学习,而RW、RS有助于分类器的学习。很自然,是否可以结合两者的优点呢?上述的Two-stage方法就是干这个事儿的,但是需要2个阶段,是否可以设计一个One-stage的端到端网络实现这一点呢?

4. BBN

作者提出的模型称之为BBN,模型由三个部分组成:Conventional Learning Branch,Re-Balancing Branch和Cumulative Learning,具体结构如下图:
深入BBN,如何解决长尾数据分布的同时兼顾表示学习_第2张图片

  • Conventional Learning Branch,在这个分支中,每个训练epoch的数据都是等比例的从原始训练集中采样,从而保持原始数据的分布,有利于模型的Representation Learning。

  • Re-balancing Branch,这个分支旨在缓解长尾数据分布并提升分类的准确性,这个分支的数据通过Reversed Sampler获取,后面会详细解释。通过这个Reversed Sampler,数据集中类别样本数量越多的,被采样的几率越小。

  • 上述两个分支的模型结构一摸一样,且共享了除最后一个残差块的所有参数。为什么要共享参数了?作者给出了两个原因:

    • 有利于Representation Learning的学习,但并没有相关的消融实验。而且一旦这个模型没有参数共享,那么它其实就是散装了两个网络而已,不知道这里的共享是为了有效而共享,还是为了共享而共享。当然这并不能说明该模型就不好了,因为模型的两点应该在于Cumulative Learning模块。
    • 降低运算资源,这个很直接,作者在文中表示所有的模型都在一块1080-ti上完成,我表示很理解。毕竟,作为同行,我也缺运算资源。
  • 在讲Cumulative Learning模块之前,我们先具体解释一下Reversed Sampler的构建。

    • 定义 N i N_i Ni为类别 i i i所包含的样本个数, N m a x N_{max} Nmax为所有类别中包含最多样本类别的样本个数

    • 构建Reversed Sampler有3个子过程

      • 首先,根据样本个数计算类别 i i i的采样概率 P i P_i Pi

        P i = w i ∑ j = 1 c w j P_i = \frac{w_i}{\sum_{j=1}^cw_j} Pi=j=1cwjwi,其中 w i = N m a x N i w_i = \frac{N_{max}}{N_i} wi=NiNmax

        通过计算 w i w_i wi可以发现,类别包含样本个数越小, w i w_i wi值越大。为什么要计算 P i P_i Pi呢?那肯定是为了归一化啦,这样所有样本采样的概率和为1。

      • 其次,根据 P i P_i Pi随机选择一个类别

      • 最后,均匀的从被选择到的类别采集图像数据获得mini-batch

  • 最后,我们来深入理解一下Cumulative Learning模块。其主要目的是为了:通过权衡两个分支提取到的特征的权重来控制分类损失,从而控制模型在学习中的关注点从Representation Learning逐渐转移到长尾数据分布问题上。

    • 在模型的前面两个分支中,分别可得到Conventional Learning Branch的特征向量 f c f_c fc,以及Re-balancing Branch的特征向量 f r f_r fr。那么如何去合理的融合这两个特征呢?

    • 定义 α \alpha α为平衡因子, W c W_c Wc为Conventional Learning Branch的分类器, W r W_r Wr为Re-balancing Branch的分类器,那么两个分支的特征可融合为:

      z = α W c T f c + ( 1 − α ) W r T f r z = \alpha W_c^Tf_c + (1 - \alpha)W_r^Tf_r z=αWcTfc+(1α)WrTfr

    • 那么,这个 α \alpha α如何计算呢?定义整个总训练epoch个数为 T m a x T_{max} Tmax,当前训练的epoch为 T T T

      α = 1 − ( T T m a x ) 2 \alpha = 1 - (\frac{T}{T_{max}})^2 α=1(TmaxT)2

      通过式子可以看出,随着 T T T逐渐增大, α \alpha α逐渐减少。再结合上面 z z z的计算,可以发现总的融合特征 z z z首先将注意力放在 f c f_c fc特征,强调了Representation Learning的重要性;随着epoch的提升,注意力逐渐转移到 f r f_r fr上,模型开始处理长尾数据分布的问题,从而做到Representation和长尾数据分布两者兼顾。

    • 在得到了 z z z之后,和平常的方法类似,需要先做一个 s o f t m a x softmax softmax多分类的平滑:

      p i ^ = e z i ∑ j = 1 C e z j \hat{p_i} = \frac{e^{z_i}}{\sum_{j=1}^Ce^{z_j}} pi^=j=1Cezjezi

      再通过交叉熵结合两个特征向量各自的损失,即两个特征向量有各自的Ground Truth标签,所以损失也分别做并相加

      L = α E ( p ^ , y c ) + ( 1 − α ) E ( p ^ , y r ) L = \alpha E(\hat{p}, y_c) + (1 - \alpha) E(\hat{p}, y_r) L=αE(p^,yc)+(1α)E(p^,yr)

至此,本文所提出的模型讲解结束,总结一下模型的用意:

  • Conventional Learning Branch正常采样,保证Representation Learning
  • Re-balancing Branch配备创新点Reverse Sampler,针对长尾数据分布问题
  • 此外,还设计了 α \alpha α参数,来自动平衡两个分支的输出特征,旨在先保证Representation Learning,再逐渐将注意力放到长尾数据分布的身上

5. 相关实验

实验配置

  • 作者上来先定义了长尾数据分布的严重程度指标 β = N m a x N m i n \beta = \frac{N_{max}}{N_{min}} β=NminNmax,其中 N m a x N_{max} Nmax指的是所有类别中最大的数据量,而 N m i n N_{min} Nmin指的是所有类别中最小的数据量,可想而知 β > = 1 \beta >= 1 β>=1。文中采用 β = 10 , 50 , 100 \beta = 10, 50, 100 β=10,50,100,增广CIFAR数据集为长尾数据分布的数据集。
  • 本文主要对比了以下几类方法
    • Baseline,focal loss
    • Two-stage的方法,CE-DRW, CE-DRS
    • state-of-art的在不平衡数据集上取得高分的方法,如LDAM, CB-Focal
  • 在测试的时候, α = 0.5 \alpha = 0.5 α=0.5,因为2种特征都很重要。

实验一
深入BBN,如何解决长尾数据分布的同时兼顾表示学习_第3张图片

  • 上述主要三行方法分别为:MixUp、Two-Stage、State-of-art
  • 可以看出,本文提出的方法均取得了最佳;但还有一个现象,Two-stage也去了较好的方法。这也很容易理解,因为本文的方法是Two-stage的进一步提升。

实验二

深入BBN,如何解决长尾数据分布的同时兼顾表示学习_第4张图片

  • 该实验为了证明Reversed Sample的有效性。其中Uniform sample就是传统的采样方式,根据原始数据分布的比例采样;Balanced Sampler是等概率采样,类似于Re-balanced方法。
  • 可以看出,本文提出的方法最好,Balanced Sampler的方法比Uniform sampler好也能体现一个隐藏信息:深度学习网络在大量的数据下,对于频率出现较高的图像识别能力早已饱和。所以即使是等概率采样,减少了高频图像出现的概率,又一定程度破坏了Representing Learning,效果都比传统训练方法的好。

实验三
深入BBN,如何解决长尾数据分布的同时兼顾表示学习_第5张图片

  • 该实验为了证明当前 α \alpha α策略的有效性。为此,采用了其他两类 α \alpha α选择策略
    • Progress-relevant strategies,即和在训练过程中修改 α \alpha α的方法,如:Linear Decay, Cosine Decay
    • Progress-irrelevant strategies,即和训练过程无关的方法,如:Equal weight, β \beta β-distribution中采样
  • 首先,可以发现在训练过程相关的动态修改方法明显优于不相关的。
  • 其次,Parabolic increment方法是效果最差的,这也证明了作者的观点:应该先将关注点放在Representation Learning,再逐渐迁移到原始数据的分布。而Parabolic increment是反着来,所以效果是最差的。

实验四
深入BBN,如何解决长尾数据分布的同时兼顾表示学习_第6张图片

  • 该实验主要为了证明BBN有着接近原始方法训练的模型的Representation Learning的能力。实验方法和之前9宫格矩阵的方法类似,首先正常训练网络,再固定backbone不变,重头训练分类器。可以看见BBN的两个分支都有着中肯的错误率,至少比RW、RS要好。
  • 此外,这也说明了共享策略的有效性。

实验五
深入BBN,如何解决长尾数据分布的同时兼顾表示学习_第7张图片

  • 该实验是为了证明BBN训练出来的分类器不存在偏爱性,对所有的类别一视同仁从而解决了长尾数据分布的问题。横坐标是不同的类别,纵坐标是 l 2 − n o r m l2-norm l2norm可以反映分类器对某个类别的偏爱程度。
  • 可以看到,在所有的折线中,BBN是最为平坦的。虽然RW、RS也都较为平坦,但是作者还计算了不同方法不同类别 l 2 − n o r m l2-norm l2norm的标准差,标准差越小的差别越小,而BBN是最小的。

至此,本文的论文理解分享结束,感谢业界前辈的贡献,Respect!

写在后面:一直以来都认为自己读论文的姿势不对,故我开始在博客中记录中我对论文的理解。但又一直感觉记录论文博客的写法也不对,思考良久,我觉得如何去理解论文、如何去记录对论文的理解,也应该符合一篇论文创作的顺序,故我一直在调整撰写的方式。祝愿有一天,我能做到更加轻松的阅读论文,并把自己对论文的理解做到如数家珍的侃侃而谈。如果大家有很好的论文阅读姿势,欢迎在评论区留言分享~~~

本文为作者原创,转载需注明出处!

你可能感兴趣的:(深度学习,数据处理)