【发布时间】:2018-06-08 21:21:21
【问题描述】:
我有一个针对分类任务训练的神经网络,它正在学习,尽管它的准确度不高。我试图找出它对哪些测试示例没有信心,以便我可以更深入地了解正在发生的事情。
为了做到这一点,我决定在 Tensorflow 中使用标准的 softmax 概率。为此,我调用了tf.nn.softmax(logits),并使用了此处提供的概率。我注意到很多时候概率是 99%,但预测仍然是错误的。因此,即使我只考虑预测概率高于 99% 的示例,我的准确率也很差,仅比我原来的准确率高 2-3%。
有没有人知道为什么网络对错误的预测如此自信?我还是深度学习的新手,所以正在寻找一些想法来帮助我。
另外,使用 softmax 概率是确定神经网络预测置信度的正确方法吗?如果没有,有没有更好的方法?
谢谢!
编辑:从下面的答案来看,我的网络似乎表现不佳。除了查看置信度之外,还有其他方法可以识别网络做出的哪些预测可能是错误的(因为置信度似乎效果不佳)?
【问题讨论】:
-
有时,在使用错误的初始化程序时会发生这种情况。如果初始化器给最后一层的权重一个太高的方差,那么很有可能一个类的 logit 值比所有其他类高得多,这在 softmax 之后转化为高置信度。您可能想尝试其他初始化程序:tensorflow.org/api_guides/python/contrib.layers#Initializers
-
虽然不是只有一个类有很高的置信度,只是在很多情况下错误的类(可能是任何一个)具有很高的置信度。如果有帮助的话,这也是一个文本理解问题。我目前正在使用 Xavier Initializer,但会尝试其他的。
标签: tensorflow machine-learning neural-network deep-learning