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

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


当前回答

偏差决定了你的体重旋转的角度。

在二维图表中,权重和偏差可以帮助我们找到输出的决策边界。

假设我们需要构建一个AND函数,输入(p)-输出(t)对应该是

{p=[0,0], t=0},{p=[1,0], t=0},{p=[0,1], t=0},{p=[1,1], t=1}

现在我们需要找到一个决策边界,理想的边界应该是:

看到了吗?W垂直于边界。因此,我们说W决定了边界的方向。

但是,第一次找到正确的W是很困难的。大多数情况下,我们随机选择原始W值。因此,第一个边界可能是这样的:

现在边界平行于y轴。

我们要旋转边界。如何?

通过改变W。

因此,我们使用学习规则函数W'=W+P:

W'=W+P等价于W'=W+ bP,而b=1。

因此,通过改变b(bias)的值,就可以决定W’和W之间的夹角,这就是“ANN的学习规则”。

你也可以阅读Martin T. Hagan / Howard B. Demuth / Mark H. Beale的《神经网络设计》,第4章“感知器学习规则”。

其他回答

简单来说,偏差允许学习/存储越来越多的权重变化……(注:有时给出一些阈值)。无论如何,更多的变化意味着偏差为模型的学习/存储权重添加了更丰富的输入空间表示。(更好的权重可以增强神经网络的猜测能力)

例如,在学习模型中,假设/猜测在给定输入的情况下被y=0或y=1所限制,可能是在某个分类任务中……例如,对于某些x=(1,1),有些y=0,对于某些x=(0,1),有些y=1。(假设/结果的条件是我上面谈到的阈值。注意,我的示例设置输入X为每个X =一个双值或2值向量,而不是Nate的某个集合X的单值X输入)。

如果我们忽略偏差,许多输入可能最终由许多相同的权重表示(即学习的权重大多出现在原点附近(0,0)。 这样,模型就会被限制在较差的好权重上,而不是在有偏差的情况下更好地学习更多的好权重。(学习不好的权重会导致更差的猜测或神经网络的猜测能力下降)

因此,模型既要在靠近原点的地方学习,又要在阈值/决策边界内尽可能多的地方学习,这是最优的。有了偏差,我们可以使自由度接近原点,但不限于原点的直接区域。

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

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

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

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

偏差有助于得到更好的方程。

想象一下,输入和输出就像一个函数y = ax + b,你需要在输入(x)和输出(y)之间画一条正确的线,以最小化每个点和直线之间的全局误差,如果你保持这样的方程y = ax,你将只有一个参数用于适应,即使你找到了最小化全局误差的最佳参数,它也会离你想要的值很远。

你可以说,偏差使方程更灵活,以适应最佳值

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

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

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