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

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


当前回答

当您使用ann时,您很少了解您想要学习的系统的内部结构。有些东西没有偏见是学不来的。例如,看一下下面的数据:(0,1),(1,1),(2,1),基本上是一个将任何x映射到1的函数。

如果你有一个单层网络(或线性映射),你无法找到解决方案。然而,如果你有偏见,那就无关紧要了!

在理想情况下,偏差还可以将所有点映射到目标点的平均值,并让隐藏的神经元模拟该点的差异。

其他回答

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

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

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

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

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

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

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

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

偏差不是一个神经网络项。这是一个通用的代数术语。

Y = M*X + C(直线方程)

现在如果C(Bias) = 0,那么这条线将始终经过原点,即(0,0),并且只依赖于一个参数,即M,这是斜率,所以我们有更少的东西可以处理。

C,也就是偏置取任意数,都能移动图形,因此能够表示更复杂的情况。

在逻辑回归中,目标的期望值通过链接函数进行转换,以限制其值为单位区间。这样,模型预测可以被视为主要结果概率,如下所示:

Wikipedia上的Sigmoid函数

这是神经网络映射中打开和关闭神经元的最后一个激活层。在这里,偏差也发挥了作用,它灵活地平移曲线,帮助我们绘制模型。

神经网络中没有偏差的一层只不过是输入向量与矩阵的乘法。(输出向量可以通过一个sigmoid函数进行归一化,然后用于多层人工神经网络,但这并不重要。)

这意味着你在使用一个线性函数,因此一个全0的输入将总是映射到一个全0的输出。对于某些系统,这可能是一个合理的解决方案,但一般来说,它的限制太大了。

使用偏置,可以有效地为输入空间增加另一个维度,它总是取值1,因此可以避免输入向量全为0。你不会因此失去任何一般性,因为你训练的权重矩阵不需要是满射的,所以它仍然可以映射到之前可能的所有值。

二维安:

对于一个将二维映射到一维的ANN,就像在复制AND或or(或XOR)函数一样,你可以把一个神经元网络想象成做以下事情:

在二维平面上标记输入向量的所有位置。为布尔值,你想标记(1,1),(1,1),(1,1),(1,1)。你的人工神经网络现在做的是在二维平面上画一条直线,把正输出和负输出分开。

如果没有偏差,这条直线必须经过零,而有偏差,你可以把它放在任何地方。 因此,您将看到,如果没有偏差,您将面临与函数的问题,因为您不能同时将(1,-1)和(-1,1)放在负一侧。(他们不允许在线。)对于OR函数,问题是相等的。然而,有了偏见,就很容易划清界限。

请注意,在这种情况下,异或函数即使有偏差也无法求解。

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

y = ax + b

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

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

在我研究的所有ML书籍中,W总是被定义为两个神经元之间的连通性指数,这意味着两个神经元之间的连通性更高。

放电神经元向目标神经元或Y = w * X传递的信号越强,为了保持神经元的生物学特性,我们需要保持1 >= w >= -1,但在实际回归中,w最终会变成| w | >=1,这与神经元的工作方式相矛盾。

因此,我提出W = cos(theta),而1 >= |cos(theta)|, Y= a * X = W * X + b而a = b + W = b + cos(theta), b是一个整数。