长尾分类(Long-tailed Classification)方法汇总

长尾分布:训练集里少数头部类别样本极多,大量尾部类别样本很少,模型容易偏向头部类,尾部召回差。下面按大类整理主流方法。

从左到右样本数递减;左边头部类别样本充足,右边尾部类别样本稀少。模型直接训练时,会优先拟合头部样本,尾部类别学到的特征聚类中心弱、决策边界容易被头部 "挤压"。

一、数据层面(Data-level)

1. 重采样 Re-sampling

  • 过采样 Oversampling:重复抽取尾部类样本,增加尾部数据量;缺点:尾部容易过拟合。
  • 欠采样 Undersampling:减少头部类样本数量,平衡类别;缺点:丢失头部信息。
  • 自适应重采样(Class-balanced sampling):按类别有效样本数采样,最常用,很多长尾 baseline 标配。

2. 数据增强 Data Augmentation

  • 基础增强:随机裁剪、翻转、色彩抖动
  • 针对长尾的强增强:Mixup、CutMix、AugMix、SMOTE(传统机器学习)
  • 尾部专属增强:Tail augmentation,专门对少样本类别做更多增强;
  • 生成式增强:GAN、Diffusion 生成尾部类样本,弥补数据稀缺,代价高。

二、损失函数层面(Loss-level,最常用)

1. 类别权重加权

  • Class-balanced Loss(CB Loss):引入有效样本数计算每类权重,样本越少权重越高。
  • Balanced Softmax :修正 softmax,把类别样本量放进 logit,解决长尾下分类器偏向头部,现在非常热门。
  • Focal Loss:降低简单头部样本权重,聚焦难例(尾部 + 困难样本);原始 Focal 不直接针对长尾,常和 CB 结合。

Class-Balanced Loss Based on Effective Number of Samples(CVPR2019,CB Loss)

arXiv:https://arxiv.org/pdf/1901.05555.pdf

Balanced Softmax for Long-Tailed Visual Recognition(NeurIPS2021,Balanced Softmax)

arXiv:https://arxiv.org/pdf/2007.10740.pdf

Focal Loss for Dense Object Detection(ICCV2017,Focal Loss,长尾常用 baseline)

arXiv:https://arxiv.org/pdf/1708.02002.pdf

2. Logit 调整(Logit Adjustment)

核心:在分类得分 logit 上直接加类别先验偏移,抵消数据分布偏置

  • Logit Adjustment(LA):\(z_i' = z_i + \tau \log n_i\),\(n_i\)为类别样本数;简单高效,消融实验高频使用。
  • Tau-Normalized:归一化分类权重,减少头部类别权重范数偏大问题。

Long-tail Learning via Logit Adjustment(ICLR2021,LA Logit 调整)

arXiv:https://arxiv.org/pdf/2007.07314v2

3. 其他改进损失

  • LDAM Loss:在 logit 调整基础上,加上边际 margin,拉大尾部类别间隔,经典长尾 baseline。
  • RRT Loss、DRO(Distributionally Robust Optimization):鲁棒优化,约束最差类别性能。

三、特征 / 分类器层面(Representation & Classifier)

1. 两阶段训练(Two-stage)

长尾领域经典范式:

  1. Stage1:普通训练,用原始长尾数据学习通用特征(冻结主干)
  2. Stage2:重平衡微调,只微调分类头,使用 balanced sampler /balanced softmax / LA

代表论文:Balanced Softmax、Logit Adjustment,大量实验证明两阶段效果优于单阶段。

2. 解耦学习 Decoupled Learning

把特征提取器(backbone) 和分类器(classifier) 分开优化:

  • Stage1:特征学习阶段 :用原始长尾数据 + instance-balanced 采样(按样本实例采样)+ 普通交叉熵,训练主干网络,不做重平衡。目标:学习通用视觉特征;过早重平衡会破坏全局特征提取能力。
  • Stage2:分类器重校准阶段 :冻结 Backbone 主干,只重新训练分类头,使用 class-balanced 采样(按类别采样,每个类别被采样概率均等),即 cRT(classifier re-training)。

论文核心结论:特征学习和分类器学习目标不一样,不能一起联合重平衡。普通联合训练会让分类器权重范数随类别样本数变大(头部分类器权重 L2 范数更大),产生固有偏置。
(a) 普通 CE 联合训练 (b) 解耦学习

  • (a) 普通 CE 联合训练:紫色三角 = 头部,绿色圆 = 尾部;尾部特征少,决策边界被头部挤压,尾部容易被错分。
  • (b) 解耦学习:主干学到好的特征,固定特征后单独调整分类器,重新划分决策边界,保护尾部类别。

论文:Kang B, et al. Decoupling Representation and Classifier for Long-Tailed Recognition, ICLR, 2020

arXiv:https://arxiv.org/pdf/1910.09217v2

这篇论文奠定了两阶段解耦的主流框架,几乎所有长尾 baseline 都基于这个思路。

3. 分类器归一化

  • Normed-Classifier:对分类权重做 L2 归一化,消除头部类别权重 norm 更大的偏差。

四、迁移学习 / 预训练 + 少样本范式

适合尾部样本极少(极端长尾)

  1. 大模型预训练(ImageNet 预训练 / CLIP 等对比学习预训练),主干学到通用特征,尾部只微调分类头
  2. 元学习(Meta-learning):MAML 等,用少量尾部样本快速适配
  3. 对比学习:MoCo、SimCLR 先自监督预训练,不需要标签,对长尾友好,提升特征质量。

五、专家 / 分支模型(Mixture of Experts,MoE 类)

  • Dynamic MoE / Multi-expert:多个专家分支,不同专家分别负责头部、中部、尾部类别。 例:Long-tailed Mixture of Experts,将类别分组,不同专家学习不同分组,避免头部压制尾部。
  • 分支划分:Head expert / Tail expert,最后融合预测。
  • 缺点:参数量大、训练成本高。

RIDE: Long-tailed Recognition by Routing Diverse Distribution-Aware Experts(ICLR2021,多专家 MoE)

arXiv:https://arxiv.org/pdf/2010.01809.pdf

六、知识蒸馏 Knowledge Distillation

  • 用在均衡数据集训练的教师模型,蒸馏知识给长尾学生模型;
  • 或者用强头部样本学到的特征,蒸馏辅助尾部类别学习;
  • 代表:Balanced KD,跨类别蒸馏。

七、其他小众方向

  • 因果推断:消除 "样本数量带来的伪相关",去混杂(Causal Inference for Long-tail)
  • 标签感知正则化、迁移原型学习:为尾部类别构造原型特征
  • 半监督长尾:利用无标签数据补充尾部类别(Semi-supervised long-tailed)

常用 Baseline 推荐(做实验优先试)

  1. 基础:Class-balanced Sampling + Focal Loss
  2. 性价比首选:两阶段 + Logit Adjustment
  3. SOTA 常用:两阶段 + Balanced Softmax
  4. 强基线:LDAM-DRW(LDAM loss + 动态重权重 DRW)

论文常用对比可视化

普通 CE 训练各类精度 长尾方法各类精度

  • 左图:普通 CE 训练,类别按样本数从多到少排序;头部类别精度很高,尾部精度断崖下跌。
  • 右图:长尾方法(如 LA/BalancedSoftmax),头部精度轻微下降,但尾部类别精度显著提升,各类别精度更加均衡。

综述论文(Deep Long-Tailed Learning: A Survey,TPAMI2023,自动化学报中文综述配套参考)

arXiv:https://arxiv.org/pdf/2110.04596.pdf

相关推荐
10年前端老司机1 小时前
一次业务迭代:聊聊知识库多版本可追溯审核流程怎么做
人工智能·后端·agent
for_ever_love__1 小时前
LangChain Agentic RAG:让 Agent 自己决定要不要检索、检索几次
人工智能·golang·langchain·rag·langgraph·agentic·自适应检索
Fxrain1 小时前
[Paper-Reading] CUAs 安全与隐私威胁综述
人工智能·安全·agent·智能体
乱世军军1 小时前
安装最新版本
人工智能
Mickey同学1 小时前
大模型应用的运行原理:Token、上下文、采样、成本与工程边界
人工智能
海边捡石子1 小时前
向量、图谱还是文件:Agent 记忆怎么选
人工智能·llm·agent
tiger从容淡定是人生1 小时前
从 Gemini 的任务示例出发:AI 能否从知识中推导工作流?
java·人工智能·aigc·知识图谱·创业创新·零知识证明
向哆哆1 小时前
外墙裂缝目标检测数据集:6,000+张图像 | 目标检测
人工智能·目标检测·计算机视觉
鶴哥只手遮天1 小时前
第 06 章 SQLite 持久化契约与数据模型
人工智能·开源