深度解析神经网络的正向传播与反向传播过程(一步步详解)
详解神经网络的前向传播和反向传播
本篇博客是对Michael Nielsen所著的《Neural Network and Deep Learning》第2章内容的解读,有兴趣的朋友可以直接阅读原文Neural Network and Deep Learning。
对神经网络有些了解的人可能都知道,神经网络其实就是一个输入 X X 到输出的映射函数: f(X)=Y f ( X ) = Y ,函数的系数就是我们所要训练的网络参数 W W ,只要函数系数确定下来,对于任何输入我们就能得到一个与之对应的输出 yi y i ,至于 yi y i 是否符合我们预期,这就属于如何提高模型性能方面的问题了,本文不做讨论。
那么问题来了,现在我们手中只有训练集的输入 X X 和输出,我们应该如何调整网络参数 W W 使网络实际的输出与训练集的 Y Y 尽可能接近?
在开始正式讲解之前,让我们先对反向传播过程有一个直观上的印象。反向传播算法的核心是代价函数对网络中参数(各层的权重 w w 和偏置)的偏导表达式 ∂C∂w ∂ C ∂ w 和 ∂C∂b ∂ C ∂ b 。这些表达式描述了代价函数值 C C 随权重或偏置 b b 变化而变化的程度。到这里,BP算法的思路就很容易理解了:如果当前代价函数值距离预期值较远,那么我们通过调整和 b b 的值使新的代价函数值更接近预期值(和预期值相差越大,则和 b b 调整的幅度就越大)。一直重复该过程,直到最终的代价函数值在误差范围内,则算法停止。
BP算法可以告诉我们神经网络在每次迭代中,网络的参数是如何变化的,理解这个过程对于我们分析网络性能或优化过程是非常有帮助的,所以还是尽可能搞透这个点。我也是之前大致看过,然后发现看一些进阶知识还是需要BP的推导过程作为支撑,所以才重新整理出这么一篇博客。
前向传播过程
在开始反向传播之前,先提一下前向传播过程,即网络如何根据输入得到输出 Y Y 的。这个很容易理解,粗略看一下即可,这里主要是为了统一后面的符号表达。
记为第 l−1 l − 1 层第 k k 个神经元到第层第 j j 个神经元的权重,为第 l l 层第个神经元的偏置, alj a j l 为第 l l 层第个神经元的激活值(激活函数的输出)。不难看出, alj a j l 的值取决于上一层神经元的激活:
上一篇: 深度学习探索(2):从头到尾理解前向传播与反向传播算法 - 序章
下一篇: 前向传播
推荐阅读
-
详解神经网络的前向传播与反向传播计算公式步骤
-
理解深度学习基础:从神经网络构造到实践 - 1.评分函数介绍 2.SVM损失函数解析 3.正规化惩罚项说明 4.Softmax与交叉熵损失函数详解 5.前向传播中的最优化挑战 6.批量大小(batch_size)实操指南...
-
深度解析神经网络的正向传播与反向传播过程(一步步详解)
-
初探机器学习:理解神经网络与反向传播的原理详解
-
理解神经网络的正向计算与反向调整过程 - 公式详解
-
理解深度学习:神经网络基础(三) - 前向传播、反向传播与计算图详解
-
深度学习解析(六):从前往后的计算流程——前向传播与反向传播方法
-
从基础的感知机到深度学习的神经网络:前向计算、反向传播与Python实战指南
-
DL基础4:深入理解神经网络 - 正向传播与反向传播机制解析
-
详解LSTM的前向传播和反向传播计算过程(深度解析)