【问题标题】:Does the place of the sigmoid function matter in neural network?sigmoid 函数在神经网络中的位置重要吗?
【发布时间】:2017-07-11 02:38:59
【问题描述】:

我正在尝试使用带有自定义损失的 Keras 在 python 中构建神经网络,我正在徘徊是否在最后一层使用 sigmoid 函数作为激活函数,在自定义损失的开头使用 sigmoid 是否相同或不。所以这就是我的意思:

我有一种感觉,在第二个模型中计算了损失,但它没有通过 sigmoid 反向传播,而在第一个模型中它是。那正确吗?

【问题讨论】:

  • 您能否提供一个您正在使用的代码 - 这真的很有趣。

标签: neural-network keras backpropagation


【解决方案1】:

确实,在第二种情况下,反向传播不会通过 sigmoid。在损失函数内部更改数据是一件非常糟糕的事情。

这样做是一件坏事的原因是,您将在输出上反向传播一个错误,这不是网络正在犯的真正错误。

用一个简单的案例来解释自己: 你有二进制形式的标签说张量[0, 0, 1, 0] 如果您的 sigmoid 在您的自定义损失函数中,您的输出可能看起来像这样[-100, 0, 20, 100], 损失中的 sigmoid 将把它转换成看起来像 tihs 的东西:[0, 0.5, 1, 1] 将被反向传播的错误将是[0, -0.5, 0, -1]。反向传播将考虑 sigmoid,您将直接将此错误应用于输出。您可以看到误差的大小根本不反映输出误差的大小:最后一个值为 100,应该在负区域,但模型会在该层反向传播 -1 的小误差。

总而言之,sigmoid 必须在网络中,以便在反向传播错误时将其考虑在内。

【讨论】:

  • 太棒了!谢谢你的回答我真的很感激
猜你喜欢
  • 1970-01-01
  • 2017-06-20
  • 2017-07-28
  • 1970-01-01
  • 2014-03-26
  • 2012-07-25
  • 1970-01-01
  • 2020-08-30
  • 2016-09-19
相关资源
最近更新 更多