为什么在神经网络中使用偏置节点?

机器算法验证 机器学习 神经网络 偏置节点
2022-01-29 00:53:26
  1. 为什么在神经网络中使用偏置节点?
  2. 你应该使用多少?
  3. 您应该在哪些层中使用它们:所有隐藏层和输出层?
3个回答

神经网络中的偏置节点是一个始终“开启”的节点。也就是说,它的值设置为1不考虑给定模式中的数据。它类似于回归模型中的截距,并且具有相同的功能。如果神经网络在给定层中没有偏置节点,它将无法在下一层产生不同于0(在线性尺度上,或对应于变换的值0当通过激活函数时)当特征值是0.

在此处输入图像描述

考虑一个简单的例子:你有一个带有 2 个输入节点的前馈感知器x1x2, 和 1 个输出节点y. x1x2是二元特征并设置在它们的参考水平,x1=x2=0. 将这 2 相乘0是你喜欢的任何重量,w1w2,对产品求和并通过您喜欢的任何激活函数传递它。如果没有偏置节点,则只有一个输出值是可能的,这可能会产生非常差的拟合。例如,使用逻辑激活函数,y一定是.5,这对于对罕见事件进行分类是很糟糕的。

偏置节点为神经网络模型提供了相当大的灵活性。在上面给出的示例中,没有偏差节点的唯一可能预测比例是50%,但有一个偏置节点,任何比例(0,1)可以适合的模式x1=x2=0. 对于每一层,j,其中添加了一个偏置节点,偏置节点将添加Nj+1要估计的附加参数/权重(其中Nj+1是层中的节点数j+1)。要拟合的参数越多,意味着训练神经网络所需的时间相应地就越长。如果您没有比要学习的权重更多的数据,它还会增加过度拟合的机会。

考虑到这种理解,我们可以回答您的明确问题:

  1. 添加偏置节点以增加模型拟合数据的灵活性。具体来说,它允许网络在所有输入特征都等于时拟合数据0,并且很可能会降低数据空间中其他地方的拟合值的偏差。
  2. 通常,为输入层和前馈网络中的每个隐藏层添加一个偏置节点您永远不会向给定层添加两个或更多,但您可能会添加零。因此,总数很大程度上取决于您的网络结构,尽管可能需要考虑其他因素。(除了前馈之外,我不太清楚如何将偏置节点添加到神经网络结构中。)
  3. 大多数情况下已经涵盖了这一点,但要明确一点:您永远不会向输出层添加偏置节点;那没有任何意义。

在神经网络的背景下,批量标准化目前是制作智能“偏置节点”的黄金标准。不是钳制神经元的偏差值,而是调整神经元输入的协方差。因此,在 CNN 中,您将在卷积层和下一个全连接层(例如 ReLus)之间应用批量归一化。从理论上讲,所有完全连接的层都可以从批标准化中受益,但实际上这会变得非常昂贵,因为每个批标准化都带有自己的参数。

关于为什么,大多数答案已经解释了,特别是当输入将激活推到极端时,神经元容易受到饱和梯度的影响。在 ReLu 的情况下,这将被推到左边,梯度为 0。一般来说,当你训练一个模型时,你首先对神经网络的输入进行归一化。批量归一化是一种在神经网络内部层与层之间对输入进行归一化的方法。

简单,简短的答案:

  1. 转移输入功能/对学习功能更灵活。
  2. 每层一个偏置节点。
  3. 将它们添加到所有隐藏层和输入层 - 带有一些脚注

我的硕士论文(例如第 59 页)的几个实验中,我发现偏差可能对第一层很重要,但特别是在最后的全连接层中,它似乎并没有起到很大的作用。因此,人们可以在前几层而不是在最后几层拥有它们。只需训练一个网络,绘制偏置节点的权重分布,如果权重似乎太接近于零,则修剪它们。

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