1

的与反向传播神经网络,我们正在与直传完成后,下一步就是计算输出神经元的误差。下图显示了输出神经元的误差为δ = z - y。反向传播的全文可以在here找到。 我得到这部分。错误输出神经元

MLP Neural Net with backpropagation

如果神经元的激活功能是sigmoid function,我已经在其他article的错误不应该被计算为一个简单的区别读取,而这将是δ = y*(1-y)*(z - y)

可能有人熟悉这解释了这背后的理由吗?为什么有乙状结肠激活功能结果在误差计算成为: δ = y*(1-y)*(z - y),不再为:δ = (z - y)

唯一类似的问题,我发现这个问题是this,但是提问者并没有问为什么错误的计算是这样的。

回答

1

忘掉所有这些时髦的名称作为back propagation,没什么比数学优化的简单TAKS更多。优化成本函数的一种可能的方法 - 使用梯度下降迭代算法,使用它应该知道目标函数的导数。即你应该知道如何改变你的参数来最小化某些功能。幸运的是,从某种意义上来说,如果你改变一些参数,你的函数将如何改变。

你的情况,当你有两个不同的优化任务。

第一目标函数是enter image description here索引i表示从数据集中特定样品。

enter image description here

但是,如果你添加双曲线函数到你的假设enter image description here

您应该根据自己Chain_rule计算你deriviative因为sigmoid函数是非线性的。

enter image description here

enter image description here

enter image description here

所以:

enter image description here

+0

啊,这个推导非常有意义!谢谢!在那里我感到困惑的是,从文本中不清楚'δ'与偏导数'∂E/∂yi'是否相同。感谢详细的解释。 – vsnyc

0

使用δ = (z - y)作为作为误​​差函数假定期望输出是1或0(单位应或者最大限度地被激活或者根本不被激活)。该错误功能用于输出单位。然而,隐藏层单位并不意味着被最大程度地/最小程度地激活 - 它们的激活应该被非常精确地定义。因此,误差函数必须使用sigmoid函数的导数传播误差,产生最终公式δ = y*(1-y)*(z - y)