我正在编写自己的训练算法,但我不知道如何设置偏差权重。
我必须在任何层设置偏差吗?
必须在每一层更新偏差权重吗?
我正在编写自己的训练算法,但我不知道如何设置偏差权重。
我必须在任何层设置偏差吗?
必须在每一层更新偏差权重吗?
每个虚拟神经元都应该有一个偏置权重,因为它控制着神经元响应组合输入的阈值。因此,如果您的隐藏层有 100 个神经元,则该层有 100 个偏置权重。同样适用于每一层。
实施偏差时通常采用两种不同的方法。你可以做一个或另一个:
作为每一层的偏置权重的单独向量,具有用于计算梯度的不同(略微减少)逻辑。
作为权重矩阵中的附加列,将匹配列 1 添加到输入数据(或前一层输出),以便完全相同的代码计算偏置权重梯度并更新连接权重。
在这两种情况下,你只需要从神经元激活增量到偏置权重增量的反向传播计算,你不需要计算偏置的“激活”增量,因为它不是可以改变的东西,它总是 1.0。此外,偏差不会进一步将增量回馈给其他任何东西。
实际上,如果您有至少 1 个隐藏层的反向传播,则不需要偏差。例如,如果您的输入为零,您的前向传播将导致 0.5(对于 sigmoid),但您的反向传播将调整其权重,最终得到正确答案。