偏差在神经网络中的作用是什么?
artificial-intelligence
machine-learning
neural-network
7
0

我知道梯度下降和反向传播算法。我没有得到的是:什么时候使用偏见很重要,以及如何使用它?

例如,在映射AND函数时,当我使用2个输入和1个输出时,它不能给出正确的权重,但是,当我使用3个输入(其中1个是偏差)时,它给出正确的权重。

参考资料:
Stack Overflow
收藏
评论
共 10 个回答
高赞 时间 活跃

可以在训练ANN的过程中调整两种不同的参数,权重和激活函数中的值。这是不切实际的,如果只调整其中一个参数,则会更容易。为了解决这个问题,发明了一种偏向神经元。偏向神经元位于一层,与下一层中的所有神经元相连,但在上一层中没有,它始终发出1。由于偏向神经元发出1,因此将与偏向神经元相连的权重直接添加到就像激活函数中的t值一样,其他权重的总和(等式2.1)。 1个

之所以不切实际是因为您同时调整了权重和值,因此权重的任何更改都可以抵消对先前数据实例有用的值的更改...添加不更改值的偏差神经元允许您可以控制图层的行为。

此外,偏差允许您使用单个神经网络来表示类似情况。考虑以下神经网络表示的AND布尔函数:

人工神经网络
(来源: aihorizon.com

  • w0对应于b
  • w1对应于x1
  • w2对应于x2

单个感知器可用于表示许多布尔函数。

例如,如果我们假设布尔值分别为1(true)和-1(false),则使用双输入感知器实现AND功能的一种方法是设置权重w0 = -3,而w1 = w2 = .5。通过将阈值更改为w0 = -.3,可以使此感知器表示OR功能。实际上,“与”和“或”可以看作是n个函数中的m个的特例:也就是说,在感知器n个输入中至少m个必须为真的函数。 OR函数对应于m = 1,而AND函数对应于m = n。通过将所有输入权重设置为相同的值(例如0.5),然后相应地设置阈值w0,可以使用感知器轻松表示n的m个功能。

感知器可以表示所有原始布尔函数AND,OR,NAND(1 AND)和NOR(1 OR)。机器学习-汤姆·米切尔(Tom Mitchell)

阈值是偏差,而w0是与偏差/阈值神经元相关的权重。

收藏
评论

神经网络中没有偏差的一层无非就是输入向量与矩阵的乘积。 (输出向量可能会通过S型函数进行标准化,然后再用于多层ANN中,但这并不重要。)

这意味着您正在使用线性函数,因此全零的输入将始终映射到全零的输出。对于某些系统,这可能是一个合理的解决方案,但总的来说,它过于严格。

使用偏差,可以有效地向输入空间添加另一个维度,该维度始终取值为1,因此避免输入全零的向量。这样您就不会失去任何一般性,因为您训练有素的权重矩阵不需要是排斥的,因此它仍然可以映射到以前可能的所有值。

2D ANN:

对于将二维映射到一维的ANN,例如在再现AND或OR(或XOR)函数时,您可以认为神经元网络可以执行以下操作:

在2d平面上标记输入向量的所有位置。因此,对于布尔值,您需要标记(-1,-1),(1,1),(-1,1),(1,-1)。您的ANN现在要做的是在2d平面上绘制一条直线,将正输出与负输出值分开。

没有偏差,该直线必须经过零,而有偏差,则可以将其任意放置。因此,您将看到没有偏见,您会遇到AND函数的问题,因为您不能同时将(1,-1) (-1,1)都置于负数。 (他们不允许行。)问题是相等的或功能。但是,存在偏差时,容易划清界线。

注意,那种情况下的XOR函数即使有偏差也无法解决。

收藏
评论

仅修改神经元权重仅能操纵传递函数的形状/曲率 ,而不是其平衡/零交叉点。

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

有关图形说明,请参见此处: http : //www.heatonresearch.com/wiki/Bias

收藏
评论

偏差决定您希望体重旋转多少角度。

在二维图中,权重和偏差可帮助我们找到输出的决策边界。假设我们需要构建AND函数,则input(p)-output(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章“感知器学习规则”

收藏
评论

偏差不是NN术语,而是要考虑的通用代数术语。

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

现在,如果C(Bias) = 0 ,则直线将始终通过原点,即(0,0) ,并且仅取决于一个参数,即M ,这是斜率,因此我们需要处理的事情更少。

C是偏差,可以取任意数字,并且可以移动图表,因此可以表示更复杂的情况。

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

这是NN贴图中打开和关闭神经元的最终激活层。偏差在这里也可以发挥作用,它可以灵活地移动曲线以帮助我们绘制模型。

收藏
评论

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

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

简单网络

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

这是网络针对w 0的各种值计算的函数:

网络输出,给定不同的w0权重

改变权重w 0本质上改变了S形的“硬度”。这很有用,但是如果您希望网络在x为2时输出0,该怎么办?仅仅改变S型曲线的陡度是不能起作用的- 您希望能够将整个曲线向右移动

这正是偏差允许您执行的操作。如果我们向该网络添加偏见,如下所示:

有偏见的简单网络

...然后网络的输出变为sig(w 0 * x + w 1 * 1.0)。这是w 1的各种值的网络输出结果:

网络输出,给定不同的w1权重

w 1的权重为-5时,曲线向右移动,这使我们拥有一个在x为2时输出0的网络。

收藏
评论

该线程确实帮助我开发了自己的项目。这是一些进一步的说明,显示了一个简单的2层前馈神经网络在二变量回归问题上有无偏置单元的结果。权重随机初始化,并使用标准ReLU激活。正如我面前的答案所得出的那样,在没有偏差的情况下,ReLU网络无法在(0,0)处偏离零。

在此处输入图片说明

在此处输入图片说明

收藏
评论

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

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

收藏
评论

使用ANN时,您几乎不了解要学习的系统内部。没有偏见就无法学到一些东西。例如,看一下以下数据:(0,1),(1,1),(2,1),基本上是一个将x映射为1的函数。

如果您具有单层网络(或线性映射),则找不到解决方案。但是,如果您有偏见,那是微不足道的!

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

收藏
评论

只是加上我的两分钱。

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

y =轴+ b

它使您可以上下移动线以更好地将预测与数据拟合。如果没有b,则直线始终穿过原点(0,0),因此拟合度可能会较差。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号