©作者 | 汤凯华
单位 | 南洋理工大学
研究方向 | 计算机视觉
时隔两年,饱受了社会的毒打之后,让我们再次重新回到计算机视觉中的长尾分布这个我博士期间研究的主要问题上, 看看 2022 年了这个方向是否还值得继续做下去。 本文主要介绍我们今年被 ECCV 2022 接受的论文,目前代码已经在 Github 上开源。
论文标题: Invariant Feature Learning for Generalized Long-Tailed Classification 论文链接:
https://arxiv.org/abs/2207.09504 代码链接:
https://github.com/KaihuaTang/Generalized-Long-Tailed-Benchmarks.pytorch
对长尾分类问题的反思和展望 先说暴论:如果只考虑训练集与测试集独立同分布(IID)且长尾分布仅体现在类间分布的情况下,Google 的 Logit Adjustment [1] 研究已经从理论上提供了非常优雅的最优解了。 也就是说,计算机视觉中传统的 Long-tailed Classification 设定其实早就已经被“完美”解决了。 那么这就带来了两个问题:1)长尾分类领域最近的“进展”到底提升的是什么?2)长尾分布相关的问题后续还能不能做?该怎么做?
1.1 一种优雅的IID类间长尾分类问题的建模方式
首先,让我们解释下为什么我认为 IID 情况下的类间长尾分布问题已经被完美解决了。基于 Logit Adjustment [1] 文中的分析,分类问题的概率模 型 可以通过贝叶斯分解为如下形式 。 那么在训练集与测试集独立同分布(IID)的情况下,我们自然而然可以得到如下的假设 : , 也就是说对于分类模型 ,唯一的类别 bias 来自 中的第二项 。 那么问题就简单了,我们可以直接通过 来将类别分布从训练分布更改为测试分布,而由于传统长尾分类任务中默认测试分布为均衡分布,那么就可以去掉最后一项 ,因为在分类的 logits 上加上一个常数项并不会改变最后分类结果。 由此,我们就实现了理论上的对 IID 类间长尾分布的最优解。而上述 的形式也可以理解为优化Point-wise Mutual Information : , 这个优雅的理解方式来自于苏剑林大佬的文章《通过互信息思想来缓解类别不平衡问题 》,非常推荐大家读一下。
1.2 长尾分类领域最近的“进展”到底提升的是什么?
那么,让我们先来尝试回答一下第一个问题。近年来随着一些基于 Ensemble 的 backbone 在长尾分布问题上的应用,其实我们不难发现,目前的趋势是在利用更加通用高效的特征提取方式来提升长尾分类的效果。也就是说是在提升 ,即找到更好的更鲁棒的和类别对应的特征。但这些通用的方式之所以通用,也是因为他们其实并不能算作长尾分布的算法。这其实就是目前计算机视觉中的长尾分布问题的困境:传统的分布矫正思路已经渐渐走到了尽头,而新的特征学习方法又缺少理论支撑。 不过如果读完下文其实就可以发现,近来的特征学习算法大部分确实也是在解决数据不均衡的问题,但并不是解决类间偏见,而是解决类内的属性偏见。比如 multi-expert backbone 就可以通过 ensemble 缓解单个特征空间学到的领域偏见,得到更鲁棒的特征。
1.3 长尾分布相关问题的后续研究还能不能做?该怎么做? 那么,让我们先来尝试回答一下第一个问题。近年来随着一些基于 Ensemble 的 backbone 在长尾分布问题上的应用,其实我们不难发现,目前的趋势是在利用更加通用高效的特征提取方式来提升长尾分类的效果。也就是说是在提升 ,即找到更好的更鲁棒的和类别对应的特征。但这些通用的方式之所以通用,也是因为他们其实并不能算作长尾分布的算法。这其实就是目前计算机视觉中的长尾分布问题的困境:传统的分布矫正思路已经渐渐走到了尽头,而新的特征学习方法又缺少理论支撑。 其实计算机视觉中的长尾分布问题还是可以做的。至于做的方向就来自于传统长尾分类任务对问题的过度简化。
其一:并不是所有视觉任务都可以简单建模为 。 大多数多模态任务中的长尾分布会更加复杂,比如视觉问答 VQA 数据中的长尾分布既有整体答案的 分布,同时又有基于输入问题 的条件长尾 ,即给定特定问题类型,答案呈现长尾分布(如面对问运动的问题时,答案“网球”成为了明显的常见主导类),而实际训练中后者的影响反而比单纯的全局分布 更明显。所以如何在更加复杂的多模态任务中解决长尾分布会比单纯分类问题下的长尾分布更有生命力。 其二:工业界真正头疼的长尾分布问题其实并不全是学术界研究的最多的类间长尾。 比如当说到无人车训练数据中的长尾分布时,大多数情况下这指代的其实并不是类间长尾。像长尾的天气分布,日夜分布等,并不是模型预测的目标,因此这里长尾的不是类别,而是属性(或者说context)。是这种类内的长尾(intra-class long tail)阻碍了机器学习的进一步在工业界落地,而非类间长尾(inter-class long tail),前者远比后者难得多。 所以,如何给出更好的长尾问题的新设定也是个值得研究的方向。比如我即将要说的广义长尾分类(Generalized Long-tailed Classification [2] ),或者其他研究者的任意测试分布下的长尾算法(Test-Agnostic Long-Tailed Recognition [3]),还有近来一些把类间长尾分类和领域泛化(Domain Generalization)结合的工作 [4] 等等。
对长尾分类问题的一种拓展思路
▲ 图1. 广义长尾=类间长尾+类内长尾
正如我上文提及的,既然单纯的类间长尾无法解释实际应用中所有的数据不均衡问题。那么一个自然而然的拓展思路就是同时考虑类间长尾,即 Class-wise Long Tail,和类内长尾,即 Attribute-wise Long Tail(这里的属性同时包含了物体层面的属性,如纹理,姿态等,也包含了图像层面的属性,如背景,上下文信息等)。我们将这种同时考虑两种数据不均衡的问题命名为广义长尾分类(Generalized Long-tailed Classification)
2.1 传统建模的局限性
下面让我们看看传统长尾分类问题的建模有什么局限,为什么分类问题还需要考虑一个额外的属性不均衡问题,即类内长尾问题。其实我们从 Logit Adjustment [1] 的公式中不难看出,最明显容易有问题的地方就是他的假设 了。对!这个假设太强了,这把 Logit Adjustment [1] 限制在了 IID 场景下,而一旦给定类 中的数据样本产生分布偏移,这个假设就失效了。 而在真实数据中,这种分布偏移或者说领域偏移(Domain Transfer)却又往往并不罕见,不管天气,昼夜,甚至是图片所属城市的变化,都可以产生样本 分布的偏移。尤其是对于罕见类别,由于样本不足,使得他们对整体分布的估计很容易存在偏差,也更容易受到领域偏移的影响。这些局限大大的减少了传统 IID 类间长尾分类任务的实用价值。 但同时每个类别也必然存在不随领域偏移而改变的特征,否则分类任务本身便不可能存在最优解。因此,我们可以将任意单个物体的图片 看作由两个潜在特征向量 和 生成的,即 。这里 是具有不变性的类别特征,可以理解为类别的模板或原型(Class Prototype),而 是会随着领域而改变分布的属性特征,这里可以是姿态纹理等物体属性,也可以是背景光照上下文等图像属性。 而我们弱化版的假设就是对于每个类别 ,存在某个特征子集 具备分布不变性,即 。由此,IID 分类任务和 OOD 分类任务就可以分别理解为属性特征 不发生分布偏移和发生分布偏移这两种情况。
▲ 图2. 传统假设的局限以及我们的弱化版假设
2.2 一种崭新的建模方式
由此,我们就可以通过将图像 分解为两个变量 和 来实现我们图 3 的全新建模方式了。该公式同时解释了类别偏见(class bias)和属性偏见(attribute bias)的存在。而 和 之间的依赖关系来自我们图 3 左侧的朴素理解,即给定类别 会存在特定类别原型 ,而不同类别原型 分别会有不同的属性集合 与之对应(如人和动物存在姿态属性,而刚体物体则没有),属性 的实际取值又受到某外部未知噪声 的影响,至于具体的物体图像 则同时由其类别模板 和对应属性集 决定。
▲ 图3. 广义长尾分类的建模方式
下面让我们看看这个新引入的属性偏见(attribute bias)是怎么影响分类结果 的。首先就是在每个类别内部,即便 是所有类内图片共享的,但由于 的取值不同 attribute bias 项会使同一类的样本出现难易之分(如潮湿的皮毛在狗的类别内特别罕见则会使得潮湿的狗变为困难样本),即图 4 的例子。其次,属性偏见(attribute bias)还能解释类别之间是如何产生错分的。比如潮湿的皮毛在河狸类中就很常见,因为河狸大多生活在水里,这就给“潮湿的皮毛”与“河狸”之间产生了伪相关性。让潮湿的狗有很大概率被错分为河狸,也就是图 5 的例子。
▲ 图4. 属性偏见带来的类内长尾
▲ 图5. 从属性偏见理解伪相关
2.3 两个数据集,两个指标,三种测试方式 由于之前的类间长尾分类问题和属性相关的领域泛化/迁移问题往往在计算机视觉中被看作两个独立的问题。我们并没有统一的数据集,因此我们构建了 两个数据集 ImageNet-GLT 和 MSCOCO-GLT,前者使用预训练模型的特征聚类作为伪属性标注,后者则直接通过 MSCOCO-Attribute [5] 数据集获取属性标注。同时我们采取了 两个指标 ,除了传统的正确率(accuracy)外我们也引入了准确率(precision),从而更好的分析传统长尾分类算法的 Accuracy-Precision Trade-off [6] 现象。 最后我们划分了 三种测试方式 :类间长尾协议(Class-wise Long Tail (CLT) Protocol),属性长尾协议(Attribute-wise Long Tail (ALT) Protocol)和广义长尾协议(Generalized Long Tail (GLT) Protocol),用以独立研究类间长尾,属性长尾和他们的联合效应。这也可以更好的分析不同的算法到底是提升了哪一类鲁棒性。
2.4 一个新的基准方法 同时我们也引入了一种新的基于特征学习的基准方法。我们的基本思路是,类间长尾产生的问题主要体现在分类器(classifier)上,而类内属性长尾的问题主要体现在特征提取器(backbone)上。传统的长尾分类算法,如 Logit Adjustment [1] 和 Decoupling [7] 都是在不改变特征的基础上调整分类边界。这就可以看作图 6 中间的例子,但是这样做的问题是,类别间的混淆区域并没有得到很好的处理,也同时造成了上述的 Accuracy-Precision Trade-off [6] 现象。 而我们通过可视化发现,混淆区域内的样本大多拥有相同的背景或者环境,也就是说模型不小心把这类属性信息也学成了分类特征(因为属性在一些类中和类别高度相关),所以我们的思路就是通过特征学习时加入约束,让模型尽可能不去学习这类属性信息。 因此我们基于 Center Loss [8] 修改了一个名为不变性特性学习(Invariant Feature Learning)的损失约束函数。首先传统的 Center Loss 已经在人脸分类等任务中证明了自己可以使类内分布尽可能收束,从而增加类间距离。但是传统的特征中心在一个有偏的数据中也是天然有偏的,比如 90% 的香蕉都是黄色香蕉,那么这个特征中心也会学到 0.9 的颜色信息,从而降低绿色香蕉的准确性。因此我们通过构建重采样的双环境,均匀难易样本的比重,实现对特征中心更无偏的估计,从而增加 Center Loss 在我们泛化长尾分类任务中的效果。 2.5 从算法的局限到新的难点 当然,提出这个基准方法主要是为了抛砖引玉,我们希望大家可以在广义长尾分类(GLT)这类更接近实际应用的设定下提出更多更加实用的算法。我们提出的 IFL 算法也自然有很多不完善之处。比如,我们发现在构建重采样的双环境的过程中,其实也很容易将噪声样本也过度上采样,而在真实数据中噪声样本虽然可以控制在合理范围内但几乎无法避免。 因此我们组的易炫宇学弟也尝试将长尾分布和去噪问题结合,该工作也被 ECCV 2022 接受,名为《Identifying Hard Noise in Long-Tailed Sample Distribution》[9]。该工作的动机和本文也非常相似。另一个问题在于,虽然我们文中表示我们提出的 IFL 是 Invariant Risk Minimization [10] 版的 Center Loss,但是原始的 IRM 约束在真实的视觉数据中往往并没有很好的效果,我们的原始 IRM Loss 实验中甚至出现 10 个随机种子有 7 个会在学习到一般突然变为 NaN loss。这也是一个值得研究的问题。
总结 本文主要分享了目前传统计算机视觉中长尾分类任务的一些反思,我们认为传统的 IID 类间长尾分类已经有了非常完善的解决方案。但该设定大大地简化了甚至忽视了实际应用中长尾分布真正的难点,由此我们拓展了传统长尾分类任务的设定和建模方式,引入了新的类内属性偏见,并提出了更复合实际工业需求的广义长尾分类设定和数据集以及一个简单的基准算法。希望可以启发后来的研究者提供更好的问题建模方式和解决方案。
Long-Tailed Classification系列文章:
https://zhuanlan.zhihu.com/p/153483585 https://zhuanlan.zhihu.com/p/158638078
https://zhuanlan.zhihu.com/p/163186777
https://zhuanlan.zhihu.com/p/259569655
[1] https://arxiv.org/abs/2007.07314
[2] https://arxiv.org/abs/2207.09504
[3] https://github.com/Vanint/TADE-AgnosticLT
[4] https://arxiv.org/abs/2207.10150
[5] https://github.com/genp/cocottributes
[6] https://github.com/BeierZhu/xERM
[7] https://arxiv.org/abs/1910.09217
[8] https://ydwen.github.io/papers/WenECCV16.pdf
[9] https://arxiv.org/abs/2207.13378
[10] https://arxiv.org/abs/1907.02893
#投 稿 通 道 #
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读 ,也可以是学术热点剖析 、科研心得 或竞赛经验讲解 等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品 ,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬 ,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱: hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02 )快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」 也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」 订阅我们的专栏吧