如何使用反向传播算法更新偏差和偏差的权重

数据挖掘 机器学习 神经网络 反向传播
2021-10-08 08:36:47

我正在编写自己的训练算法,但我不知道如何设置偏差权重。

我必须在任何层设置偏差吗?

必须在每一层更新偏差权重吗?

2个回答

每个虚拟神经元都应该有一个偏置权重,因为它控制着神经元响应组合输入的阈值。因此,如果您的隐藏层有 100 个神经元,则该层有 100 个偏置权重。同样适用于每一层。

实施偏差时通常采用两种不同的方法。你可以做一个或另一个:

  1. 作为每一层的偏置权重的单独向量,具有用于计算梯度的不同(略微减少)逻辑。

  2. 作为权重矩阵中的附加列,将匹配列 1 添加到输入数据(或前一层输出),以便完全相同的代码计算偏置权重梯度并更新连接权重。

在这两种情况下,你只需要从神经元激活增量到偏置权重增量的反向传播计算,你不需要计算偏置的“激活”增量,因为它不是可以改变的东西,它总是 1.0。此外,偏差不会进一步将增量回馈给其他任何东西。

实际上,如果您有至少 1 个隐藏层的反向传播,则不需要偏差。例如,如果您的输入为零,您的前向传播将导致 0.5(对于 sigmoid),但您的反向传播将调整其权重,最终得到正确答案。