输出神经元的错误

时间:2015-11-19 17:37:28

标签: machine-learning neural-network backpropagation perceptron

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

MLP Neural Net with backpropagation

如果神经元的激活函数是sigmoid function,我在另一个article中读到错误不应该被计算为一个简单的区别,而是δ = y*(1-y)*(z - y)

熟悉这个的人可以解释一下这背后的理由吗?为什么使用sigmoid激活函数会导致错误计算变为: δ = y*(1-y)*(z - y)而不再是:δ = (z - y)

我在这个问题上找到的唯一类似问题是this,但提问者没有问为什么错误是这样计算的。

2 个答案:

答案 0 :(得分:1)

忘记所有这些时髦的名字back propagation,它只不过是简单的数学优化。优化成本函数的一种可能方法 - 使用梯度下降迭代算法,使用它你应该知道目标函数的导数。即,您应该知道如何变量参数以最小化某些功能。幸运的是,衍生物在某种意义上表明如果你改变一些参数,你的函数会如何改变。

在您遇到两种不同的优化任务的情况下。

第一个目标函数是enter image description here索引i表示来自数据集的特定样本。

enter image description here

但是如果你在你的假设enter image description here

中添加sigmoid函数

您应该根据Chain_rule计算衍生项,因为sigmoid函数是非线性的。

enter image description here

enter image description here

enter image description here

所以:

enter image description here

答案 1 :(得分:0)

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