上新一季商品,为什么老品类的识别先坏
一句很常见的反馈
「新上那批货现在认得挺准,但老的那几个口味老扫错,以前没这毛病。」
店长说这句话的时候,通常带着一点怀疑:是不是更新把我原来的东西搞坏了?答案经常是「是的」,但不是故障,是模型更新的必然代价。
一个模型认多少个 SKU,是由训练数据决定的。加进去一批新品类,就等于在这块本已排满的特征空间里再塞一批。空间不会变大,只能重新分配。
先分清三种坏法
同样是「扫错了」,至少三种原因,处理方式完全不同:
- 没覆盖。 这个品类从来没进过训练集,或者只进过寥寥几十张。表现是新品、新规格、新包装一律错,而且错得很稳定。
- 忘了。 老品类以前是准的,这次更新之后才错。这是本文要说的情况。
- 口径变了。 模型没变,但陈列位置、灯光、摄像头角度变了,或者验收用的那批图和上线时用的不是一套。
判断顺序很简单:先问「换版之前这个品对不对」。 对,就往 2 或 3 想;不对,是 1。
区分 2 和 3 的办法也不复杂:找一批老品类的照片——必须是从没进过训练集的,最好是上线后现场拍的——在新旧两个版本模型上各跑一遍。老版本对新版本错,是忘了;两个版本都错,是口径或者覆盖问题。
遗忘不是均匀掉的
把所有品类放在同一片特征空间里划边界,新样本进来会把这个边界推一推。推得最狠的地方,是新品和老品长得最像的那片区域。
所以门店里看到的现象往往很具体:
- 同系列换包装、同规格不同口味——新品和老品几乎是同一张图,边界本来就在中间;
- 联名款、季节限定——外观相似、只在配色或小图标上有差别;
- 同一品类的不同克重——袋子形状一样,只有角落的数字不同。
这几类老品会先错。而整体准确率只掉零点几个点,因为它们在总量里占比小。
这就是为什么「更新后准确率 96.8%,只掉了 0.4 个点」这句话在门店场景里没什么用——被吃掉的就是那 0.4 个点里最集中的一块。
什么样的店最容易撞上
- 品类变化频繁:零食、生鲜、季节商品。一年换三轮货架,模型就得跟着换三轮。
- 加盟体系:每家店的货不完全一样,总部训的模型到店总要打折,于是各店想自己加品类。
- 图片收不回总部:门店画面不便外传,或者带宽不够,只能就地增量。
这三件事同时成立的店,才会觉得「增量更新」是个真问题。只占一件的,全量重训通常更省事。
门店能做的三个动作
一、留一套回归集。 每个品类 30 到 50 张,上线第一天就冻结,永不进训练。这套图是判断「有没有忘」的唯一依据,比任何指标都可靠。它要有人负责,要跟模型版本一起存档。
二、更新前后各跑一遍,看混淆矩阵。 不看总分,看错误往哪儿跑。如果老品类的错误集中在新品类的名字上,基本可以确认是遗忘,不是别的毛病。
三、灰度。 先给一家店换,一周内每天抽二十单对账:收银员改了几次品名、改的是哪几个品。改单记录比模型日志更真实。
该问供应商的四个问题
- 这次更新是全量重训,还是只在新数据上继续训?
- 旧品类的回归集保不保留,谁维护,多久跑一次?
- 能不能给分品类的更新前后对比表?(只给整体数字,等于没给)
- 出问题能不能回滚到上一版模型,回滚需要多久,要不要到店操作?
第四问最容易被忽略。增量更新一旦变成每月一次,回滚能力就是门店唯一的保险。
什么时候不值得折腾
一年上新两次、品类稳定、图片能集中到总部——这种店做增量学习是给自己找事,全量重训更简单,也没有版本账要管。
增量值得投入的前提只有一个:品类变化快到每次全量重训都赶不上。 如果全量重训一周能做完,而你的上新节奏是一个季度一次,那么该优化的不是训练方法,是流程排期。