如何在神经网络中使用 "Bias"

How to use the "Bias" in Neuronal Networks

现在 2 周以来,我一直在使用神经元网络。我的激活函数是普通的 sigmoid 函数,但有一件事,我在网上看过,但发现了不同的解释方式。

目前我正在将所有输入值与其权重相乘相加,然后添加偏差(这是负阈值)。我从 http://neuralnetworksanddeeplearning.com/chap1#sigmoid_neurons 中获取了所有这些 这一切对我来说都很好,但后来我找到了这个页面:http://www.nnwj.de/backpropagation.html

在正向传播部分根本没有使用偏差,我认为应该使用它,所以请告诉我,我是不是傻了才看到他们在那里做了什么或者哪一页是错误的?

for(int v = 0; v < outputs[i].X; v++){
    outputs[i].set(v, biases[i].get(v));
        for(int k = 0; k < outputs[i-1].X; k++){
            outputs[i].increase(v, weights[i].get(v,k) * outputs[i-1].get(k));
        }
    outputs[i].set(v, sigmoid( outputs[i].get(v)));

System.out.println("Layer :" + i + "    Neuron :" + v + "    bias :" + biases[i].get(v) + "   value :" + outputs[i].get(v));

        }

这是我计算代码的代码,但是一个神经元的部分在这部分完成:

outputs[i].set(v, biases[i].get(v));
for(int k = 0; k < outputs[i-1].X; k++){
    outputs[i].increase(v, weights[i].get(v,k) * outputs[i-1].get(k));
}
outputs[i].set(v, sigmoid( outputs[i].get(v)));

可能你无法理解我在那里到底做了什么,但我只是代表我的层,k 是所有输入神经元,我正在迭代输入神经元并在输出中添加权重。 就在我这样做之前,我将我的起始值设置为偏差。

如果你能帮我解决这个问题我会很高兴,我也很抱歉我的英语不好:)

一般来说,偏置项应该包含在正向和反向传递中。

我认为在第二页中,为了简单起见,前向传播部分省略了你提到的偏置项,只有在反向传播部分才解释了为什么我们需要额外的偏置项。

第一个看起来比第二个更贴心。