有多少神经网络对预测的过度自信可以归因于建模者优化基于阈值的指标?

机器算法验证 机器学习 可能性 神经网络 校准 计分规则
2022-03-31 07:17:52

神经网络“分类器”输出概率分数,当它们通过交叉熵损失(常见)或其他适当的评分规则进行优化时,它们会根据类成员的真实概率进行优化。

然而,我在 Cross Validated和其他地方读到过,神经网络因过于自信而臭名昭著。也就是说,他们会很乐意预测类似P(1)=0.9他们应该在什么时候预测P(1)=0.7, 这仍然有利于类1超课0但少了。

如果神经网络正在优化诸如交叉熵损失之类的正确评分规则,那怎么可能呢?

所有想到的是模型开发步骤优化了不正确的指标,如准确性。当然,交叉验证中的模型使用交叉熵损失拟合训练数据,但超参数经过调整以获得最高的样本外准确度,而不是最低的交叉熵损失。

(但后来我认为该模型对其预测的信心会降低。当您获得具有低置信度分类的正确分类时,为什么要对您的预测充满信心,例如0.7而不是像这样的高置信度分类0.9?)

2个回答

“如果神经网络正在优化诸如交叉熵损失之类的正确评分规则,这怎么可能?”

这很可能是训练数据的传统过拟合。深度神经网络可以实现径向基函数神经网络可以实现的任何映射(它们都是通用近似器)。考虑一个小数据集和高斯径向基函数宽度窄的问题。您可能能够直接在每个正模式上放置一个基函数,这样当您到达最近的负模式时,该值已降至接近零。该模型将给出每个类别成员的概率基本上为零或训练模式(可能过于自信)和训练集交叉熵为零。这意味着对于适当大的深度神经网络也将有一个零交叉熵解决方案(好在 DNN 的解决方案更难找到 - 有时局部最小值是一件好事)。

做出架构或超参数选择提供了更多过度拟合数据的方法,但我怀疑问题的最大部分是训练集的传统过度拟合,除非采取措施避免它。

顺便说一句,使用交叉熵作为模型选择标准来调整模型并非没有它自己的问题,例如,如果您有一个非常自信的错误分类,那么整个交叉熵将由该测试示例的贡献支配。稍微不那么敏感的东西,比如 Brier 分数可能会更好(如果不太令人满意)。

关于交叉熵损失(好吧,甚至是逻辑损失)有一些有趣的特性。

我们不仅要正确分类实例,还需要强大的选项

请检查以下示例,注意,对一个数据点进行弱分类和正确分类几乎与错误分类该点一样糟糕。

  import numpy as np

  def cross_entropy(pred_prob, target): 
      return -np.sum(np.log(pred_prob) * (target))

  target = np.array([1,0,0])

  pred_prob = np.array([1/3,1/3,1/3])
  print('3 classes, even dist\t',cross_entropy(pred_prob, target))

  pred_prob = np.array([0.3334,0.3333,0.3333])
  print('3 classes, weakly right \t',cross_entropy(pred_prob, target))

  pred_prob = np.array([0.3333,0.3333,0.3334])
  print('3 classes, weakly wrong \t',cross_entropy(pred_prob, target))

我也有一个相关的问题here

在分类中选择不同的损失函数来近似0-1损失有什么影响

此外,正如在另一个答案中所讨论的,模型确信错误的一个主要原因是过度拟合。

我最近对 ​​DNN 内部可能发生的事情有了一些有趣的想法。我认为本质上过度拟合的模型是在尝试学习一些“哈希函数”,而几乎不记得“有和目标”。

这样,很容易在训练数据中得到非常低的损失。而且这个“哈希”特定于某些训练示例,并且很可能过于自信并且在一个类上有非常强的选择。