反向传播的阈值
Thresholds in backpropagation
反向传播算法中的阈值有什么用。我为class标签识别写了一个java代码。我为神经元使用了一些随机阈值 (0-1)。我训练了系统并使用一些 data.It 进行了测试,效果非常好。但是算法使用或不使用阈值有什么区别。
你所说的"thresholds"实际上是神经元表示的仿射变换中的偏差
f(w,x,b) = g(<w,x>+b)
偏差不应像您建议的那样用作常量,而应像网络中的任何其他参数一样进行训练。通常人们只是简单地添加一个假设的 "bias neuron" 总是等于 1,因此偏差就变成了另一个权重
f(w,x,b) = g(<[w b], [x 1]>)
为什么有偏见很重要?一般来说,没有偏差意味着在你的神经元中训练的 "filters"(特征检测器)必须经过原点。您可以将每个神经元视为输入 space 中的一个超平面,围绕它 "fold" space 以便您的数据变得更加可分离。如果你没有偏见 - 所有这些超平面都在原点处关闭。如果您将它们固定为常量 - 您可以固定它们与原点的距离。最后,如果你训练它们——算法可以自由地将它们放在输入中 space(期望的行为)。
反向传播算法中的阈值有什么用。我为class标签识别写了一个java代码。我为神经元使用了一些随机阈值 (0-1)。我训练了系统并使用一些 data.It 进行了测试,效果非常好。但是算法使用或不使用阈值有什么区别。
你所说的"thresholds"实际上是神经元表示的仿射变换中的偏差
f(w,x,b) = g(<w,x>+b)
偏差不应像您建议的那样用作常量,而应像网络中的任何其他参数一样进行训练。通常人们只是简单地添加一个假设的 "bias neuron" 总是等于 1,因此偏差就变成了另一个权重
f(w,x,b) = g(<[w b], [x 1]>)
为什么有偏见很重要?一般来说,没有偏差意味着在你的神经元中训练的 "filters"(特征检测器)必须经过原点。您可以将每个神经元视为输入 space 中的一个超平面,围绕它 "fold" space 以便您的数据变得更加可分离。如果你没有偏见 - 所有这些超平面都在原点处关闭。如果您将它们固定为常量 - 您可以固定它们与原点的距离。最后,如果你训练它们——算法可以自由地将它们放在输入中 space(期望的行为)。