时隔两年,饱受了社会的毒打之后,让我们再次重新回到计算机视觉中的长尾分布这个我博士期间研究的主要问题上,看看2022年了这个方向是否还值得继续做下去。本文主要介绍我们今年被ECCV 2022接受的论文《Invariant Feature Learning for Generalized Long-Tailed Classification》

论文链接:https://arxiv.org/abs/2207.09504

代码链接:

https://github.com/kaihuatang/generalized-long-tailed-benchmarks.pytorchgithub.com/kaihuatang/generalized-long-tailed-benchmarks.pytorch

一. 对长尾分类问题的反思和展望

先说暴论:如果只考虑训练集与测试集独立同分布(IID)且长尾分布仅体现在类间分布的情况下,Google的Logit Adjustment(https://arxiv.org/abs/2007.07314)研究已经从理论上提供了非常优雅的最优解了。也就是说,计算机视觉中传统的Long-tailed Classification设定其实早就已经被“完美”解决了。那么这就带来了两个问题:(1)长尾分类领域最近的“进展”到底提升的是什么?(2)长尾分布相关的问题后续还能不能做?该怎么做?

1.1 一种优雅的IID类间长尾分类问题的建模方式

首先, 让我们解释下为什么我认为IID情况下的类间长尾分布问题已经被完美解决了。基于Logit Adjustment文中的分析, 分类问题的概率模型P(y|x)可以通过贝叶斯分解为如下形式:

那么在训练集与测试集独立同分布 (IID) 的情况下, 我们自然而然可以得到如下的假设:Ptr(x|y)=Pte(x|y) , 也就是说对于分类模型P(y|x), 唯 一的类别bias来自P(y|x)P(y)中的第二项 P(y)。

那么问题就简单了, 我们可以直接通过

来将类别分布从训练分布更改为测试分布, 而由于传统长尾分类任务中默认测试分布为均衡分布, 那么就可以去掉最后一项 , 因为在分类的logits上加上一个常数项并不会改变最后分类结果。由此, 我们就实现了理论上的对IID类间长尾分布的最优解。

而上述  的形式也可以理解为优化Point-wise Mutual Information: , 这个优雅的理解方式来自于苏剑林大佬的博客《通过互信息思想来缓解类别不平衡问题》(https://kexue.fm/archives/7615), 非常推荐大家读一下。

1.2 长尾分类领域最近的“进展”到底提升的是什么?

那么,让我们先来尝试回答一下第一个问题。近年来随着一些基于Ensemble的backbone在长尾分布问题上的应用,其实我们不难发现,目前的趋势是在利用更加通用高效的特征提取方式来提升长尾分类的效果。也就是说是在提升 ,即找到更好的更鲁棒的和类别对应的特征。但这些通用的方式之所以通用,也是因为他们其实并不能算作长尾分布的算法。这其实就是目前计算机视觉中的长尾分布问题的困境:传统的分布矫正思路已经渐渐走到了尽头,而新的特征学习方法又缺少理论支撑。

不过如果读完下文其实就可以发现,近来的特征学习算法大部分确实也是在解决数据不均衡的问题,但并不是解决类间偏见,而是解决类内的属性偏见。比如multi-expert backbone就可以通过ensemble缓解单个特征空间学到的领域偏见,得到更鲁棒的特征。

1.3 长尾分布相关问题的后续研究还能不能做?该怎么做?

其实计算机视觉中的长尾分布问题还是可以做的。至于做的方向就来自于传统长尾分类任务对问题的过度简化。

其一:并不是所有视觉任务都可以简单建模为P(y|x) 大多数多模态任务中的长尾分布会更加复杂,比如视觉问答VQA数据中的长尾分布既有整体答案的  分布,同时又有基于输入问题  的条件长尾 ,即给定特定问题类型,答案呈现长尾分布(如面对问运动的问题时,答案“网球”成为了明显的常见主导类),而实际训练中后者的影响反而比单纯的全局分布  更明显。所以如何在更加复杂的多模态任务中解决长尾分布会比单纯分类问题下的长尾分布更有生命力。

其二:工业界真正头疼的长尾分布问题其实并不全是学术界研究的最多的类间长尾。比如当说到无人车训练数据中的长尾分布时,大多数情况下这指代的其实并不是类间长尾。像长尾的天气分布,日夜分布等,并不是模型预测的目标,因此这里长尾的不是类别,而是属性(或者说context)。是这种类内的长尾(intra-class long tail)阻碍了机器学习的进一步在工业界落地,而非类间长尾(inter-class long tail),前者远比后者难得多。所以,如何给出更好的长尾问题的新设定也是个值得研究的方向。比如我即将要说的广义长尾分类(Generalized Long-tailed Classification:https://arxiv.org/abs/2207.09504),或者其他研究者的任意测试分布下的长尾算法(Test-Agnostic Long-Tailed Recognition:https://github.com/Vanint/TADE-AgnosticLT),还有近来一些把类间长尾分类和领域泛化(Domain Generalization)结合的工作(https://arxiv.org/abs/2207.10150)等等。

二. 对长尾分类问题的一种拓展思路

图1. 广义长尾=类间长尾+类内长尾

正如我上文提及的,既然单纯的类间长尾无法解释实际应用中所有的数据不均衡问题。那么一个自然而然的拓展思路就是同时考虑类间长尾,即Class-wise Long Tail,和类内长尾,即Attribute-wise Long Tail(这里的属性同时包含了物体层面的属性,如纹理,姿态等,也包含了图像层面的属性,如背景,上下文信息等)。我们将这种同时考虑两种数据不均衡的问题命名为广义长尾分类(Generalized Long-tailed Classification)