3. 难例来源与分类

在难例回放复现与模型退化分析工程中,第一步不是“跑模型”,而是把“难例”本身定义清楚、采集完整、分类准确。如果难例来源混乱、标签体系缺失,后续的回放、复现、归因和修复都会失去基准。本节围绕五类核心难例——线上badcase、边界样本、长尾样本、对抗样本、分布外样本——建立从采集渠道到分类体系的完整工程框架。

一、核心原理:难例不是单一类型,而是多维来源的集合

难例(Hard Example)通常指模型预测错误、置信度低、损失值高或人工判定不达标的样本。但在工程实践中,难例的“难”来自不同机制:有的来自真实业务中的错误反馈,有的来自决策边界附近的模糊样本,有的来自低频长尾分布,有的来自人为构造的对抗扰动,还有的来自训练分布之外的输入。若把它们混在一个池子里,回放复现时无法区分“模型能力不足”与“数据分布偏移”,退化分析也会失去方向。

因此,难例分类体系应至少包含三个维度:来源渠道(线上反馈、离线挖掘、人工构造、外部引入)、难例类型(badcase、边界、长尾、对抗、OOD)、可复现等级(稳定复现、偶发复现、不可复现)。这三个维度共同决定样本进入回放管线的优先级和处理策略。

核心原则:先分类,再回放;先定渠道,再定标签。没有分类体系的难例池,只是“错误样本堆”,无法支撑模型退化分析。

二、五类难例的采集渠道与特征

下面按五类难例分别说明其典型采集渠道、数据特征和工程处理要点。

难例类型主要采集渠道典型特征回放优先级
线上badcase用户反馈、客服工单、线上日志、A/B测试异常有真实业务上下文,标签明确,可追溯请求ID最高
边界样本模型置信度阈值附近筛选、主动学习采样预测概率接近0.5,决策边界模糊高
长尾样本低频类别统计、长尾分布挖掘、领域专家补充样本量少、类别不均衡、覆盖不足中高
对抗样本FGSM/PGD/C&W生成、对抗训练集、安全测试人眼难辨扰动,模型高置信误判中
分布外样本跨域数据、异常输入、仿真环境、外部数据集与训练分布差异大,置信度异常中

线上badcase是最贴近业务价值的难例来源。采集渠道包括用户主动反馈、客服工单、线上预测日志中的低置信样本、A/B实验中的指标异常请求。其优势是带有真实请求ID、用户上下文和业务标签,便于回放时还原完整链路。工程上应建立“反馈→样本ID→特征快照→模型版本”的关联索引。

边界样本通常通过模型置信度筛选获得,例如取预测概率在0.4~0.6之间的样本,或使用主动学习中的不确定性采样。这类样本对模型决策边界最敏感,适合用于分析模型是否“学偏了”。采集时需记录模型版本、阈值和采样策略。

长尾样本来自低频类别或罕见场景。采集渠道包括类别频次统计、领域专家人工补充、外部数据采购。长尾样本的难点在于“样本少但重要”,回放时需配合重采样或加权策略,避免被高频类别淹没。

对抗样本由攻击算法生成,如FGSM、PGD、C&W等。采集渠道包括安全测试平台、对抗训练集和红队演练。其价值在于评估模型鲁棒性,但需注意对抗样本与真实业务分布的差异,不宜直接作为线上badcase处理。

分布外样本(OOD)来自训练分布之外的输入,如跨域图像、异常传感器读数、仿真环境数据。采集渠道包括跨域数据集、异常检测模块和外部引入数据。OOD样本的回放重点是检测模型是否产生过度自信的错误预测。

三、分类体系与采集流程

建立分类体系时,建议采用“标签树+元数据”的方式。标签树定义难例类型,元数据记录来源渠道、采集时间、模型版本、置信度、损失值、人工标注结果等。采集流程如下:

  1. 定义难例判定规则:如预测错误、置信度低于阈值、损失高于阈值、人工标注为困难。
  2. 多渠道采集:线上日志、用户反馈、离线挖掘、对抗生成、外部数据集并行接入。
  3. 去重与归一化:按样本ID、特征哈希去重,统一特征格式和标签体系。
  4. 分类打标:按五类难例打主标签,按来源渠道打子标签,记录可复现等级。
  5. 入池与分级:按回放优先级入池,高优先级样本进入快速回放通道。
难例元数据示例:
{
  "sample_id": "bc_20240612_001",
  "type": "online_badcase",
  "channel": "user_feedback",
  "model_version": "v2.3.1",
  "confidence": 0.87,
  "loss": 2.41,
  "label": "cat",
  "pred": "dog",
  "repro_level": "stable",
  "priority": "P0"
}

四、案例场景:电商搜索中的难例采集

以电商搜索排序模型为例。线上badcase来自用户点击“不相关”反馈和客服投诉;边界样本来自排序分数接近的query-doc对;长尾样本来自冷门品类和长尾query;对抗样本来自恶意刷单和关键词堆砌;OOD样本来自新品类上线或跨语言query。若不做分类,回放时会把“新品类OOD”误判为“模型退化”,导致错误的修复方向。正确做法是:先按类型分流,再分别回放,最后对比各类型样本的指标变化。

五、误区与复盘

常见误区:

  • 把线上badcase直接等同于全部难例,忽略边界、长尾、对抗和OOD样本。
  • 采集时只存样本内容,不存模型版本、置信度和请求上下文,导致无法复现。
  • 对抗样本与真实badcase混放,回放指标被污染。
  • 长尾样本未做加权,回放时被高频样本淹没。
  • OOD样本未单独标记,退化分析时误判为模型能力下降。

复盘时应检查:难例池是否覆盖五类来源?每类样本是否有明确的采集渠道和元数据?回放优先级是否与业务价值匹配?只有把来源、分类、元数据和回放策略打通,难例回放复现才能真正支撑模型退化分析。

难例来源与分类体系总览 采集渠道 → 分类打标 → 元数据 → 回放优先级 采集渠道层 线上日志/反馈 用户工单 · A/B异常 离线挖掘 置信度筛选 · 主动学习 人工构造 对抗生成 · 专家补充 外部引入 跨域数据 · 仿真环境 安全测试 红队 · 攻击平台 难例分类层(五类核心) 线上badcase 真实业务错误 标签明确 优先级 P0 边界样本 置信度接近0.5 决策边界模糊 优先级 P1 长尾样本 低频类别 样本量少 优先级 P1 对抗样本 FGSM/PGD/C&W 高置信误判 优先级 P2 分布外样本 跨域/异常输入 分布偏移 优先级 P2 元数据与回放层 元数据字段 sample_id · type · channel model_version · confidence loss · label · pred · repro_level 分类打标 主标签:五类难例 子标签:采集渠道 可复现等级:稳定/偶发/不可复现 回放优先级 P0:线上badcase P1:边界/长尾 P2:对抗/OOD 回放管线 特征快照还原 模型版本对齐 指标对比分析 难例分类体系:来源渠道 × 难例类型 × 可复现等级 → 回放优先级