如何使用反向传播算法更新偏见和偏见的重量
-
16-10-2019 - |
题
我正在编写自己的培训算法,但我不知道如何设定偏见。
我是否在任何一层设置偏见?
偏置重量是否必须在每一层中进行更新?
解决方案
每个虚拟神经元都应控制神经元对组合输入的阈值时,应该有一个偏差的重量。因此,如果您的隐藏层具有100个神经元,那就是该层的100个偏差权重。同样适用于每一层。
实施偏见时通常采用两种不同的方法。您可以做一个或另一个:
作为每一层偏置权重的单独矢量,用于计算梯度的不同(略微降低)逻辑。
作为权重矩阵中的附加列,将1的匹配列添加到输入数据(或先前的图层输出)中,因此完全相同的代码计算偏置权重梯度和更新与连接权重。
在这两种情况下,您仅进行从神经元激活增量到偏置权重deltas的反向传播计算,您不需要计算偏差的“激活” delta,因为它不能改变,它总是1.0。同样,偏见并不能进一步贡献其他任何事情。
其他提示
实际上,如果至少有1个隐藏层的背部传播,则不需要偏差。例如,如果您的输入为零,则您的正向传播将导致0.5(对于Sigmoid),但是您的背部传播将调整其重量,最终您最终获得正确的答案。