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

时间:2010-09-23 02:27:50

标签: math machine-learning artificial-intelligence neural-network

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

我读过很多书,但找不到偏见更新!

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

谢谢,

@msw

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

我理解对吗?

3 个答案:

答案 0 :(得分:62)

遵循Rojas 1996, chapter 7的符号,反向传播计算误差函数E的偏导数(又称成本,又称损失)

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

其中w[i,j]是神经元ij之间连接的权重,j在网络中比i高一层,{ {1}}是o[i]的输出(激活)(在“输入图层”的情况下,这只是正在考虑的训练样本中的要素i的值)。如何确定i在任何教科书中给出并取决于激活功能,所以我在此不再重复。

然后可以在权重更新中使用这些值,例如

delta

其中// update rule for vanilla online gradient descent w[i,j] -= gamma * o[i] * delta[j] 是学习率。

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

gamma

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

答案 1 :(得分:4)

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

∂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/∂(网络中的偏差指数)。

答案 2 :(得分:1)

我理解偏置的功能是对 输入值。下面是神经元内部发生的事情。当然是激活函数 将产生最终输出,但为了清楚起见,它被省略了。

  • O = W1 I1 + W2 I2 + W3 I3

在真实的神经元中,突触处已经发生了一些事情,输入数据根据样本的平均值进行水平调整,并根据样本的偏差进行缩放。因此,输入数据被归一化,并且具有相同的权重,它们将产生相同的效果。归一化的In 是根据原始数据in 计算的(n 是索引)。

  • Bn = average(in); Sn = 1/stdev((in); In= (in+Bn)Sn

然而,这没有必要单独执行,因为神经元权重和偏差可以完成相同的功能。当你用 in 代替 In 时,你会得到新的公式

  • O = w1 i1 + w2 i2 + w3 i3+ wbs

最后一个 wbs 是偏差和新权重 wn 以及

  • wbs = W1 B1 S1 + W2 B2 S2 + W3 B3 S3
  • wn =W1 (in+Bn) Sn

因此存在偏差,它将/应该通过反向传播自动调整