如何在神经网络中使用“偏见”

时间:2016-04-19 17:00:40

标签: neural-network artificial-intelligence bias-neuron

现在已经有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是所有输入神经元,我正在迭代投掷输入神经元并在那里输出添加权重。 只是因为我做到了,我把我的起始值设置为偏见。

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

1 个答案:

答案 0 :(得分:0)

一般来说,偏差项应包含在前进和后退中。

我认为在你提到的第二页中,为了简单起见,在Forwardpropagation部分中省略了偏差项,并且仅在Backpropagation部分中解释了为什么我们需要额外的偏差项。

第一个看起来比第二个更有思想的教程。