长尾优化汇总

295 阅读5分钟

背景

经典的深度学习数据集

Mnist: 数据规模较小,10个类别 ImageNet: 百万数据量,1000个类别 两者的共同点:类别是均匀分布的

真实场景中的深度学习任务

  • 类别不平衡是常态

长尾问题

长尾问题常见的表现及原因 :

  • 头部类的效果好,尾部类的效果差
  • 模型是数据驱动的,头部类的数据多,尾部类的数据少
  • 尾部类数量少的同时可能造成类别中样本差异较大,网络学习不充分

Resampling

BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition

论文链接:arxiv.org/pdf/1912.02…

two stage finetuning:

  • 第一阶段在原始不平衡的数据集上训练
  • 第二阶段以一个很小的学习率使用resampling/reweighting的方法fintune

根据two stage fintuning方法比只使用resampling/reweighting好的原因做了假设

  • reblance的方法有效的原因在于提升了分类器的性能
  • 会损害网络学习到的特征 为了验证上述假设,将网络拆解成了分类器和特征提取器两部分,分别实验:
  • 在第一阶段使用交叉熵和resampling/reweighting训练整个网络
  • 将第一阶段特征提取器的参数固定,使用交叉熵和resampling/reweighting训练分类器

为了验证上述假设,将网络拆解成了分类器和特征提取器两部分,分别实验:

  • 在第一阶段使用交叉熵和resampling/reweighting训练整个网络
  • 将第一阶段特征提取器的参数固定,使用交叉熵和resampling/reweighting训练分类器

设计了一个双分支的网络

主要思想是设计了一个two stage finetuning的训练方式

  • 第一阶段在原始不平衡的数据集上训练
  • 第二阶段以一个很小的学习率使用resampling/reweighting的方法fintune

根据two stage fintuning方法比只使用resampling/reweighting好的原因做了假设

  • reblance的方法有效的原因在于提升了分类器的性能
  • 会损害网络学习到的特征

为了验证上述假设,将网络拆解成了分类器和特征提取器两部分,分别实验:

  • 在第一阶段使用交叉熵和resampling/reweighting训练整个网络
  • 将第一阶段特征提取器的参数固定,使用交叉熵和resampling/reweighting训练分类器

总结下BBN思想中的关键点:

  • 第一个采样器是一个公平的采样器
  • 第二个采样器是一个resample的采样器
  • 两个分支共享权重,减少参数量的同时,让第二个分支受益于第一个分支中更好的特征
  • 使用一个adaptor的策略,调节两个分支在网络训练中的权重

下面是添加BBN的结果和其他方法的对比:

Cost-sensitive learning

Class-Balanced Loss Based on Effective Number of Samples

论文链接: arxiv.org/pdf/1901.05…

之前方法存在的问题:在reweighting等方法中,一般将样本数量的倒数作为该类别的权重,但是样本之间能提供的信息可能存在重合,简单通过样本数量判断权重会存在问题

  • 提出了一种计算有效样本的方法
  • 用有效样本数代替原始的样本频率,再用其倒数对损失进行加权

有效样本的定义:

  • 样本的有效数据量是样本的期望体积,一个新的采样数据只能存在两种情况
  • 新样本存在于之前样本中的概率为p
  • 新样本不存在于之前样本中的概率为1-p

提出有效样本的计算公式: En=1βn1βE_{n}=\frac{1-\beta^{n}}{1-\beta} 当n=1时,E1=1β11β=1E_1=\frac{1-\beta^1}{1-\beta}=1 假设当n=k-1时成立,即Ek1=1βk11βE_{k-1}=\frac{1-\beta^{k-1}}{1-\beta}, 设样本的体积为K,已经采样的样本体积为Ek1E_{k-1}。则p=Ek1Kp=\frac{E_{k-1}}{K},经过k次采样后,第k次采样时有以下情况:

  • 第k次采样和之前样本存在重叠的情况,则样本体积为Ek1E_{k-1}
  • 第k次采样是新的有效样本,与之前不存在重叠的情况,则样本体积为Ek1+1E_{k-1}+1

期望体积为: Ek=pEk1+(1p)(Ek1+1)=1+K1KEk1E_k=pE_{k-1}+(1-p)(E_{k-1}+1)=1+\frac{K-1}{K}E_{k-1} 其中 β=K1K\beta=\frac{K-1}{K}, 则Ek=1+βEk1=1+β1βk11β=1βk1βE_k=1+\beta E_{k-1}=1+\beta \frac{1-\beta^{k-1}}{1-\beta}=\frac{1-\beta^{k}}{1-\beta} 则有效数据量是数据总量n的指数函数,超参数β[0,1)\beta\in[0,1) 有效数据量EnE_n具有如下性质:

  • 当n很大时,有效数据量等于n
  • 当n为1时,有效数据量为1

CB-Loss: CB(p,y)=1EnyL(p,y)=1β1βnyL(p,y)CB(p,y)=\frac{1}{E_{n_y}}L(p,y)=\frac{1-\beta}{1-\beta_{n_y}}L(p,y)

贴一下实验结果:

Transfer Learning

Feature Space Augmentation for Long-Tailed Data

论文链接:arxiv.org/abs/2008.03…

常见的解决方法,如data manipulation和Balanced loss function design在提升长尾数据集模型性能的同时会损害特征表示能力

两个假设:

  • 头部类中类别无关的特征可以让尾部类特征更加丰富
  • 高级特征空间具有更“线性”的表示,可以提取类通用和类特定的特征,并重新混合生成新的样本

方法: CAM(Class Activation Map) Mc(x,y)=kwkcfk(x,y)M_c(x,y)=\sum_{k}w_k^cf_k(x,y) c: class; x,y: pixel position; k: channel; w: weight; f: feature,将M归一化到[0,1],设定两个阈值。0<τs,τt<10<\tau_s,\tau_t<1。则类特定特征和类通用特征分别为:

  • Mcs=sgn(Mcτs)McM_c^s=sgn(M_c-\tau_s) \bigodot M_c
  • Mcg=sgn(τgMc)McM_c^g=sgn(\tau_g-M_c) \bigodot M_c

  • 正常训练得到特征提取网络和分类器,使用注意力机制CAM图做特征分解,将特征分为类别无关的特征和类别特定的特征。
  • 两阶段训练,第一阶段正常训练,负责提取特征和cam,第二阶段是做尾部类的增广训练,分为两步
    • 网络输入一张头部类图片和一张尾部类图片,通过分类置信度排序,选择和当前尾部类距离最近的头部类特征,融合头部类中类通用特征和尾部类中类特征特征

  • 使用增强的特征图微调FC分类器层

欢迎关注我的公众号!

enter description here