我知道梯度下降和反向传播算法。我不明白的是:什么时候使用偏见是重要的,你如何使用它?

例如,在映射AND函数时,当我使用两个输入和一个输出时,它不会给出正确的权重。然而,当我使用三个输入(其中一个是偏差)时,它给出了正确的权重。


当前回答

术语偏差用于调整最终输出矩阵,就像y截距一样。例如,在经典方程y = mx + c中,如果c = 0,那么直线将始终经过0。添加偏差项为我们的神经网络模型提供了更大的灵活性和更好的泛化。

其他回答

偏见是我们的锚。对我们来说,这是一种设定底线的方式,我们不会低于这个标准。从图的角度来看,y=mx+b就像这个函数的y轴截距。

输出=输入乘以权重值并加上偏置值,然后应用激活函数。

术语偏差用于调整最终输出矩阵,就像y截距一样。例如,在经典方程y = mx + c中,如果c = 0,那么直线将始终经过0。添加偏差项为我们的神经网络模型提供了更大的灵活性和更好的泛化。

如果您正在处理图像,实际上可能更喜欢完全不使用偏置。从理论上讲,这样你的网络将更独立于数据量,比如图片是暗的,还是亮的和生动的。网络将通过研究你的数据中的相对性来学习它的工作。很多现代神经网络都利用了这一点。

对于其他有偏差的数据可能是至关重要的。这取决于你要处理什么类型的数据。如果您的信息是大小不变的——如果输入[1,0,0.1]应该会导致与输入[100,0,10]相同的结果,那么没有偏差可能会更好。

我认为偏见几乎总是有益的。实际上,偏差值允许您将激活函数向左或向右移动,这可能对成功学习至关重要。

看一个简单的例子可能会有所帮助。考虑这个无偏差的1输入1输出网络:

网络的输出是通过将输入(x)乘以权重(w0)并将结果传递给某种激活函数(例如sigmoid函数)来计算的。

下面是这个网络计算的函数,对于不同的w0值:

改变权重w0本质上改变了s型曲线的“陡度”。这很有用,但是如果你想让x = 2时网络输出0呢?仅仅改变s型曲线的陡度是行不通的——你希望能够将整条曲线向右平移。

这正是偏差允许你做的。如果我们给这个网络加上一个偏差,像这样:

...然后网络的输出变成sig(w0*x + w1*1.0)。下面是不同w1值的网络输出:

如果w1的权值为-5,曲线就会向右平移,这样当x = 2时,网络的输出就会为0。

一个更简单的理解偏差的方法是:它在某种程度上类似于线性函数的常数b

y = ax + b

它允许你上下移动这条线,以便更好地将预测与数据相匹配。

如果没有b,直线总是经过原点(0,0)你可能会得到一个较差的拟合。