【问题标题】:Does a Neural Network with Sigmoid Activation use Thresholds?具有 Sigmoid 激活的神经网络是否使用阈值?
【发布时间】:2012-09-06 11:52:00
【问题描述】:

我在这里有点困惑。我刚开始研究神经网络的主题,我构建的第一个使用了 Step-Activation,每个神经元都有阈值。现在我不想实现 sigmoid 激活,但似乎这种类型的激活不使用阈值,只使用神经元之间的权重。但是在我找到的关于这方面的信息中有阈值的词,只是我找不到它们应该在激活函数中的位置。

在神经网络的 sigmoid 激活函数中是否使用了阈值?

【问题讨论】:

  • 在我看来,您找到的信息是指将 偏置信号 作为阈值。默认情况下,sigmoid 的阈值可以被认为是 0(即 y=0.5,如 Kendall Frey 的回答中所述)。偏差是神经元的恒定输入,它有效地在 x 轴上移动 sigmoid 函数。

标签: artificial-intelligence neural-network threshold


【解决方案1】:

没有像步激活那样的离散跳转。阈值可以被认为是 sigmoid 函数为 0.5 的点。一些 sigmoid 函数会将其设置为 0,而有些会将其设置为不同的“阈值”。

阶梯函数可以被认为是 sigmoid 函数的一个版本,其陡度设置为无穷大。在这种情况下有一个明显的阈值,对于不太陡峭的 sigmoid 函数,阈值可以认为是函数值为 0.5 的地方,或最大陡度的点。

【讨论】:

  • 是否应该在学习过程中更改权重的同时编辑陡度因子?
  • 如果你这样做了,你应该比改变重量慢一个数量级。
  • 阈值也可以被视为多类或二元分类任务的工具,您可能希望控制精度或召回率。
【解决方案2】:

不需要。 Sigmoid 曲线本身部分可以作为阈值。

【讨论】:

  • 所以基本上每个神经元都是一样的?只是与其他神经元的其他连接?
  • 可以的。网络仍然可以学习和做任何你教它做的事情。在分类全/全无时,您最终只应用真实的硬阈值。
  • @BorisStitnicky 我试图用 sigmoid 编写一个简单的感知器,没有阈值,但它似乎没有学习 XOR。它有一个隐藏层。我应该只介绍分类神经元的阈值吗?如果是,我该如何更新?
  • 这可能会解决您的问题,也可能不会,具体取决于您的学习算法。当然,这是一个错误,但在这种情况下,它会有多个解决方案。显然,如果你想教它 XOR,你必须在最后应用阈值,因为 XOR 有 0/1 输出。但更让我担心的是你的学习算法。你从来没有说过是你自己写的还是你用的是什么。如果你碰巧会说 Ruby,试试ai4r,他们有示例代码,慢慢修改以适应你的需要。
【解决方案3】:

Sigmoid函数的值在[0;1]范围内,以0.5为阈值,如果h(theta) < 0.5我们假设它的值是0,如果h(theta) >= 0.5那么它是1

阈值仅用于网络的输出层,并且仅在分类时使用。因此,如果您尝试在 4 个类之间进行分类,则输出层有 4 个节点 y = [y1,y2,y3,y4],您将使用此阈值分配 y[i] 10

【讨论】:

  • 使用 0.5 作为阈值是否总是“最佳”,或者是否应该在某些验证数据上学习阈值?在我的测试中,0.5 比学习最佳阈值(在平均正分和负分之间取中间值)效果更好。但我不确定是否总是这样。
猜你喜欢
  • 1970-01-01
  • 2018-05-16
  • 2014-11-26
  • 1970-01-01
  • 2017-12-03
  • 2017-01-14
  • 2021-02-05
  • 2012-12-14
  • 2017-03-30
相关资源
最近更新 更多