我知道梯度下降和反向传播算法。我不明白的是:什么时候使用偏见是重要的,你如何使用它?
例如,在映射AND函数时,当我使用两个输入和一个输出时,它不会给出正确的权重。然而,当我使用三个输入(其中一个是偏差)时,它给出了正确的权重。
我知道梯度下降和反向传播算法。我不明白的是:什么时候使用偏见是重要的,你如何使用它?
例如,在映射AND函数时,当我使用两个输入和一个输出时,它不会给出正确的权重。然而,当我使用三个输入(其中一个是偏差)时,它给出了正确的权重。
当前回答
在神经网络中:
每个神经元都有一个偏向 您可以将偏差视为阈值(通常是阈值的相反值) 输入层的加权和+偏置决定神经元的激活 偏差增加了模型的灵活性。
在没有偏差的情况下,仅考虑来自输入层的加权和可能不会激活神经元。如果神经元没有被激活,来自该神经元的信息就不会通过神经网络的其余部分传递。
偏见的价值是可以学习的。
实际上,bias = - threshold。你可以把偏差想象成让神经元输出1有多容易,如果偏差很大,神经元输出1很容易,但如果偏差很大,就很难了。
总而言之:偏置有助于控制激活函数的触发值。
观看这段视频了解更多细节。
一些更有用的链接:
Geeksforgeeks
走向数据科学
其他回答
我认为偏见几乎总是有益的。实际上,偏差值允许您将激活函数向左或向右移动,这可能对成功学习至关重要。
看一个简单的例子可能会有所帮助。考虑这个无偏差的1输入1输出网络:
网络的输出是通过将输入(x)乘以权重(w0)并将结果传递给某种激活函数(例如sigmoid函数)来计算的。
下面是这个网络计算的函数,对于不同的w0值:
改变权重w0本质上改变了s型曲线的“陡度”。这很有用,但是如果你想让x = 2时网络输出0呢?仅仅改变s型曲线的陡度是行不通的——你希望能够将整条曲线向右平移。
这正是偏差允许你做的。如果我们给这个网络加上一个偏差,像这样:
...然后网络的输出变成sig(w0*x + w1*1.0)。下面是不同w1值的网络输出:
如果w1的权值为-5,曲线就会向右平移,这样当x = 2时,网络的输出就会为0。
神经网络中没有偏差的一层只不过是输入向量与矩阵的乘法。(输出向量可以通过一个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)你可能会得到一个较差的拟合。
单独修改神经元WEIGHTS只用于操纵传递函数的形状/曲率,而不是它的平衡/零交叉点。
引入偏置神经元允许您沿着输入轴水平(左/右)移动传递函数曲线,同时保持形状/曲率不变。 这将允许网络产生不同于默认值的任意输出,因此您可以自定义/移动输入到输出映射以满足您的特定需求。
请看这里的图表解释: http://www.heatonresearch.com/wiki/Bias
偏差有助于得到更好的方程。
想象一下,输入和输出就像一个函数y = ax + b,你需要在输入(x)和输出(y)之间画一条正确的线,以最小化每个点和直线之间的全局误差,如果你保持这样的方程y = ax,你将只有一个参数用于适应,即使你找到了最小化全局误差的最佳参数,它也会离你想要的值很远。
你可以说,偏差使方程更灵活,以适应最佳值