输出神经元误差

Error of output neuron

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

如果神经元的激活函数是 sigmoid function, I have read in another article,则不应将误差计算为简单的差异,而是 δ = y*(1-y)*(z - y)

熟悉这方面的人能解释一下这背后的基本原理吗?为什么具有 sigmoid 激活函数会导致错误计算变为: δ = y*(1-y)*(z - y) 不再是:δ = (z - y)

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

忘记所有这些时髦的名字,如 back propagation,这只不过是简单的数学优化任务。优化成本函数的一种可能方法 - 使用梯度下降迭代算法,要使用它你应该知道目标函数的导数。也就是说,您应该知道如何改变参数以最小化某些功能。幸运的是,某种意义上的导数显示了如果您更改某些参数,您的函数将如何变化。

在您有两个不同的优化任务的情况下。

第一个目标函数是 索引 i 表示数据集中的特定样本。

但是如果你将 sigmoid 函数添加到你的假设中

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

所以:

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