为什么 CNN 有时会犯高度自信的错误,如何解决这个问题?

人工智能 卷积神经网络 张量流 喀拉斯 贝叶斯深度学习 不确定性量化
2021-11-15 19:37:27

我在 MNIST 手写数字数据库上训练了一个简单的 CNN,准确率达到 99%。我正在输入一堆手写数字,以及文档中的非数字。

我希望 CNN 报告错误,因此我设置了一个 90% 确定性的阈值,低于该阈值我的算法假定它正在查看的不是数字。

我的问题是 CNN 100% 确定了许多不正确的猜测。在下面的示例中,CNN 报告 100% 确定它是 0。我如何让它报告失败?

手写数字输入 - 看起来不像数字

我对此的看法:也许 CNN 并不能 100% 确定这是零。也许它只是认为它不能是其他任何东西,并且它被迫选择(因为输出向量的归一化)。在我强迫它选择之前,有什么方法可以让我深入了解 CNN 的“想法”吗?

PS:我在带有 Python 的 Tensorflow 上使用 Keras。

编辑

因为有人问。这是我的问题的背景:

这来自我应用启发式算法来分割连接数字序列。在上图中,左边的部分实际上是一个 4,右边是一个没有底的 2 的曲线位。该算法应该逐步执行分段切割,当它找到一个可靠的匹配时,删除该切割并继续沿着序列移动。它在某些情况下非常有效,但当然它完全依赖于能够判断它正在查看的内容是否与数字不匹配。这是一个很好的例子。

用于手写数字识别的各种输入图像

我的下一个最佳选择是对所有排列进行推断并最大化组合得分。那更贵。

4个回答

您正在寻找的概念称为认知不确定性,也称为模型不确定性。您希望模型产生有意义的校准概率,量化模型的真实置信度。

这对于简单的神经网络来说通常是不可能的,因为它们根本没有这个属性,为此你需要一个贝叶斯神经网络 (BNN)。这种网络学习权重分布而不是标量或逐点权重,然后允许对模型不确定性进行编码,因为然后输出的分布被校准并具有您想要的属性。

这个问题也称为分布外 (OOD) 检测,同样可以使用 BNN 完成,但不幸的是,训练完整的 BNN 是难以处理的,因此我们使用近似值。

作为参考,这些近似之一是 Deep Ensembles,它在同一数据集中训练模型的多个实例,然后平均 softmax 概率,并且具有良好的分布检测特性。在这里查看论文,特别是第 3.5 节,它显示了基于集合概率熵的 OOD 结果。

您的分类器专门学习0与其他数字不同 的方式,而不是数字为零的真正含义

从哲学上讲,您可以说该模型在受限于严格控制的领域时似乎具有某种强大的理解力,但是只要您在工作中投入任何形式的扳手,就会掀起该外观。

从数学上讲,您可以说该模型只是针对从特定分布中提取的数据优化分类指标,而当您为其提供来自不同分布的数据时,所有赌注都将失败。

首选的答案是收集或生成数据,例如您希望模型处理的数据(实际上,这样做所需的工作量可能因应用程序而异)。在这种情况下,这可能涉及绘制一堆随机涂鸦并将它们添加到您的训练数据集中。在这一点上,您必须问,现在我如何标记它们?您将需要一个新的“其他”或“非数字”类,以便您的模型可以学习将这些涂鸦与数字分开分类。重新训练后,您的模型现在应该可以更好地处理这些情况。

然而,你可能会问,但如果我给它数字的彩色图像呢?还是农场动物的彩色图像?也许猪会被归类为零,因为它们是圆形的。这个问题是深度学习编排方式的一个基本属性。您的模型不具备高阶逻辑能力,这意味着只需向其投掷最轻微的曲线球,它似乎就会从非常聪明变成非常愚蠢。目前,深度学习所做的只是识别数据中的模式,使其能够最小化一些损失函数。

深度学习是一个很棒的工具,但不是一个万能的万能工具。请记住它的局限性并在适当的地方使用它,它会为您服务。

破碎的假设

泛化依赖于做出强有力的假设(没有免费的午餐等)。如果你打破你的假设,那么你就不会玩得开心。像 MNIST 这样的标准数字识别分类器的一个关键假设是您正在对实际包含单个数字的图片进行分类。如果您的真实数据包含非数字的图片,那么这意味着您的真实数据与训练数据相似,但在概念上非常非常不同。

如果这是一个问题(在这种情况下),那么解决这个问题的一种方法是明确打破该假设并训练一个模型,该模型不仅可以识别数字 0-9,而且还可以识别是否有数字,并且能够提供回答“那不是数字”,所以是 11 类分类器而不是 10 类分类器。MNIST 训练数据不足以解决此问题,但您可以使用某种“干扰因素”数据来提供非数字示例。例如,您可以使用一些字母数据集(可能省略 I、l、O 和 B)转换为看起来类似于 MNIST 数据。

天启,

这是一个深思熟虑的回应。特别是对“0-ness”本质的哲学讨论。

我实际上并没有进行过这个实验,所以请自告奋勇......我想知道“其他”类的实际效果如何。“其他”与“数字”不同的方式具有无限的可变性(或至少其唯一的限制是输入层的基数)。

NN 决定某物是属于一个类还是多个不同的类。如果在其他“非数字”之间没有共同的本质,我认为它不会很好地将“其他”识别为所有分类置信度低的东西。

这种方法仍然不能确定什么是非数字”。它确定了所有“其他”事物与其他标记输入的不同之处——可能很差,这取决于“非数字”标记数据的可变性。(即所有随机涂鸦的数字是否详尽,多次重复?) 想法?