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

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


当前回答

在我研究的所有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是一个整数。

其他回答

单独修改神经元WEIGHTS只用于操纵传递函数的形状/曲率,而不是它的平衡/零交叉点。

引入偏置神经元允许您沿着输入轴水平(左/右)移动传递函数曲线,同时保持形状/曲率不变。 这将允许网络产生不同于默认值的任意输出,因此您可以自定义/移动输入到输出映射以满足您的特定需求。

请看这里的图表解释: http://www.heatonresearch.com/wiki/Bias

在我研究的所有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是一个整数。

在我的硕士论文中的几个实验中(例如第59页),我发现偏差可能对第一层很重要,但特别是在最后的完全连接层,它似乎没有发挥很大的作用。

这可能高度依赖于网络架构/数据集。

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

看一个简单的例子可能会有所帮助。考虑这个无偏差的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截距一样。例如,在经典方程y = mx + c中,如果c = 0,那么直线将始终经过0。添加偏差项为我们的神经网络模型提供了更大的灵活性和更好的泛化。