我正在编写自己的培训算法,但我不知道如何设定偏见。

我是否在任何一层设置偏见?

偏置重量是否必须在每一层中进行更新?

有帮助吗?

解决方案

每个虚拟神经元都应控制神经元对组合输入的阈值时,应该有一个偏差的重量。因此,如果您的隐藏层具有100个神经元,那就是该层的100个偏差权重。同样适用于每一层。

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

  1. 作为每一层偏置权重的单独矢量,用于计算梯度的不同(略微降低)逻辑。

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

在这两种情况下,您仅进行从神经元激活增量到偏置权重deltas的反向传播计算,您不需要计算偏差的“激活” delta,因为它不能改变,它总是1.0。同样,偏见并不能进一步贡献其他任何事情。

其他提示

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

许可以下: CC-BY-SA归因
scroll top