将 S 形结果解释为神经网络中的概率



我在最后一层创建了一个带有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 的结果?

正如Teja所指出的,简短的答案是否定的,但是,根据您使用的损失,它可能比您想象的更接近事实。

想象一下,您尝试训练您的网络将数字区分为两个任意类别,即beautifulugly。假设您的输入数字是01,并且0s 被标记为ugly的概率0.2,而1s 被标记为ugly的概率0.6

想象一下,你的神经网络将 s 和1s0作为输入,将它们传递到某些层中,并以 softmax 函数结束。如果您的损失是二进制交叉熵,那么网络的最佳解决方案是在看到输入0时输出0.2,在看到输入1时输出0.6(这是交叉熵的属性,当您输出每个标签的真实概率时,它会最小化(。因此,您可以将这些数字解释为概率。

当然,现实世界的例子并不容易,而且通常是确定性的,所以解释有点棘手。但是,我相信只要您使用交叉熵作为损失,将您的结果视为概率并不是完全错误的。

对不起,这个答案不是非黑即白的,但现实有时很复杂;)

Does a number like 0.73 tell me it's 73% sure to be in class 1? And then 1-0.73 = 0.27 so 27% in class 0?

答案是否定的。当我们使用 Sigmoid 函数时,结果的总和不会为 1.类的结果总和可能会小于 1,或者在某些情况下会大于 1。

在同样的情况下,当我们使用 softmax 函数时。所有输出的总和将加为 1。

最新更新