欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

详解神经网络的前向传播与反向传播计算公式步骤

最编程 2024-07-24 22:48:15
...

神经网络的前向传播和反向传播公式详细推导

本篇博客是对Michael Nielsen所著的《Neural Network and Deep Learning》第2章内容的解读,有兴趣的朋友可以直接阅读原文Neural Network and Deep Learning

对神经网络有些了解的人可能都知道,神经网络其实就是一个输入XX到输出YY的映射函数:f(X)=Yf(X)=Y,函数的系数就是我们所要训练的网络参数WW,只要函数系数确定下来,对于任何输入xixi我们就能得到一个与之对应的输出yiyi,至于yiyi是否符合我们预期,这就属于如何提高模型性能方面的问题了,本文不做讨论。

那么问题来了,现在我们手中只有训练集的输入XX和输出YY,我们应该如何调整网络参数WW使网络实际的输出f(X)=Y^f(X)=Y^与训练集的YY尽可能接近?

在开始正式讲解之前,让我们先对反向传播过程有一个直观上的印象。反向传播算法的核心是代价函数CC对网络中参数(各层的权重ww和偏置bb)的偏导表达式。这些表达式描述了代价函数值CC随权重ww或偏置bb变化而变化的程度。到这里,BP算法的思路就很容易理解了:如果当前代价函数值距离预期值较远,那么我们通过调整wwbb的值使新的代价函数值更接近预期值(和预期值相差越大,则wwbb调整的幅度就越大)。一直重复该过程,直到最终的代价函数值在误差范围内,则算法停止。

BP算法可以告诉我们神经网络在每次迭代中,网络的参数是如何变化的,理解这个过程对于我们分析网络性能或优化过程是非常有帮助的,所以还是尽可能搞透这个点。我也是之前大致看过,然后发现看一些进阶知识还是需要BP的推导过程作为支撑,所以才重新整理出这么一篇博客。

前向传播过程

在开始反向传播之前,先提一下前向传播过程,即网络如何根据输入XX得到输出YY的。这个很容易理解,粗略看一下即可,这里主要是为了统一后面的符号表达。

 

wljkwjkl为第l1l−1层第kk个神经元到第ll层第jj个神经元的权重,bljbjl为第ll层第jj个神经元的偏置,aljajl为第ll层第