有人可以向我解释在整个反向传播过程中如何更新偏差吗?
我已经读了很多书,但是找不到偏差更新!
我了解到,偏见是1的额外输入,并带有权重(对于每个神经元)。必须有一个公式。
有人可以向我解释在整个反向传播过程中如何更新偏差吗?
我已经读了很多书,但是找不到偏差更新!
我了解到,偏见是1的额外输入,并带有权重(对于每个神经元)。必须有一个公式。
Answers:
按照Rojas 1996第7章的说明,反向传播计算误差函数的偏导数E
(即成本,即损失)
∂E/∂w[i,j] = delta[j] * o[i]
其中,w[i,j]
是神经元i
和之间的连接权重j
,j
是网络中比更高的一层i
,o[i]
是i
(在“输入层”的情况下的)输出(激活),这只是i
训练样本在以下条件下的特征值考虑)。如何确定delta
是在任何教科书中给出的,并且取决于激活功能,因此在此不再赘述。
然后可以将这些值用于体重更新,例如
// update rule for vanilla online gradient descent
w[i,j] -= gamma * o[i] * delta[j]
gamma
学习率在哪里?
偏差权重的规则非常相似,只是前一层没有输入。取而代之的是,(从概念上)偏差是由来自固定激活值为1的神经元的输入引起的。因此,偏差权重的更新规则为
bias[j] -= gamma_bias * 1 * delta[j]
其中bias[j]
,对神经元的偏倚权重为j
1,显然可以省略与1的乘法,并且gamma_bias
可以设置为gamma
或设置为其他值。如果我没记错的话,最好使用较低的值,尽管我不确定这样做的理论依据。
1
在l
这一层的激活中包括了层的偏见()?我的意思是,如果是这样,则可以将layer中权重的更新(l
包括其偏差的权重)写为一个公式:w(l) -= gamma * dot( delta(l+1), o(l))
,对吗?
您更改每个单独的权重和偏差的量将是成本函数相对于每个单独的权重和每个偏差的偏导数。
∂C/∂(index of bias in network)
由于您的成本函数可能并不明确地取决于各个权重和值(例如,成本可能等于(网络输出-预期输出)^ 2),因此您需要将每个权重和偏差的偏导数与您所需要的东西相关联知道,即神经元的激活值(输出)。这是执行此操作的绝佳指南:
https://medium.com/@erikhallstrm/backpropagation-from-the-beginning-77356edf427d
本指南阐明了如何清楚地执行这些操作,但有时可能缺乏解释。当我阅读上面链接的指南时,我发现阅读本书的第一章和第二章非常有帮助:
http://neuralnetworksanddeeplearning.com/chap1.html (提供回答问题的必要背景)
http://neuralnetworksanddeeplearning.com/chap2.html (回答您的问题)
基本上,偏差的更新方法与权重的更新方法相同:更改是基于多维点上成本函数的梯度确定的。
考虑一下您的网络试图解决的问题,因为它是多维丘陵和山谷(渐变)的景观。这种情况是权重和偏差不断变化时成本变化的图形表示。神经网络的目标是到达此景观中的最低点,从而找到最小的成本并使错误最小化。如果您将网络想象成试图到达这些梯度底部的旅行者(即“梯度下降”),那么将改变每个权重(和偏差)的量与倾斜度(函数的梯度)有关旅行者当前正在下降。旅行者的确切位置由多维坐标点(weight1,weight2,weight3,... weight_n)给出,在该坐标点上,偏差可以视为另一种重量。