反向传播 - 偏置节点和误差

机器算法验证 机器学习 神经网络 反向传播
2022-04-01 14:06:36

我正在实现 Tom Mitchell 的机器学习书中的反向传播的随机梯度下降版本,其中包含每个训练实例的步骤:x,t

  1. 输入实例并计算每个单元的输出xouu
  2. 对于每个输出单元,计算误差kδk=ok(1ok)(tkok)
  3. 对于每个隐藏单元,计算误差hδh=oh(1oh)koutputs(wkhδk)
  4. 更新每个权重wji=wji+ηδjxji

我想在输入层和隐藏层都有偏差单元。偏置单元是否像任何其他单元一样被处理,特别是偏置单元是否具有与之相关的如果我在 Matlab 中使用矩阵实现,我会简单地将偏置连接到和隐藏层的输出向量吗?δx

2个回答

为简单起见,通过扩展输入向量添加一个始终为 1 的分量,将偏置单元包含在方程中。具体而言,

x=(x1,...,xn,1)
以便每个单元的激活可以重写为,
ai=j=1Nwijxj+wi0=j=0Nwijxj

您可以在论文神经网络及其应用中看到反向传播规则的详细推导

偏置单元没有传入权重,因此您不需要计算每个偏置单元的梯度(您可以计算它,但它不会用于任何后续计算)。只需要输出偏差权重的梯度。对于任何训练算法都是如此,而不仅仅是 SGD。