一、BP神经网络简单介绍

BP神经网络是一种人工神经网络,其主旨是一种进行分布式并行信息处理的数学模型。
其内部包含一个或多个隐含层

1、基本概念

感知器

代表BP神经网络中的单个节点。

其包含:输入项、权重、偏置、激活函数、输出。

下图可以看出其详细信息:

bp神经网络预测模型 bp神经网络预测模型分析_神经网络

其中Xi代表输入、Wi代表权重、b代表偏置、f代表激活函数。

引入偏置b的原因在于让其模型适用于更多情况。

图中的工作流程为:从输入端开始,沿着箭头指向乘以相关权重系数后加和(还需加偏重),加和后得到的结果作为激活函数的输入再次计算,此时得到的结果作为此节点的输出。

一个节点的输出将作为下一个节点的输入,依次计算,直到得到最终的输出。

以上工作流程也被称为BP神经网络正向传播

bp神经网络预测模型 bp神经网络预测模型分析_人工智能_02


注明:以上图片来源于B站视频:最容易听懂的BP神经网络教程----萌新入门首选课

2、核心步骤

bp神经网络预测模型 bp神经网络预测模型分析_反向传播_03


我们在第一轮得到满意结果以后会进行测试。如果测试结果满意那么就可以直接应用。否则就需要多次迭代对权重进行调整(权重调整方法采用梯度下降法),每次调整过后都会进行测试。循环往复直到测试结果满意。

以上图形的工作流程虚线部分也被称为BP神经网络的反向传播过程

利用梯度下降法寻找函数最小值:

函数为: f(x)=x^2+2
假设设置认定初始值x=3时函数值最小,步长设置为0.2。那么此时将计算f(3.2)与f(2.8)的值,将所获函数值较小的那一方f(2.8)作为下次迭代的中心值,那么下一次就是比较f(3)与f(2.6)。依次迭代直到选择出最小值。

我们也可以通过改变步长来获取最小值,但是需要注意:

步长太小,迭代次数就会多,导致收敛慢 步长太大会引起振荡,可能无法收敛

3、梯度下降法使用解析

参考上面的例子,会因为步长的不正确选择导致振荡无法收敛,所以需要采用在不同的位置选择不同的步长来解决这个问题,即:

bp神经网络预测模型 bp神经网络预测模型分析_bp神经网络预测模型_04


其中n为学习率

以此得到下一个点的值为:

bp神经网络预测模型 bp神经网络预测模型分析_神经网络_05

当然其中也会存在误差,误差存在的原因在于x(k+1)的取值可能存在不准确现象。由于误差的存在是在求导之后产生的,即针对求导之后误差为(y为解析值,y*为实际数值):

Loss=∑(y-y*)

那么针对求导之前为:

bp神经网络预测模型 bp神经网络预测模型分析_反向传播_06


以上为BP神经网络的误差项

误差项越大,调整越大,误差项越小,调整越小。

4、梯度下降法使用原因

梯度是一个矢量,表示某一个函数在该点处的方向导数沿着该方向取得的最大值。也就是说函数在该点沿着该方向(梯度方向)变化最快,变化率(梯度的模)最大。
梯度取正时,上升最快,梯度取负时下降最快。

在目前深度神经网络模型中,梯度下降法是最优化的方法。但是使用梯度下降法很容易遭遇梯度消散梯度爆炸的问题。参考:神经网络使用梯度下降的原因

具体使用过程中是通过计算梯度,通过梯度进行迭代并更新参数向量。

5、反向传播过程

反向传播使用梯度下降法,这里引入局部梯度,即不考虑之前的梯度值,只关注局部一个变量的梯度。
反向传播过程中涉及到上游梯度和本地梯度,最终该节点的值为:

节点的值=上游梯度*本地梯度

例如在神经网络中经常使用的激活函数Sigmoid函数:

bp神经网络预测模型 bp神经网络预测模型分析_人工智能_07


反向传播解析如下:

bp神经网络预测模型 bp神经网络预测模型分析_人工智能_08

从(1)开始进行作为输入到达(5)的输出表示正向传播,反向从(5)开始求导进行反向传播。

(5)过程表示初始值1,由于(5)的下一步是输出,假设上游梯度为1,由于下一步为输出,那么此过程值为1。

(4)过程上游梯度为1,本地梯度为-1/x^2,其中x为1.14,那么此过程值为-0.77。

(3)过程上游梯度为-0.77,本地梯度为1【为1的原因是:f(x)=x+a求导之后就是f’(x)=1也就是+1的效果,那么原函数的梯度就是1】,那么过程值为-0.77。

(2)过程上游梯度为-0.77,本地梯度为e^x【因为f(x)= e^x 的导数还是e^x】,过程值为-0.1。

(1)过程上游梯度为-0.1,本地梯度为-1【由于f(x)=ax求导之后为a】。其过程值为0.1。

其中要注意如果存在输入为两个变量的情况,例如如下:

bp神经网络预测模型 bp神经网络预测模型分析_深度学习_09


此时w0的值是所在支线的本地梯度*上游梯度,但是需要注意w0的本地梯度是一个偏导值,即为0.2 * -1=-0.2。

6、反向传播和正向传播中特殊的运算结构

Max和Min函数所在结点的本地梯度,如果参与后续运算,则本地梯度为1,否则为0。

如下图所示的情况,上游梯度为两个方向上的梯度相加。

bp神经网络预测模型 bp神经网络预测模型分析_反向传播_10

7、反向传播(矩阵)

矩阵的反向传播需要遵循:求解出来的梯度矩阵的形式应当与原矩阵完全一致,这一点可以作为检验计算结果是否正确的标准。

二、BP神经网络Python实现

代码:

BP神经网络Python实现 理解:

bp神经网络预测模型 bp神经网络预测模型分析_bp神经网络预测模型_11


其中main.py是完整版的解释程序。