【原理】BP神经网络反向传播

189 阅读3分钟

本文来自《老饼讲解-BP神经网络》www.bbbdata.com/

一、什么是BP的反向传播

1.1 什么是反向传播

"反向传播指的是BP神经网络计算参数的梯度时的计算方式" BP神经网络更原始的名称是"多层线性感知机MLP",由于它在训练时使用梯度下降算法,并"反向传播Back Propagation Neural"地计算梯度,所以后来也称为BP神经网络。

由于BP神经网络求解时所使用的是梯度下降算法(或其他算法),这些算法一般都需要利用误差函数对参数的梯度,因此,计算梯度是BP神经网络训练中重要的一部分,而反向传播式地计算梯度就是BP神经网络的特色,BP神经网络之所以叫BP(Back Propagation Neural Network)神经网络,指的正是它计算梯度时这种后馈的特色。 BP神经网络反向传播

1.2 反向传播的意义

而对于常用的三层BP神经网络的梯度推导,而可以简单地直接求导就可以,甚至不需要涉及到反向传播,反向传播更多是为了多层、深层的BP神经网络而提出的计算方法。反向传播的意义更多是体现在深度学习之中。 三层BP神经网络梯度推导过程:三层BP神经网络梯度推导过程

二、BP神经网络如何通过反向传播计算梯度

如下,是一个K层的BP神经网络: 在这里插入图片描述 不妨以第k-1层到第k层的参数p(k,k1)p^{(k,k-1)}为例,分析它的梯度公式是什么 由于第k层节点是关于p(k,k1)p^{(k,k-1)}的函数,且后一层的节点总是前一层节点的函数 如此一来,E(p(k,k1))E(p (k,k−1) )可以看成是如下一个超级复合函数:

因此对于p(k,k1)p^{(k,k-1)}的梯度,根据复合函数的链式求导,则有:

Ep(k,k1)=iKENiK(K)iK1NiK(K))NiK1(K1)iK2NiK1(K1))NiK2(K2)....ikNik(k))p(k,k1)\dfrac{\partial E}{\partial p^{(k,k-1)}} =\sum\limits_{i_K}\dfrac{\partial E}{\partial N^{(K)}_{i_K}} \sum\limits_{i_{K-1}}\dfrac{\partial N^{(K)}_{i_K})}{\partial N^{(K-1)}_{i_{K-1}}} \sum\limits_{i_{K-2}}\dfrac{\partial N^{(K-1)}_{i_{K-1}})}{\partial N^{(K-2)}_{i_{K-2}}} ....\sum\limits_{i_{k}}\dfrac{\partial N^{(k)}_{i_k})}{\partial p^{(k,k-1)}}

三、BP梯度公式解读

看着头很晕,但粗略可以看出,它分为三块: BP神经网络梯度公式解读

  1. 先由误差函数求出最后一层的节点梯度
  2. 不断地求后一层节点对前一层的节点梯度,直到所要求的参数所在的节点
  3. 最后求出节点对参数的梯度就可以

可以看出,整个梯度的计算过程由误差函数开始,不断地后馈到前一层节点,最后传播到参数上 而这种后馈的特性,给求解梯度带来了非常大的便利性,它的计算过程如下:

  • 先算出最后一层节点的梯度,再后馈式逐层传播到每一层的节点
  • 每当算出某层节点的梯度时,就马上计算当层的参数,如此迭代就可以

相关链接: