Ste*_*sky 3 machine-learning computer-vision neural-network
我是神经网络的新手,正在尝试构建一个具有多个隐藏层的超简单神经网络。
当在神经网络的训练阶段期间调整权重时,调整权重的程度部分取决于此神经元对神经元的下一层做出的“多少错误”。因此,我们需要知道下一层的错误。
仅通过1个隐藏层进行计算就很容易了,因为我们的训练数据已经为我们提供了预期的输出,因此我们只需要使用输出层(简单来说就是target-out)。当存在多个隐藏层时,计算误差变得不那么重要。也就是说,如果我们有10个隐藏层,而我们位于第5层,我们如何知道第6层的错误是什么?
谢谢
假设我们的NN输出值 和实际的地面真理
与损失函数相关,例如均方误差(回归情况):
哪里:
和
是层的权重
和
是应用于同一层所有神经元反应的激活函数。
为了从输出层传播模型权重上的误差,我们只需在误差损失函数和依赖于模型参数(权重或偏差)的因数之间应用链式规则。例如,让我们找到与损失函数和输出层权重相关的误差导数: 如下所示:
您可以推断,通过每次激活,我们可以应用相同的过程来计算误差导数 直到网络的较低层。例如,让我们反向传播错误直到层
:
此过程也可以应用于偏置,直到输入层之前的层 。
我希望这个反向传播摘要能够为您提供有关神经网络(在这种情况下为前馈NN)的实际实现的一些实践见解。如果您想了解有关反向传播的更多详细信息,请邀请您参考斯坦福大学关于反向传播的UFLDL教程:http ://ufldl.stanford.edu/wiki/index.php/Backpropagation_Algorithm
另外,如果您想了解更多有关卷积神经网络的信息,而卷积神经网络更适合于计算机视觉应用,我建议您使用CS231n课程注释(其中也有关于反向传播的课程),可在以下网址获得它们:http://cs231n.github .io /
| 归档时间: |
|
| 查看次数: |
4132 次 |
| 最近记录: |