跳到主内容
快讯直播
AI智模界
AI 词典

开放集识别:模型也得会说“这个我不认识”

一句话定义:开放集识别(Open-set Recognition)指的是,分类模型在面对训练时没见过的类别时,能明确拒绝识别,并说“这不在我认识的类别里”,而不是硬把它归入某一个已知类别。

为什么闭集模型“不敢说不”

常规的图像分类、意图识别、故障诊断,几乎都是闭集(closed-set)设定:假设测试样本一定属于训练时那 N 个类别之一。模型最后一层通常是 softmax,它的输出被强制归一化,所有概率加起来等于 1。于是哪怕输入是一只从没出现在训练集里的动物,模型也会把 100% 的概率分布到 N 个已知类上,还可能给出 0.98 的高置信度。它并非在“撒谎”;它只是被结构限制住了,没有留出一条“弃权”的出口。

打个比方:公司前台被交代“访客只可能是张三、李四、王五”,她会把每个人往这三个名字上对号入座。真来了个陌生人,她也只会说“您是李四吧?”——因为她的名单上没有“其他人”这一项。开放集识别要做的,就是给名单加一行“不明身份,请人工处理”。

和相邻概念的区别

概念关心的问题输出
闭集分类这是 N 个已知类中的哪一个?一个已知类标签
开放集识别是已知类吗?不是就拒识已知类标签或“未知”
分布外检测(OOD Detection)这个输入是否偏离训练分布?一个“是否”判断
异常检测(Anomaly Detection)这个样本是否异常?异常分或标记
开集/开放世界学习遇到新类后能否逐步学会它?标签,且模型会更新

开放集识别和分布外检测(OOD Detection)最容易混:前者通常发生在“要分类”的场景里,要求在拒识未知类的同时不牺牲已知类的准确率;后者更宽泛,只判断“像不像训练数据”,不一定要给出类别。实践中两者的方法高度重叠,边界比较模糊。

评估方式完全不同

这是最容易被忽略的一点。闭集看准确率就行;开放集必须人为留出一批类别不参与训练,只在测试时把它们当作“未知”喂进去,同时报告两组指标:已知类的分类准确率,以及对未知类的拒识效果(常用 AUROC、开放集分类率等曲线型指标)。只报一个准确率,等于把“把未知类胡乱归入某个已知类”也算成答对了,会严重高估模型能力。

对从业者的实际意义

  • 不要盲信 softmax 置信度。模型对陌生输入的高分很常见;要么用阈值、距离度量、原型匹配、能量分数这类手段做拒识,要么在业务层加兜底。
  • 阈值是有代价的。拒识率调高,未知类拦得住,但已知类的误拒也会上升;这条权衡曲线需要结合业务成本来定,而不是只追求指标好看。
  • 把“未知”当成一类产品需求。新商品品类、新故障类型、新用户意图会源源不断地出现,能识别出“我不认识”并转人工,往往比硬猜更有价值,也更容易做数据闭环。

具体实现方案与工具链的选择,以各项目官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。