更新:更好地解决问题.
我试图以XOR神经网络为例来理解反向传播算法.对于这种情况,有2个输入神经元+ 1个偏置,隐藏层中的2个神经元+ 1个偏置,以及1个输出神经元.
A B A XOR B 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1
我正在使用随机反向传播.
在阅读了一点之后我发现输出单元的错误传播到隐藏层...最初这是令人困惑的,因为当你到达神经网络的输入层时,每个神经元都会得到一个错误调整来自隐藏层中的两个神经元.特别是,首先很难掌握错误的分配方式.
步骤1计算每个输入实例的输出.
步骤2计算输出神经元(在我们的例子中只有一个)和目标值(s)之间的误差:
步骤2 http://pandamatak.com/people/anand/771/html/img342.gif
步骤3我们使用步骤2中的错误计算每个隐藏单元的错误h:
步骤3 http://pandamatak.com/people/anand/771/html/img343.gif
"权重kh"是隐藏单元h和输出单元k之间的权重,这是令人困惑的,因为输入单元没有与输出单元相关联的直接权重.在盯着公式几个小时后,我开始思考求和意味着什么,并且我开始得出结论,连接到隐藏层神经元的每个输入神经元的权重乘以输出误差并总结.这是一个合乎逻辑的结论,但公式似乎有点令人困惑,因为它清楚地说明了'权重kh'(在输出层k和隐藏层h之间).
我在这里正确理解了一切吗?任何人都可以证实吗?
什么是输入层的O(h)?我的理解是每个输入节点有两个输出:一个进入隐藏层的第一个节点,另一个进入第二个节点隐藏层.应该将两个输出中的哪一个插入O(h)*(1 - O(h))
公式的一部分?
第3步http://pandamatak.com/people/anand/771/html/img343.gif
你在这里发布的教程实际上做错了.我仔细检查了Bishop的两本标准书和我的两个工作实现.我将在下面指出确切的位置.
要记住的一件重要事情是,您始终在搜索单位或重量的误差函数的导数.前者是增量,后者是你用来更新权重的.
如果您想了解反向传播,您必须了解链规则.这都是关于链规则的.如果您不知道它是如何工作的,请查看维基百科 - 这并不难.但是一旦你理解了这些推导,一切就会到位.诺言!:)
∂E/∂W可以通过链规则组成∂E/∂o∂o/∂W.∂o/∂W很容易计算,因为它只是单位激活/输出相对于权重的导数.∂E/∂o实际上就是我们所说的增量.(我假设E,o和W是这里的矢量/矩阵)
我们确实将它们用于输出单元,因为这是我们可以计算误差的地方.(大多数情况下,我们有一个误差函数,其下降到(t_k - o_k)的delta,例如,对于线性输出,则为二次误差函数;对于逻辑输出,则为交叉熵.)
现在的问题是,我们如何获得内部单位的衍生品?好吧,我们知道单位的输出是所有输入单位的总和,它们的权重和之后的转移函数的应用加权.所以o_k = f(sum(w_kj*o_j,对于所有j)).
所以我们做的是,相对于o_j派生o_k.由于delta_j =∂E/∂o_j=∂E/∂o_k∂o_k/∂o_j=delta_k∂o_k/ o_j.所以给定delta_k,我们可以计算delta_j!
我们开工吧.o_k = f(sum(w_kj*o_j,对于所有j))=>∂o_k/∂o_j= f'(sum(w_kj*o_j,对于所有j))*w_kj = f'(z_k)*w_kj.
对于S形传递函数的情况,这变为z_k(1-z_k)*w_kj.(这是教程中的错误,作者说o_k(1 - o_k)*w_kj!)
我不确定你的问题是什么,但我实际上已经完成了这个教程,我可以向你保证,除了一个明显的错字之外,没有任何不正确之处.
我将假设您的问题是因为您对反向传播隐藏的 delta 如何导出感到困惑.如果这确实是你的问题那么请考虑
alt text http://pandamatak.com/people/anand/771/html/img334.gif
你可能会对作者如何得出这个等式感到困惑.这实际上是多变量链规则的直接应用.即,(以下内容来自维基百科)
"假设z = f(u,v)的每个参数都是双变量函数,使得u = h(x,y)和v = g(x,y),并且这些函数都是可微分的.链规则看起来像:
"
现在想象一下通过归纳论证扩展链规则
E(Z" 1,Z" 2,...,Z" Ñ)其中Z" ķ是第k个输出层预活化的输出,和z" ķ(瓦特ジ),其是说,E是一个函数在Z"和Z"本身就是W的功能姬(如果这样做没有意义的,你首先想到的应用直接推广到n个变量的链式法则非常仔细地考虑一个NN是如何设置.):
δE(Z ' 1,Z' 2,...,Z ' Ñ)/ΔW ジ =Σ ķ δE/ΔZ' ķ ΔZ" ķ/ΔW ジ
这是最重要的一步,笔者再次应用链式法则,这个时间的总和内扩大ΔZ" ķ/ΔW 姬来看,这是
ΔZ" ķ/ΔW ジ = ΔZ" ķ/ΔO Ĵ ΔO Ĵ/ΔZ Ĵ ΔZ Ĵ/ΔW ジ.
如果您在理解链规则时遇到困难,您可能需要学习多元微积分课程,或阅读教科书中的这一部分.
祝好运.