为啥偏差比权重更频繁地变化?

Posted

技术标签:

【中文标题】为啥偏差比权重更频繁地变化?【英文标题】:why biases change more frequent then weights?为什么偏差比权重更频繁地变化? 【发布时间】:2020-01-03 03:23:52 【问题描述】:

我正在可视化网络中完全连接部分的偏差和权重。 我看到偏差比权重更频繁地变化,我试图理解它的含义。 在这两种情况下,我只是将权重和偏差呈现为直方图。

我们在这里看到: 偏差是 1x256 参数。 weights 是 256X512 个参数的矩阵。

可能是由于大量数字恰好落在相同的箱子中,重量在可视化中几乎没有变化的原因吗?可以更好地可视化权重学习吗?或者还有其他原因。

网络的另一部分连接 16 个神经元 1 个神经元。

【问题讨论】:

【参考方案1】:

我猜这可能是由梯度消失问题引起的。如果您查看反向传播算法,您会看到权重的梯度是通过链式法则计算的,例如,this:

在哪里

所以,如果最后一层的输出值非常接近于0,那么权重的梯度也会接近于0。这样一来,权重的更新幅度就不会很大。然而,另一方面,偏差不会受到这个问题的影响,因为偏差在反向传播期间不受先前层的影响。

不熟悉的可以上网搜索一下梯度消失问题的原因。

【讨论】:

我对这些层进行了批量标准化,此外我的激活函数是 elu。我真的不知道我怎么会遭受渐变消失的痛苦 您的输入标准化了吗? @夜行者 我的输入没有标准化,输入是图像,我在收到它们时将它们输入网络。 @NightWalker 只需尝试img /= 255.,如果它的 RGB 为 0-255 与规范化相同的故事没有任何改变。

以上是关于为啥偏差比权重更频繁地变化?的主要内容,如果未能解决你的问题,请参考以下文章

Fine-Tuning DistilBertForSequenceClassification:不是在学习,为啥loss没有变化?权重没有更新?

重新选择 - 如何确定哪个参数发生了变化?

敏捷流程

敏捷开发模式

张量流不训练(只有偏差改变)

敏捷开发综述