猿问

卷积层中的偏差真的会影响测试精度吗?

我知道在小型网络中需要偏置来改变激活函数。但是,对于具有多个CNN层,池化,丢失和其他非线性激活的Deep网络而言,Bias是否真的有所作为 卷积滤波器正在学习局部特征,并且对于给定的 conv 输出通道使用相同的偏差。

这不是对这个链接的欺骗。上面的链接仅说明了偏差在小型神经网络中的作用,并未尝试说明偏差在包含多个CNN层,辍学,合并和非线性激活函数的深层网络中的作用。

我进行了一个简单的实验,结果表明从 conv 层去除偏差对最终测试精度没有影响。 训练了两个模型,测试准确率几乎相同(没有偏差的一个稍微好一点。)

  • model_with_bias,

  • model_without_bias(在conv层中没有添加偏差)

它们是否仅用于历史原因?

如果使用偏差不能提高准确性,我们不应该忽略它们吗?要学习的参数更少。

如果有人比我有更深的知识,可以解释深层网络中这些偏见的重要性(如果有的话),我将不胜感激。

输出:

已初始化

测试精度(有偏差):90.5%

测试准确率(无偏差):90.6%


繁星淼淼
浏览 523回答 2
2回答

RISEBY

通过学习算法(例如梯度下降),可以将偏差与权重一起进行调整。偏差与权重的不同之处在于它们独立于先前各层的输出。从概念上讲,偏差是由来自固定激活值为1的神经元的输入引起的,因此可以通过减去增量值和学习率的乘积来更新偏差。在大型模型中,去除偏置输入几乎没有什么区别,因为每个节点都可以从其所有输入的平均激活中生成偏置节点,根据大数定律,这将是大致正常的。在第一层,发生这种情况的能力取决于您的输入分布。例如,对于MNIST,输入的平均激活大致恒定。在小型网络上,您当然需要一个偏置输入,但是在大型网络上,删除它几乎没有什么区别。尽管在大型网络中没有什么区别,但仍取决于网络体系结构。例如在 LSTM 中:LSTM 的大多数应用程序只是用小的随机权重初始化 LSTM,这在许多问题上都很好。但是此初始化有效地将忘记门设置为0.5。这会导致消失的梯度(每时间步长为0.5),每当长期依赖性特别严重时,就会引起问题。通过简单地将遗忘门偏置初始化为较大的值(例如1或2)即可解决此问题。通过这样做,遗忘门将被初始化为接近1的值,从而实现梯度流动。

慕后森

在大多数网络中,在 conv 层之后都有一个 batchnorm 层,它有一个偏差。因此,如果您有一个 batchnorm 层,则没有任何收益。请参阅: 不能在卷积层中同时使用偏差和批量归一化否则,从数学的角度来看,您正在学习不同的功能。但是,事实证明,特别是如果您有一个非常复杂的网络来解决一个简单的问题,则可能会在没有偏见的情况下实现几乎与有偏见相同的事情,而最终会使用更多的参数。根据我的经验,使用比所需参数多2到4倍的参数很少会损害深度学习的性能-特别是如果您进行正则化。因此,很难注意到任何差异。但是,您可能会尝试使用很少的通道(我认为网络的深度不如卷积的通道数重要)并查看偏差是否会产生影响。我猜是这样。
随时随地看视频慕课网APP

相关分类

Python
我要回答