LongTailedClassification甫生

举个简单的例子,如果要做一个动物分类数据集,猫狗等常见数据可以轻轻松松的采集数以百万张的图片,但是考虑到数据集的均衡,我们必须也给雪豹等罕见动物采集等量的样本,而随着类别稀有度的增加,其采集成本往往成指数增长。

在自然情况下,数据往往都会呈现如下相同的长尾分布。这种趋势同样出现在从自然科学到社会科学的各个领域各个问题中,参考Zipf'sLaw或者我们常说的28定律。

直接利用长尾数据来训练的分类和识别系统,往往会对头部数据过拟合,从而在预测时忽略尾部的类别。

用于长尾问题的数据集是训练集imbalance但测试集是balance

如何有效的利用不均衡的长尾数据,来训练出均衡的分类器就是我们所关心的问题,从工业需求上来说,该研究也将大大地提升数据采集的速度并显著降低采集成本

长尾效应主要体现在有监督学习里,无监督/自监督学习等因为不依赖标注,所以长尾效应体现的不明显,目前也缺少这方面的研究(但并不代表无监督/自监督学习不受长尾效应的影响,因为图片本身也有分布,常见的图案和罕见的图案也会形成这样的长尾效应,从而使模型对常见的图案更敏感)。

长尾分布的最简单的两类基本方法是重采样(re-sampling)和重加权(re-weighting)。这类方法本质都是利用已知的数据集分布,在学习过程中对数据分布进行暴力的hacking,即反向加权,强化尾部类别的学习,抵消长尾效应。

(1)重采样(re-sampling)

(2)重加权(re-weighting)

总的来说,在长尾分类问题中,上述两种方法简单有效,以至于大多数最新的研究其实本质都是对他们的拓展和细化。

主要分为三类:

规律1:对任何不均衡分类数据集地再平衡本质都应该只是对分类器地再均衡,而不应该用类别的分布改变特征学习时图片特征的分布,或者说图片特征的分布和类别标注的分布,本质上是不耦合的。(当然,这是我自己的总结,原文没这段,也没任何证明)

基于这个规律,Decoupling和BBN提出了两种不同的解决方案,又因为Decoupling的方案更简单,实验更丰富,所以我这里优先介绍Decoupling方法。

Decoupling将长尾分类模型的学习分为了两步

第一步,先不作任何再均衡,而是直接像传统的分类一样,利用原始数据学习一个分类模型(包含特征提取的backbone+一个全连接分类器)

第二步,将第一步学习的模型中的特征提取backbone的参数固定(不再学习),然后单独接上一个分类器(可以是不同于第一步的分类器),对分类器进行class-balancedsampling学习。

其中2利用了fixed第一步分类权重\(w_i\),对每个类学习了一个加权参数\(f_i\)。

Decoupling的核心在于图片特征的分布和类别分布其实不耦合,所以学习backbone的特征提取时不应该用类别的分布去重采样(re-sampling),而应该直接利用原始的数据分布。

BBN的核心idea和Decoupling其实是一样的。正因为两个人同时发现了同样的规律,更证明了这个规律的通用性和可靠性。关于上文的规律,BBN做了更详细的分析:

这个图说明,长尾分类的最佳组合来自于:利用Cross-EntropyLoss和原始数据学出来的backbone+利用Re-sampling学出来的分类器。

和Decoupling的区别在于,BBN将模型两步的学习步骤合并至一个双分支模型。该模型的双分支共享参数,一个分支利用原始数据学习,另一个分支利用重采样学习,然后对这两个分支进行动态加权\((\alphavs.(1-\alpha))\)。这样随着权重\(\alpha\)的改变,就实现了自然而然地从stage-one到state-two的过度。

根据原文的总结,该框架包括两个level的课程学习方案:

1)SamplingScheduler:调整训练集的数据分布,将采样数据集的样本分布从原先的不平衡调整到后期的平衡状态;

2)LossScheduler:调整两个Loss(分类Loss和度量学习Loss)的权重,从一开始倾向于拉大不同类目之间特征的距离(度量学习Loss),到后期倾向于对特征做分类(分类Loss)。

Mixup是一个这两年常用的数据增强方法,简单来说就是对两个sample的inputimage和one-hotlabel做线性插值,得到一个新数据。实现起来看似简单,但是却非常有效,因为他自带一个很强的约束,就是样本之间的差异变化是线性的,从而优化了特征学习和分类边界。

而Remix其实就是将类别插值的时候,往少样本类的方向偏移了一点,给小样本更大的\(\lambda_y\)。

暂且归为迁移学习类。作者发现在一个长尾分布的数据集中,如果我们取一个更均衡的子集来训练,其结果反而比利用完整的数据集效果更好。所以原文利用多个子集来训练更均衡的专家模型来指导一个unified学生模型。

训练多个classifierexperts,然后通过diverseloss让每个classifier有不同的分布(也就是专注于不同的categories)。然后通过一个路由模块,去动态的决定那些classifierexpert应该参与分类。虽然看起来是ensemble,但是模型channel缩小了1/4,所以本质上并没有提升计算量。这篇paper证明了基于这种类ensemble的分支结构可以同时提升head和tail的performance。

关于如何利用半监督和自监督来解决类别不均衡的问题,因为既然数据的标注难免会遇到类别不均衡的问题,那么如果不利用或少利用类别信息,是否可以解决长尾/不均衡分布问题呢?

这篇工作的核心亮点有两处:

第一是把学习长尾分布的数据看成是一种增量学习(incrementallearning),即我们是优先学会常见物体(头部数据),然后再基于对常见类别的知识,去认知少见的尾部类别。这其实是一种非常接近人类思维的学习方法。这个工作的学习流程如下图,将类别根据出现频率依次排列,并划分为不同的学习阶段,依次从易到难的学习所有类别。

第二个亮点是高效的实例级别重采样(EfficientInstance-levelre-sampling)。作为长尾分类的常用方法,重采样在instance-level的数据上却没有重加权来的易于实现。如果一个图片只采样一个实例的话,虽然可以直接将instance-level重采样退化为image-level重采样,但却不够高效。因此基于对数据的观察,我们发现一个物体出现时,往往图片中会同样出现同一类别的其他实例,所以提出了如下高效的实例重采样:

FocalLoss虽然不是专门用来解决长尾分类的,但是因为其Hard-ExampleMining的特性刚好和长尾分类对尾部数据的欠拟合所契合,因此也可以作为长尾物体检测和实例分割的baseline。其实现为如下的FL公式:

但不同于Decoupling作者直接对模长归一化,本文的作者采用了按模长量级分类,仅对同一量级的类别logits计算softmax,而不是所有类别一起计算softmax。同时不忘对background类做个特殊处理,单独算为一类。

这篇工作也是对softmax做了改进,提出了concurrentsoftmax,但不同于上文,该工作主要是基于类别间的并发率对loss做了调整。因为传统softmax会在训练时抑制所有非ground-truth类,而当数据不均衡时,很多时候尾部类别很可能是某个头部类别的子类,或者是非常相近的类别,这时候就不该过多的抑制这些类,即便他们不是ground-truth。为了解决这个问题,作者提出了concurrentsoftmax,对和ground-truth类别有很高并发率(concurrentrate)的类别,给予更少的抑制。concurrentsoftmax的定义如下:

其中\(r_{ij}\)是从数据中统计出来的类别\(i\)和类别\(j\)的并发率(concurrentrate):类别\(i\)的物体被标记为\(j\)的概率。

注:本文中作者只是说传统的softmaxloss容易使梯度更新时倾向于获得更小的值,没有说明这个与长尾分布有关。相反是后面的soft-balancesamplingwithhybirdtraining是re-sample的方法

这个工作从因果分析的角度,利用一种非常优雅的实现,提出了一种崭新的长尾问题的通用解决思路。而且实现非常简单,能够广泛适用于各种不同类型的任务。之前几期介绍了很多过往的工作,然而有几个问题(缺陷)却一直萦绕在我的脑中没有被解决:

我认为,需要利用原始的长尾分布来学习特征提取的原因在于,大量的尾部类别其实不足以提供足够的样本来学习鲁棒的特征表达,如果强行利用re-balancingtrick只会让模型对尾部类别特征过拟合,而对样本充足的头部类别欠拟合。这也不符合人类的认知习惯,人类描述罕见的物体时,往往是通过和已知常见类的比较,比如我会说狮鹫是有着狮子的身体,鹰的翅膀和头的生物,而不必要单独拿一堆狮鹫的图片出来,让你死记硬背住狮鹫的长相。这就解释了为什么直接利用长尾分布的原始数据学习的特征表达器更好,因为他可以充分的利用优质的头部类指导特征学习,可问题在于我们分类时也是直接记住(狮鹫=狮子+鹰),而不需要额外的再去看很多狮鹫样本来和头部的类做“均衡”啊。

在介绍本文复杂的因果图构建和后续推导实现,让同学们失去耐心之前,对于想赶紧快速食用我们方法的同学,我给个4步速成指南吧:

下面就是具体我怎么得出上述的算法。首先,基于我的分析,我们构建了如下的因果图。其中M就是优化器的动量,X是backbone提取的特征,Y是预测。D是特征对头部大类的偏移量。至于为什么会有这个偏移量呢?因为优化器的动量包含了数据集的分布信息,他的动态平均会显著地将优化方向倾向于多数类,这也就造成了模型中的参数会有生成头部类特征的倾向。

因为混淆因子和中介的存在,我们最终期望得到的X对Y的effect其实并不是原始效应(原始logits),而是下图这样的去混杂后的直接效应。其中De-confoundtraining可以在训练中控制M对X的影响,而counterfactualinference的减法,通过类似设置安慰剂对照组的思想,去除了间接效应。

至于4.2的inference时TDE的减法其实还是比较直接的,我这就不细说了。同时考虑到在一些特殊任务中,有些大类是需要保持合理的倾向性的,比如物体检测和实例分割时,就需要合理地倾向于background类这个大类,否则就会检测到过多无意义地细节。因此我们在4.3中介绍了Background-ExemptedInference这种特殊处理。

我们提出的这个因果框架,其实也同时解释了2-stage的方法,并可以将其近似为NDE,关于怎么理解TDE和NDE的区别,可以参考我在补充材料里写的下面这个简单的一维数据二分类例子。

其中高斯曲线代表预测的分布,可以看到传统的直接训练和单步的re-balancing都有严重的问题,而2-stage的方法通过第二步再训练去矫正分类器的分类边界。我们提出的TDE方法则直接通过矫正特征本身的分布来更简单优雅的解决了分布不均衡的问题。

Experiments(实验结果)

我们在ImageNet-LT和Long-tailedCIFAR-10/-100上都超过了之前最优的长尾分布分类算法。

THE END
1.快速记忆英语单词的方法和技巧英语单词记忆方法记忆法3遗忘速度快:即使暂时记住了单词,但由于缺乏有效的复习和应用,单词很快被遗忘。为了解决这些难题,我们推荐使用“英乐通”小程序,这是一个专为英语单词记忆设计的智能学习工具。它通过科学的记忆方法和趣味的学习方式,帮助孩子在短时间内快速提升单词记忆能力。1科学记忆法:采用艾宾浩斯遗忘曲线原理,通过智能算法安排复习https://m.163.com/dy/article/JIG5C9UB0556AN3J.html
2.一种崭新的长尾分布下分类问题的通用算法NeurIPS2020三.Recipe (快速食用指南) 在介绍本文复杂的因果图构建和后续推导实现,让同学们失去耐心之前,对于想赶紧快速食用我们方法的同学,我给个4步速成指南吧: 1)训练时需要De-confound Training,说人话就是classifier需要使用multi-head normalized classifier,即每个类的logits计算如下:,其中是超参,K是multi-head的数量。分https://blog.csdn.net/zandaoguang/article/details/108878239
3.自制小蛋糕的做法自制简单快速的小蛋糕自制小蛋糕怎么做拿出来时,要小心哦,很烫的 小窍门 1、我这里用的蛋糕粉,超市都有的卖,我只用了一小包,又和面粉加在一起的,本来是一包蛋糕粉加一个蛋,我加了两个蛋,又加了普通的面粉,这样做出来量会多出一半。 2、加了面粉后记住白糖要加一点,否则不够甜的 来自 美食天下槡树https://home.meishichina.com/recipe-129149.html
4.智慧让你的家常菜肴更加迷人SugarVinegarPorkRibsRecipe如果条件允许的话,那么直接放置24小时甚至更长时间都会是不错选择,但请记住,如果超过48小时,那么可能会导致肌肉变硬因此需要适当调整腌制时间以避免发生这样的问题哦! 烧开水: 在进行焯水之前,你应该把所有腌制好的五花肉全部放在大锅里,用冷水淫没,然后用火点燃木炭等燃料加热直到水开锅翻腾时倒入其中再快速煮沸5https://www.hgddesks.cn/zi-xun/562661.html
5.第四章:自己动手指南(学习的革命)书评(The1000RecipeChineseCookbook)的每一页,你只读你需要了解的内容。单单这一提示就会帮助你在浏览一份报纸所需的等量时间里读4本书。 另一提示:不要“慢条斯理、不慌不忙”地读。马上往窗外看一下,然后想一下你大脑能马上吸收所有这些信息的神奇能力。记住你每只眼睛中都有1.3亿个光接收器,记住这些光接收器https://book.douban.com/review/1408857/
6.UNIX环境编程GCC编译器Makefile基础入门GDB调试把它看成是 recipe 的简单表示,而不是实际文件的名称。这里的 recipe: rm $(target) $(objects) 1. 删除目标文件和当前目录下的所有对象文件。 为什么使用 PHONY?为了避免意外情况!比如:如果你的一个文件叫 clean 怎么办? 【一个经常出现的错误】 https://blog.51cto.com/u_15153240/6150687
7.张某很快速的按照recipe手册建立完成,并准确得到了测量结果。以上刷刷题APP(shuashuati.com)是专业的大学生刷题搜题拍题答疑工具,刷刷题提供张某很快速的按照recipe手册建立完成,并准确得到了测量结果。以上描述了体现了作业观察中的哪几项()。A.执行B.熟练C.分歧D.结果E.异常的答案解析,刷刷题为用户提供专业的考试题库练习。一分钟https://www.shuashuati.com/ti/f39c473f3de0442abb9b3b3635dfea8f.html?fm=bdbds451929a85fae6acf3ec52ca4595c742f
8.recipe芦荟胶喷雾怎么用recipe芦荟胶喷雾使用方法recipe芦荟胶喷雾怎么用 这款芦荟胶喷雾近喷和远喷的质地是不一样的,近喷喷出来是泡沫的质地,远喷喷出来是水雾的质地,水珠比较分散,主要看自己是要怎么使用,近喷远喷都是可以的。这款芦荟胶喷雾可以随身携带,随时随地拿出来喷一喷,化妆前喷一喷可以快速补水保湿,缓解肌肤敏感脆弱的状态。皮肤https://zhidao.baidu.com/question/2084129317033976548.html
9.AIRecipeGeneratorGPT商店AI工具集导航1000+AI工具导航AI Recipe Generator食谱生成器提供了一个快速和简单的方法来创建自定义食谱。你所需要做的就是创建一个账户,输入你家里的食材,网站就会把一份独特的食谱发送到你的电子邮箱。 AI Recipe Generator食谱生成器提供了一个快速和简单的方法来创建自定义食谱。你所需要做的就是创建一个账户,输入你家里的食材,网站就会把https://www.tuidog.com/sites/20651.html
10.reception什么意思怎么读?单词用法记忆法发音音标反义词单词:reception发音、音标、怎么读? reception 音标:[ri'sep?n] 你的浏览器不支持播放 单词:reception的单词意思解释释义 n. 接待, 接受, 招待会【医】 接受, 感受【经】 接待, 接收, 接受 单词:reception的快速记忆法 ◆记忆方法一:谐音:若赛跑胜 若赛跑胜利,将受到热情的接待。◆记忆方法二:联想https://english.downyuan.com/index.php?m=home&c=View&a=index&aid=y1507
11.快速编译第三步出现问题·Issue#88·c停止。 make[1]: 离开目录“/home/akira/code/test/buildroot/buildroot/buildroot-ded3f9954f158b5d9cd08ae76749eade72fcca3a” Makefile:52: recipe for target 'all' failed make: *** [all] Error 2 从错误信息看,似乎是要make menuconfig,明天试试看。 make CONF=thead_610_compat_next_glibc_br_https://github.com/c-sky/forum/issues/88
12.HealthyFoodRecipes&EasySmartCookRecipeDiet- 最好的着名和受欢迎的食谱。 - 每个食品食谱写一个简单的方式,让读者可以享受,并尝试做饭。 - 高品质的春天动画图像和照片使用,所以读者可以下降凉爽和放松。 - 最适合所有年龄组的人,孩子或老年或大学和大学生 - 您可以将食谱添加到您的“收藏夹列表”快速找到他们。 https://apps.apple.com/cn/app/healthy-food-recipes-easy-smart-cook-recipe-diet/id1178330848