本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
提到BP神经网络,我们经常会听到正向传播(前馈)和反向传播(后馈)这两个名词
正向传播指的是BP神经网络的计算是前馈的,而反向传播则是指BP神经网络的梯度是后馈式计算的
通过本文可以具体地了解,什么是BP神经网络的正向传播,什么是反向传播
本节解释什么是BP神经网络的前馈
BP神经网络的前馈
正向传播(前馈)是指BP神经网络的输出计算过程是前馈的,
即计算完一层,得到结果,再以该层的结果作为下层的输入,计算下一层
用网络的输入计算第一层的输出,
把第一层的输出作为第二层的输入,计算第二层的输出
把第二层的输出作为第三层的输入,计算第三层的输出
....
直到最后一层的输出,就是网络的输出
一般说BP神经网络的前馈、向前传播等等,实际说的就是"BP神经网络输出的计算过程"
✍️什么是前馈网络
"前馈网络"是一种特殊的网络结构,它指的就是像BP神经网络这样,每层的输出就是下层的输入
本节解释什么是BP神经网络的后馈
什么是BP神经网络的后馈
反向传播指的是BP神经网络计算参数的梯度时的计算方式
由于BP神经网络求解时所使用的是梯度下降算法(或其他算法),这些算法一般都需要利用误差函数对参数的梯度
因此,计算梯度是BP神经网络训练中重要的一部分,而反向传播式地计算梯度就是BP神经网络的特色,
BP神经网络之所以叫BP(Back Propagation Neural Network)神经网络,指的正是它计算梯度时这种后馈的特色
BP神经网络是如何反向传播式计算梯度的
如下,是一个K层的BP神经网络:
不妨以第k-1层到第k层的参数为例,分析它的梯度公式是什么
由于第k层节点是关于的函数,且后一层的节点总是前一层节点的函数
如此一来,可以看成是如下一个超级复合函数:
因此对于的梯度,根据复合函数的链式求导,则有:
看着头很晕,但粗略可以看出,它分为三块:
1. 先由误差函数求出最后一层的节点梯度
2. 不断地求后一层节点对前一层的节点梯度,直到所要求的参数所在的节点
3. 最后求出节点对参数的梯度就可以
可以看出,整个梯度的计算过程由误差函数开始,不断地后馈到前一层节点,最后传播到参数上
而这种后馈的特性,给求解梯度带来了非常大的便利性,它的计算过程如下:
先算出最后一层节点的梯度,再后馈式逐层传播到每一层的节点
每当算出某层节点的梯度时,就马上计算当层的参数,如此迭代就可以
End