首页 文章

如何更新神经网络反向传播中的偏差?

提问于
浏览
58

有人可以向我解释如何在整个反向传播中更新偏见吗?

我读了不少书,但找不到偏见更新!

我知道偏差是1的额外输入,附加了一个重量(对于每个神经元) . 必须有一个公式 .

谢谢,

@msw

最有趣的 . 谢谢,我认为有两个好点:1 . “如果省略偏差项,多层感知器的”通用近似“属性与最常用的隐藏层激活函数不成立 . 但Hornik(1993)证明了没有偏差的通用逼近性质的充分条件是激活函数的衍生物在原点处没有消失,这意味着利用通常的S形激活函数,可以使用固定的非零偏置项代替可训练的偏差 . 2.偏差项可以像其他权重一样学习 . “所以我要么增加'恒定权重',要么像所有其他权重一样使用梯度下降训练这个权重 .

我理解对吗?

2 回答

  • 56

    Rojas 1996, chapter 7的表示法之后,反向传播计算误差函数的偏导数 E (又名成本,又称损失)

    ∂E/∂w[i,j] = delta[j] * o[i]
    

    其中 w[i,j] 是神经元之间连接的权重 ijj 在网络中比 i 高一层, o[i]i 的输出(激活)(在"input layer"的情况下,这只是特征 i 的值)在正在考虑的培训样本中) . 如何确定 delta 在任何教科书中给出并取决于激活功能,所以我在此不再重复 .

    然后可以将这些值用于权重更新,例如,

    // update rule for vanilla online gradient descent
    w[i,j] -= gamma * o[i] * delta[j]
    

    其中 gamma 是学习率 .

    The rule for bias weights 非常相似,只是前一层没有输入 . 相反,偏差是(概念上)由来自具有固定激活1的神经元的输入引起的 . 因此,偏差权重的更新规则是

    bias[j] -= gamma_bias * 1 * delta[j]
    

    其中 bias[j] 是神经元 j 上的偏差的权重,显然可以省略与1的乘法,并且 gamma_bias 可以设置为 gamma 或不同的值 . 如果我没记错的话,较低的值是首选,但我不确定理论上的理由 .

  • 2

    您更改每个体重和偏差的金额将是您的成本函数与每个个体体重和每个个体偏差相关的偏导数 .

    ∂C/∂(index of bias in network)
    

    由于您的成本函数可能没有明确地依赖于单个权重和值(例如,成本可能相等(网络输出 - 预期输出)^ 2),您需要将每个权重和偏差的偏导数与您的某些内容联系起来知道,即神经元的激活值(输出) . 这是一个很好的指南:

    https://medium.com/@erikhallstrm/backpropagation-from-the-beginning-77356edf427d

    本指南说明了如何清楚地完成这些工作,但有时可能缺乏解释 . 当我阅读上面链接的指南时,我发现阅读本书的第1章和第2章非常有帮助:

    http://neuralnetworksanddeeplearning.com/chap1.html(提供问题答案的基本背景)

    http://neuralnetworksanddeeplearning.com/chap2.html(回答你的问题)

    基本上,偏差的更新方式与更新权重的方式相同:基于多维点处的成本函数的梯度确定变化 .

    想想你的网络试图解决的问题是多维丘陵和山谷(渐变)的景观 . 此格局是您的成本如何随着权重和偏差的变化而变化的图形表示 . 神经网络的目标是达到这个环境中的最低点,从而找到最小的成本并最小化误差 . 如果你想象你的网络作为旅行者试图达到这些梯度的底部(即梯度下降),那么你将改变每个权重(和偏差)的数量与倾斜的斜率(函数的梯度)有关旅行者目前正在攀爬 . 旅行者的确切位置由多维坐标点(weight1,weight2,weight3,... weight_n)给出,其中偏差可以被认为是另一种重量 . 将网络的权重/偏差视为网络成本函数的变量,可以清楚地表明必须使用∂C/∂(网络中的偏差指数) .

相关问题