MLNLP 
机器学习算法与自然语言处理 
)社区是国内外知名自然语言处理社区,受众覆盖国内外NLP硕博生、高校老师以及企业研究人员。

社区的愿景 是促进国内外自然语言处理,机器学习学术界、产业界和广大爱好者之间的交流,特别是初学者同学们的进步。

转载自 | 极市平台
作者丨Dr.百邪饭团@知乎
来源丨https://zhuanlan.zhihu.com/p/548735583
时隔两年,饱受了社会的毒打之后,让我们再次重新回到计算机视觉中的长尾分布这个我博士期间研究的主要问题上,看看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
1
『对长尾分类问题的反思和展望』
先说暴论:如果只考虑训练集与测试集独立同分布(IID)且长尾分布仅体现在类间分布的情况下,Google的Logit Adjustment(https://arxiv.org/abs/2007.07314)研究已经从理论上提供了非常优雅的最优解了。也就是说,计算机视觉中传统的Long-tailed Classification设定其实早就已经被“完美”解决了。那么这就带来了两个问题:(1)长尾分类领域最近的“进展”到底提升的是什么?(2)长尾分布相关的问题后续还能不能做?该怎么做?

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

首先, 让我们解释下为什么我认为IID情况下的类间长尾分布问题已经被完美解决了。基于Logit Adjustment文中的分析, 分类问题的概率模型 可以通过贝叶斯分解为如下形式:
那么在训练集与测试集独立同分布 (IID) 的情况下, 我们自然而然可以得到如下的假设: , 也就是说对于分类模型 , 唯 一的类别bias来自 中的第二项 。
那么问题就简单了, 我们可以直接通过 来将类别分布从训练分布更改为测试分布, 而由于传统长尾分类任务中默认测试分布为均衡分布, 那么就可以去掉最后一项 , 因为在分类的logits上加上一个常数项并不会改变最后分类结果。由此, 我们就实现了理论上的对IID类间长尾分布的最优解。
而上述 的形式也可以理解为优化Point-wise Mutual Information: , 这个优雅的理解方式来自于苏剑林大佬的博客《通过互信息思想来缓解类别不平衡问题》(https://kexue.fm/archives/7615), 非常推荐大家读一下。

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

那么,让我们先来尝试回答一下第一个问题。近年来随着一些基于Ensemble的backbone在长尾分布问题上的应用,其实我们不难发现,目前的趋势是在利用更加通用高效的特征提取方式来提升长尾分类的效果。也就是说是在提升 ,即找到更好的更鲁棒的和类别对应的特征。但这些通用的方式之所以通用,也是因为他们其实并不能算作长尾分布的算法。这其实就是目前计算机视觉中的长尾分布问题的困境:传统的分布矫正思路已经渐渐走到了尽头,而新的特征学习方法又缺少理论支撑。
不过如果读完下文其实就可以发现,近来的特征学习算法大部分确实也是在解决数据不均衡的问题,但并不是解决类间偏见,而是解决类内的属性偏见。比如multi-expert backbone就可以通过ensemble缓解单个特征空间学到的领域偏见,得到更鲁棒的特征。

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

其实计算机视觉中的长尾分布问题还是可以做的。至于做的方向就来自于传统长尾分类任务对问题的过度简化。
其一:并不是所有视觉任务都可以简单建模为 大多数多模态任务中的长尾分布会更加复杂,比如视觉问答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)等等。
2
『对长尾分类问题的一种拓展思路』
图1. 广义长尾=类间长尾+类内长尾
正如我上文提及的,既然单纯的类间长尾无法解释实际应用中所有的数据不均衡问题。那么一个自然而然的拓展思路就是同时考虑类间长尾,即Class-wise Long Tail,和类内长尾,即Attribute-wise Long Tail(这里的属性同时包含了物体层面的属性,如纹理,姿态等,也包含了图像层面的属性,如背景,上下文信息等)。我们将这种同时考虑两种数据不均衡的问题命名为广义长尾分类(Generalized Long-tailed Classification)

2.1 传统建模的局限性

下面让我们看看传统长尾分类问题的建模有什么局限,为什么分类问题还需要考虑一个额外的属性不均衡问题,即类内长尾问题。其实我们从Logit Adjustment(https://arxiv.org/abs/2007.07314)的公式中不难看出,最明显容易有问题的地方就是他的假设 了。对!这个假设太强了,这把Logit Adjustment(https://arxiv.org/abs/2007.07314)限制在了IID场景下,而一旦给定类 中的数据样本产生分布偏移,这个假设就失效了。而在真实数据中,这种分布偏移或者说领域偏移(Domain Transfer)却又往往并不罕见,不管天气,昼夜,甚至是图片所属城市的变化,都可以产生样本 分布的偏移。尤其是对于罕见类别,由于样本不足,使得他们对整体分布的估计很容易存在偏差,也更容易受到领域偏移的影响。这些局限大大的减少了传统IID类间长尾分类任务的实用价值。
但同时每个类别也必然存在不随领域偏移而改变的特征, 否则分类任务本身便不可能存在最优解。因此,我们可以将任意单个物体的图片 看作由两个潜在特征向量 和 生成的,即 。这里 是具有不变性的类别特征, 可以理解为类别的模板或原型 (Class Prototype, 而 是会随着领域而改变分布的属性特征, 这里可以是姿态纹理等物体属性, 也可以是背景光照上下文等图像属性。而我们弱化版的假设就是对于每个类别 ,存在某个特征子集 具备分布不变性, 即 。由此, IID分类任务和OOD分类任务就可以分别理解为属性特征 不发生分布偏移和发生分布偏移这两种情况。
图2. 传统假设的局限以及我们的弱化版假设

2.2 一种崭新的建模方式

由此, 我们就可以通过将图像 分解为两个变量 和 来实现我们图3的全新建模方式了。该公式同时解释了类别偏见(class bias)和属性偏见(attribute bias)的存在。而 和 之间的依 赖关系来自我们图3左侧的朴素理解, 即给定类别 会存在特定类别原型 (注意, 这里我们认为 并不是一个 的one-hot向量, 而是包含了 的多个组成部分, 可以理解为一连串binary的向量, 比如 人的 为 [头, 躯体, 四肢] 。这样我们也可以很好地拓展到细粒度分类 (fine-grained classification), 一些大类的子类其实就是再额外具备某些特征, 比如 牛头人 的 其实就是"人"的 加上额外的“牛角", 而不需要用一个独立的不相干的onehot向量来表示), 而不同类别原型 分别会有不同的属性集合 与之对应 (如人和动物等具有四肢的类别存在姿态属性, 而其他物体则没有), 属性 的实际取值又受到某外部末知噪声 的影响, 至于具体的物体图像 则同时由其类别模板 和对应属性集 决定。
图3. 广义长尾分类的建模方式
下面让我们看看这个新引入的属性偏见(attribute bias)是怎么影响分类结果 的。首先就是在每个类别内部, 即便 是所有类内图片共享的, 但由于 的取值不同attribute bias项会使同一类的样本出现难易之分(如潮湿的皮毛在狗的类别内特别罕见则会使得潮湿的狗变为困难样本), 即图4的例子。其次, 属性偏见(attribute bias)还能解释类别之间是如何产生错分的。比如潮湿的皮毛在河狸类中就很常见, 因为河狸大多生活在水里, 这就给“潮湿的皮毛"与"河狸"之间产生了伪相关性。让潮湿的狗有很大概率被错分为河狸, 也就是图5的例子。
图4. 属性偏见带来的类内长尾
图5. 从属性偏见理解伪相关

2.3 两个数据集,两个指标,三种测试方式

由于之前的类间长尾分类问题和属性相关的领域泛化/迁移问题往往在计算机视觉中被看作两个独立的问题。我们并没有统一的数据集,因此我们构建了两个数据集ImageNet-GLT和MSCOCO-GLT,前者使用预训练模型的特征聚类作为伪属性标注,后者则直接通过MSCOCO-Attribute(https://github.com/genp/cocottributes)数据集获取属性标注。同时我们采取了两个指标,除了传统的正确率(accuracy)外我们也引入了准确率(precision),从而更好的分析传统长尾分类算法的Accuracy-Precision Trade-off(https://github.com/BeierZhu/xERM)现象。最后我们划分了三种测试方式: 类间长尾协议(Class-wise Long Tail (CLT) Protocol),属性长尾协议(Attribute-wise Long Tail (ALT) Protocol)和广义长尾协议(Generalized Long Tail (GLT) Protocol),用以独立研究类间长尾,属性长尾和他们的联合效应。这也可以更好的分析不同的算法到底是提升了哪一类鲁棒性。

2.4 一个新的基准方法

同时我们也引入了一种新的基于特征学习的基准方法。我们的基本思路是,类间长尾产生的问题主要体现在分类器(classifier)上,而类内属性长尾的问题主要体现在特征提取器(backbone)上。传统的长尾分类算法,如Logit Adjustment(https://arxiv.org/abs/2007.07314)和Decoupling(https://arxiv.org/abs/1910.09217)都是在不改变特征的基础上调整分类边界。这就可以看作图6中间的例子,但是这样做的问题是,类别间的混淆区域并没有得到很好的处理,也同时造成了上述的Accuracy-Precision Trade-off(https://github.com/BeierZhu/xERM)现象。而我们通过可视化发现,混淆区域内的样本大多拥有相同的背景或者环境,也就是说模型不小心把这类属性信息也学成了分类特征(因为属性在一些类中和类别高度相关),所以我们的思路就是通过特征学习时加入约束,让模型尽可能不去学习这类属性信息。
图6. 特征空间的可视化与分析
因此我们基于Center Loss(https://ydwen.github.io/papers/WenECCV16.pdf)修改了一个名为不变性特性学习(Invariant Feature Learning)的损失约束函数。首先传统的Center Loss已经在人脸分类等任务中证明了自己可以使类内分布尽可能收束,从而增加类间距离。但是传统的特征中心在一个有偏的数据中也是天然有偏的,比如90%的香蕉都是黄色香蕉,那么这个特征中心也会学到0.9的颜色信息,从而降低绿色香蕉的准确性。因此我们通过构建重采样的双环境,均匀难易样本的比重,实现对特征中心更无偏的估计,从而增加Center Loss在我们泛化长尾分类任务中的效果。

2.5 从算法的局限到新的难点

当然,提出这个基准方法主要是为了抛砖引玉,我们希望大家可以在广义长尾分类(GLT)这类更接近实际应用的设定下提出更多更加实用的算法。我们提出的IFL算法也自然有很多不完善之处。比如,我们发现在构建重采样的双环境的过程中,其实也很容易将噪声样本也过度上采样,而在真实数据中噪声样本虽然可以控制在合理范围内但几乎无法避免。因此我们组的易炫宇学弟也尝试将长尾分布和去噪问题结合,该工作也被ECCV 2022接受,名为 《Identifying Hard Noise in Long-Tailed Sample Distribution》(https://arxiv.org/abs/2207.13378) 该工作的动机和本文也非常相似。另一个问题在于,虽然我们文中表示我们提出的IFL是Invariant Risk Minimization(https://arxiv.org/abs/1907.02893)版的Center Loss,但是原始的IRM约束在真实的视觉数据中往往并没有很好的效果,我们的原始IRM Loss实验中甚至出现10个随机种子有7个会在学习到一般突然变为NaN loss。这也是一个值得研究的问题。
3
『总结』
本文主要分享了目前传统计算机视觉中长尾分类任务的一些反思,我们认为传统的IID类间长尾分类已经有了非常完善的解决方案。但该设定大大地简化了甚至忽视了实际应用中长尾分布真正的难点,由此我们拓展了传统长尾分类任务的设定和建模方式,引入了新的类内属性偏见,并提出了更复合实际工业需求的广义长尾分类设定和数据集以及一个简单的基准算法。希望可以启发后来的研究者提供更好的问题建模方式和解决方案。
@inproceedings{tang2022invariant,

title={Invariant Feature Learning for Generalized Long-Tailed Classification},

author={Tang, Kaihua and Tao, Mingyuan and Qi, Jiaxin and Liu, Zhenguang and Zhang, Hanwang},

journal={ECCV},

year={2022}

}
技术交流群邀请函
△长按添加小助手
扫描二维码添加小助手微信
请备注:姓名-学校/公司-研究方向
(如:小张-哈工大-对话系统)
即可申请加入自然语言处理/Pytorch等技术交流群

关于我们

MLNLP社区  机器学习算法与自然语言处理 ) 是由国内外自然语言处理学者联合构建的民间学术社区,目前已经发展为国内外知名自然语言处理社区,旗下包括  万人顶会交流群、AI臻选汇、AI英才汇  以及  AI学术汇  等知名品牌,旨在促进机器学习,自然语言处理学术界、产业界和广大爱好者之间的进步。
社区可以为相关从业者的深造、就业及研究等方面提供开放交流平台。欢迎大家关注和加入我们。
继续阅读
阅读原文