【发布时间】:2020-01-14 03:25:50
【问题描述】:
我在最后一层创建了一个带有 sigmoid 激活函数的神经网络,所以我得到的结果介于 0 和 1 之间。我想将事物分为 2 个类,所以我检查“是数字 > 0.5,然后是类1 其他类 0"。都是基本的。
但是,我想说“它属于 0 类的概率是x,属于 1 类的概率是y”。
我该怎么做?
- 0.73 之类的数字是否告诉我它有 73% 的把握属于 1 类?然后 1-0.73 = 0.27 所以 27% 在 0 级?
- 当它是 0.27 时,这是否意味着它在 0 类中为 27%,在 1 类中为 73%?没有意义。
我是否应该使用 0.5 并查看“数字离中心有多远,然后就是百分比”?
还是我误解了NN的结果?
【问题讨论】:
-
传统的神经网络不是概率模型。虽然将 sigmoid 输出解释为概率是很常见的,但事实是,该值与概率的数学概念之间实际上没有任何联系。将 0.5 作为分割点很常见,但也将中间范围(例如 0.2-0.8)作为“不知道”。但这些都是启发式的。您可以使用ROC curve 来分析不同阈值会发生什么 - 这至少可以为您提供 TPR/FPR 方面的“概率”。
-
@jdehesa 是的,我有点想,模型只是学习“是这个还是那个”,而不是“这个是多少”。网上很多文章说“sigmoid 可以解释为概率,因为它在 0 和 1 之间!”让我感到困惑。然后不回答我上面的问题。我想我应该放弃这个想法,直接接受分类。感谢您提供指向更多信息的链接!
-
您应该注意,尽管在使用交叉熵损失进行训练的情况下,我们确实将 sigmoid 输出解释为 p(y=1),所以从某种意义上说,这种概率解释是“烘焙的”进入”网络。
标签: python tensorflow sigmoid