我是神经网络的新手,正在尝试构建一个具有 1 个以上隐藏层的超简单神经网络。

在神经网络的训练阶段调整权重时,调整权重的程度部分取决于该神经元对下一层神经元贡献的“误差有多少”。因此,我们需要知道下一层的误差。

计算这个只有 1 个隐藏层是微不足道的,因为我们的训练数据已经为我们提供了预期的输出,所以我们只需要使用输出层(简单地说,目标输出)。当有多个隐藏层时,计算错误变得非常重要。也就是说,如果我们有 10 个隐藏层,而我们在第 5 层,我们怎么知道第 6 层的误差是多少?

谢谢

最佳答案

假设我们的 NN 输出值和实际地面实况通过损失函数相关,例如均方误差(回归案例):

在哪里:

和 是层的权重,并且是应用于同一层的所有神经元响应的激活函数。

为了从输出层传播模型权重上的误差,我们可以简单地在误差损失函数和取决于模型参数(权重或偏差)的因子之间应用链式法则。例如,让我们找出与损失函数和输出层权重相关的误差导数:如下:



正如您所推断的,我们可以应用相同的程序来计算误差导数,通过每次激活直到网络的较低层。例如,让我们将错误反向传播到 layer :



这个过程也可以应用于偏置,直到输入层之前的层。

我希望这篇反向传播总结能给你一些关于神经网络实际实现的实用见解,在这种情况下,前馈神经网络。如果你想了解更多关于反向传播的详细信息,我邀请你引用斯坦福大学关于反向传播的 UFLDL tutorial :

此外,如果您想了解更多关于更适合计算机视觉应用的卷积神经网络,我推荐 CS231n 类(class)笔记(其中也有关于反向传播的类(class)),它们可以在 here 上找到。

关于machine-learning - 神经网络 : Calculating Error In Hidden Layers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43554095/

10-12 07:32
查看更多