99POS
全部 73 场景方案 7 方案白皮书 3 防损 1 计价实践 1 品类方案 1 品牌与机型 3 收银选型 16 收银指南 3 算力平台 18 外设与扫码 2 运维与验收 18
首页/ 运维与验收/ 总分没掉,某一类却整块错

总分没掉,某一类却整块错

2026-10-28 运维与验收 约 845 字

一个很常见的现场反馈

小模型上线两周,运维群里开始出现同一种描述:「大部分都对,就是那种透明包装的凉菜老是认成别的」「散装糖果一抓一把的时候数不准」「同一个牌子的两种酸奶,永远只认成一种」。

回去查指标,总体准确率和换模型之前差不了半个点。项目验收表上写着通过。

问题就在这里:总分是所有品类、所有场景的加权平均。某个细分场景归零、另一个场景略微提升,平均下来可以纹丝不动。而门店每天面对的恰恰是那个归零的细分场景——它不是统计数据,是排队顾客手里那盒凉菜。

压缩掉的到底是什么

小模型通常靠蒸馏从大模型得来:大模型当教师,输出概率分布,小模型照着学。验收时比总分,学生接近教师就算成功。

arXiv 上有一篇 What Survives Distillation? A Mechanistic Interpretability Study of GPT-2 and DistilGPT-2(编号 2610.37157),换了个角度看这件事——不看总分,看模型内部具体的计算路径(论文里叫「电路」)在压缩后还在不在。

它比对了 GPT-2 和只有六层的 DistilGPT-2,用了四五种机制分析工具:比较层间表示相似度的 CKA、把中间层直接投影看「算出了什么」的 logit lens、按行为给注意力头分类的分解方法,以及把教师某层激活换进学生看效果是否恢复的激活修补。

选了两个研究得比较透的电路,结果截然不同:

  • 一个电路完全塌了。 需要多层接力传递信息的任务,学生准确率 35.2%,教师 94.8%;承担关键搬运作用的注意力头,在学生身上一个都没保住。
  • 另一个电路活了下来。 任务表现恢复到 87.7%,但恢复方式是把教师第 9 层的比较头搬到了学生的第 4 层——功能还在,位置全变了。

论文给出的判断是:一条电路能不能在蒸馏后存活,取决于这条电路本身好不好压,而不是它在任务里有多重要。依赖多层接力、需要精确位置对齐的,压掉中间层就没了;集中在一两层里的,可以被挪到别处重新接线。

这跟门店有什么关系

换小模型这件事,门店和连锁都会遇到:盒子算力不够要换轻量模型、供应商升级算法版本、集团统一模型、为了省成本把大模型换成蒸馏版。每一次都是一次「总分差不多,现场不一样」的机会。

三种情况要格外小心:

品类之间差异大。 标准包装商品靠条码和外观,散装、生鲜、烘焙靠形状和颜色。这两类在模型内部走的路径本来就不一样,压缩时不一定同时保住。

依赖上下文判断的识别。 比如「同一个货道上相邻的两个 SKU 靠位置区分」「称重台上先放托盘再放商品」。这类判断需要把多处信息合起来,正是容易塌的那一类。

长尾品类。 一个门店 3000 个 SKU,头部的 300 个占八成销量,剩下 2700 个在训练数据里样本很少。总分由头部决定,长尾的错误在平均里被稀释得看不见。

验收时改三件事

第一,要分品类的表。 不是一张总准确率,而是按品类、按场景拆开的混淆矩阵。重点看三类:样本最少的品类、客单价最高的品类、出错后损失最大的品类(生鲜称重算错直接是钱)。

第二,固定一套回归集。 从门店真实画面里挑几百张,覆盖每个品类、每种光照、每个角度,标注好之后固定下来。每次换模型版本,都在这套集上跑一遍,看的是「哪些品类变了」,不是「总分变了多少」。

第三,问清压缩的边界。 供应商把大模型换成小模型时,问三个问题:

  • 蒸馏用的数据覆盖了哪些品类?长尾品类有没有单独补样本?
  • 压缩前后,各品类的准确率变化是多少?能不能给一张对比表?
  • 哪些场景是明确不支持的?把边界写进合同,比事后争论有用。

换版本时的两个动作

灰度,不要全量。 先在一个店、一个收银位跑一周,比对同一批商品的识别结果。差异集中在哪几类,一眼能看出来。

记录误识别,不要只记录正确率。 收银员按了「改品类」的那一下,就是一条最有价值的样本。攒上几百条,比任何离线测试集都贴近真实。

一句话

总分是给验收表看的,门店过的是具体那一类商品。换小模型之前先问「压掉的是哪一块」,换完之后按品类比对,比盯着一个总准确率数字有用得多。