如何更新neural network反向传播的偏见?

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

我读过不less书,但是找不到更新!

我明白,偏见是一个额外的input1附加一个权重(每个神经元)。 必须有一个公式。

谢谢,

@msw

最有趣的。 谢谢,我认为有两点好处:1.“如果你省略偏置项,那么具有最常用的隐层激活函数的多层感知器的”通用逼近“属性并不成立,但是Hornik(1993)没有偏差的通用逼近性质的充分条件是没有激发函数的导数在原点处消失,这意味着在通常的S形激活函数中,可以使用固定的非零偏差项而不是可训练的偏差。 2.可以像其他权重一样学习偏差项。“所以我要么join一个”恒定的权重“,要么像使用梯度下降一样训练这个权重。

我理解对吗?

根据1996年罗哈斯(Rojas)1996第7章的标注,反向传播计算误差函数E (也称为成本,又名损失)的偏导数,

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

其中w[i,j]是神经元ij之间的连接的权重, j在networking中比i高一层, o[i]o[i]的输出(激活)input层“,这就是正在考虑的训练样本中的特征i的值)。 如何确定delta是在任何教科书给出,并取决于激活function,所以我不会在这里重复。

这些值可以用于重量更新,例如

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

其中gamma是学习率。

偏好权重的规则是非常相似的,除了没有来自上一层的input。 相反,偏倚(概念上)是由固定激活1的神经元input引起的。因此,偏倚权重的更新规则是

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

其中bias[j]是神经元j上的偏差的权重,与1的乘法显然可以省略,并且gamma_bias可以被设置为gamma或不同的值。 如果我记得正确,较低的价值是首选,虽然我不知道这个理论的理由。

您更改每个个人体重和偏差的数额将是您的成本函数与每个个人体重和每个个体偏差的偏导数。

 ∂C/∂(index of bias in network) 

由于您的成本函数可能并不明确地取决于个人权重和价值(例如,成本可能相等(networking输出 – 预期产出)^ 2),您需要将每个权重和偏差的偏导数与您知道,即神经元的激活值(输出)。 这是一个很好的指导:

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

本指南阐述了如何清楚地做这些事情,但有时可能缺乏解释。 在阅读上面链接的指南时,我发现阅读本书第1章和第2章非常有帮助:

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

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

基本上,偏差的更新方式与更新权重的方式相同:根据多维点上成本函数的梯度确定更改。

想想你的networking正在试图解决的问题是一个多维的山丘和山谷(梯度)的景观。 这个景观是一个graphics表示,你的成本如何随着权重和偏差的变化而变化。 neural network的目标是达到这个景观的最低点,从而find最小的成本和最小的误差。 如果您将您的networking想象为旅行者试图达到这些梯度的底部(即梯度下降),那么您将改变每个重量(和偏差)的量与倾斜的斜率(函数的梯度)相关,旅客正在爬下来 旅行者的确切位置由多维坐标点(weight1,weight2,weight3,… weight_n)给出,偏差可以被认为是另一种权重。 将networking的权重/偏差看作networking成本函数的variables,就可以清楚地知道必须使用∂C/∂(networking偏差指数)。