鲁棒性与可解释性

分布外检测(out-of-distribution detection)

/ owt-uv-dis-truh-BYOO-shun dee-TEK-shun /

分布外检测,是教模型认出一个输入「不像它训练过的任何东西」——并据实说出来,而不是硬猜。想象一位只见过成年病人的医生,突然被递来一张狗的X光片。明智的回应是「这不是我的专长」,而非一个信心满满的诊断。可大多数机器学习模型默认就缺这份明智:递给它一个胡乱的输入,它照样会挑出自己认为最可能的标签,并仿佛笃定无疑地报告出来。

目标,是造一个「门卫」:把落在训练分布之外的输入标记出来——一种模型从未见过的新疾病、一个出故障的传感器读数、一张属于其词汇表里根本不存在类别的图像——好让系统能够弃权、转交人类、或求援。方法五花八门:从盯着模型有多自信,到衡量某个输入在模型内部表示中离「训练样本那团云」有多远,再到专门训练一个「正常长什么样」的检测器。

它最要紧的地方,是那些「自信地答错」会酿成危险之处:一个撞见自身训练范围之外病症的医疗AI、一辆面对着与其数据迥异场景的自动驾驶车。但要说实话——分布外检测是真的难,远谈不上解决。深度模型在古怪输入上以「过度自信」而臭名昭著,有时甚至给纯噪声打出的信心分,比给真实数据还高。一个完美的检测器,本质上要求模型知道「它所不知道的一切」的完整形状,而这是没有任何方法能做到的。

一个只在手写数字0到9上训练过的分类器,被给看一个手写字母「A」。由于没有「以上皆非」这个选项,它必须用某个数字来作答——而一个朴素的模型常会回答,比如「7」,且信心高达99%。一个好的分布外检测器则会拉响警报:这个输入,不属于它认识的任何一个数字。

没有「我不知道」这个选项,分类器就只能把每一个输入硬塞进某个已知的格子里。

有一个著名的反直觉结果:在某个图像数据集上训练的深度生成模型,给一个来自完全不同数据集的图像打出的「似然」,竟可能比给它自己的训练数据还高。这件事的教训是:模型原始的信心,对于「这东西熟不熟悉?」是一个糟糕、有时甚至是反过来的信号——分布外检测需要专门的、经过审慎验证的方法。

又称
OOD detectionnovelty detection分布外检测OOD检测分布外偵測