我已经使用卷积神经网络 (CNN) 有一段时间了,主要是用于语义分割/实例分割的图像数据。我经常将网络输出的 softmax 可视化为“热图”,以查看某个类的每像素激活有多高。我将低激活解释为“不确定”/“不自信”,将高激活解释为“确定”/“自信”预测。基本上,这意味着将 softmax 输出(在内的值)解释为模型的概率或(非)确定性度量。
(例如,我已经解释了一个在其像素上平均具有低 softmax 激活的对象/区域对于 CNN 来说很难检测到,因此 CNN 对于预测这种对象是“不确定的”。)
在我看来,这通常是有效的,并且在训练结果中添加额外的“不确定”区域样本可以改善这些结果。然而,我现在经常从不同方面听到使用/解释 softmax 输出作为(非)确定性度量不是一个好主意,通常不鼓励。为什么?
编辑:为了澄清我在这里问什么,我将详细说明我迄今为止在回答这个问题时的见解。但是,以下论点都没有让我明白**为什么这通常是一个坏主意**,正如同事、主管反复告诉我的那样,并且在“1.5”节中也有说明
在分类模型中,在管道末端获得的概率向量(softmax 输出)经常被错误地解释为模型置信度
或在“背景”部分:
尽管将卷积神经网络的最终 softmax 层给出的值解释为置信度分数可能很诱人,但我们需要注意不要对此进行过多解读。
上面的原因是使用 softmax 输出作为不确定性度量是不好的,因为:
对真实图像的不可察觉的扰动可以将深度网络的 softmax 输出更改为任意值
这意味着 softmax 输出对“不可察觉的扰动”并不稳健,因此它的输出不能用作概率。
另一篇论文提出了“softmax 输出 = 置信度”的想法,并认为有了这种直觉,网络很容易被愚弄,产生“无法识别的图像的高置信度输出”。
(...) 对应于特定类的区域(在输入域中)可能比该区域中该类的训练示例所占用的空间大得多。这样做的结果是,图像可能位于分配给某个类别的区域内,因此在 softmax 输出中被分类为具有较大的峰值,同时仍远离训练集中该类别中自然出现的图像。
这意味着远离训练数据的数据永远不应获得高置信度,因为模型“无法”确定它(因为它从未见过)。
然而:这通常不是简单地质疑整个 NN 的泛化特性吗?即,具有 softmax 损失的 NN 不能很好地推广到(1)“不可察觉的扰动”或(2)远离训练数据的输入数据样本,例如无法识别的图像。
按照这个推理,我仍然不明白,为什么在实践中没有抽象和人为改变的数据与训练数据(即大多数“真实”应用程序)相比,将 softmax 输出解释为“伪概率”是不好的主意。毕竟,它们似乎很好地代表了我的模型所确定的内容,即使它不正确(在这种情况下,我需要修复我的模型)。模型不确定性不总是“仅”一个近似值吗?