为什么微F1=0.94可能隐藏一个无用的分类器:多标签问题剖析
DeepPavlov
以Discord的AI审核为例,文章展示了聚合的微F1指标可能掩盖罕见但关键类别上的失败。作者警告在多标签任务中不要盲目遵循KISS原则,并解释了类别不平衡、损失函数选择以及检查点选择指标如何影响实际模型质量。
作者基于ruBERT tiny2模型开发了一个用于Discord的AI审核系统,并针对多标签分类进行了微调,共有15个标签(安全、有毒、广告、垃圾信息、诈骗、威胁、规避、刷屏等)。数据集包含约100万个带标签的样本。训练后,模型在测试集上的微F1得分为0.9358,宏F1得分为0.8396——两者相差近0.1,这表明需要检查每个类别的单独指标。结果发现,稀有类别(如规避,有35000个样本)被淹没在常见类别(如安全,有400000个样本)中,微F1并不能反映这些类别上的错误。为了应对不平衡问题,在BCEWithLogitsLoss中使用了pos_weight。详细分析显示,有毒类别的召回率约为0.78,这意味着模型会漏掉相当一部分有毒信息。刷屏和图片诈骗类别在测试集中几乎不存在,但它们由系统其他组件处理,而非文本分类器。作者还指出,基于训练损失选择最佳检查点会导致过拟合:最优变体是通过宏F1而非损失来确定的。主要启示是:KISS原则适用于实现,但不适用于任务本身——类别不平衡、指标差异、每个类别的精确率/召回率差异以及错误成本都不能被忽视。下一步是为每个类别单独校准阈值。
来源: Habr — хаб NLP —
原文
