BP神经网络笔记

原理分析

神经网络的最终目的其实还是要回归数学,在数学中初等函数往往研究的是两个量之间的关系(自变量因变量),微分方程往往研究的是基于初等关系之上的另一种关系,也就是函数之间的关系,根本上其实是研究多个量之间联系。神经网络中通常用微分方程及初等函数进行计算并赋予其实际的意义,因此神经网络的最终目的应当是寻找某种关系,可以理解为一幅函数图像,即由f:x—>y。确立了这种关系之后便可以运用其进行推演想要的结果。

单个神经元结构

在这里插入图片描述
其中:x1 ~ xn 为输入量;w为输入量对应的输入权重;I表示将输入信息进行整合归一化(因为神经元输出总为激活“1”,未激活“0”),sheta为归一化的阈值;F(*)为激活函数;y为输出量。

BP神经网络结构图

在这里插入图片描述
其中:p为输入层神经元个数;q为中间层神经元个数;r为输出层神经元个数。
各个神经元结构:w为输入量对应的输入权重;net表示将输入信息进行整合归一化后的输出(因为神经元输出总为激活“1”,未激活“0”),b为归一化的阈值;f为激活函数;out为输出量。上标表示是哪一层神经元,下标表示该层第几个神经元。

前向传播

神经网络操作步骤为

  • 将样本分为训练集与测速集
  • 将训练集输入搭建的神经网络模型确定w,sheta
  • 将测试集输入训练好的模型进行性能分析

如此往复,终将得到自己搭建的神经网络模型,它可以用于预测或者确定某种关系具体形式或者某种参数。

1)给定输入量与目标量在这里插入图片描述
其中:X为n-p维度的输入矩阵,T为n-r维度的目标矩阵

2)初始化w及b
在这里插入图片描述
同样的,对应上述神经网络结构中的各层级神经元中的输入权重以及阈值
3)前向计算
在这里插入图片描述
至此前向传播结束可以得到一个输出为n-r维度的输出矩阵,此过程并未用到目标矩阵。

反向传播

单纯的前向传播往往应用于感知器,对于人类而言感知器对应者人类的感知器官,故单向传播即可曼珠要求,但实际应用中需要是实现更为复杂的处理,所以会进行由输出层向输出层传播,修正相应的参数

1)确定误差
以下为损失函数(均方差),意义描述误差的程度,及E与(t-out)的关系。
在这里插入图片描述
2)梯度下降法更新参数
为了寻求E的尽可能小的结构,我们需要一种方法来寻找E的函数的最小值,应为E函数本身就只有一个极值点,故寻找到其极值点即为最小值点。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
以上内容引用自:

链接: https://zhuanlan.zhihu.com/p/261375491.

3)中间层与输出层神经元参数优化

更新w:
在这里插入图片描述
梯度下降展开:
在这里插入图片描述

n称为学习率,即为梯度下降度,需手动设置合理的值。

更新b:
在这里插入图片描述
3)输入层层与中间层神经元参数优化

同样地,w及b优化
在这里插入图片描述
在这里插入图片描述
至此反向传播的整个过程结束,当然本文只是基于经典的三层模型进行研究神经网络的整个过程。

基于labview实现

1)输入坐标子VI
输入坐标子VI的主要功能是把设定的经验坐标以二维数据的形式输入到程序中并把这些设定的坐标作为目标样本,其程序框图如图2.1所示。
在这里插入图片描述
图2.1 输入坐标子VI程序框图

2)初始化子VI
权值初始化子VI的主要功能就是对神经元间的权值进行首次赋值,其程序框图如图2.2所示。
在这里插入图片描述
图2.2 权值初始化子VI程序框图

3)BP算法子VI
BP算法子VI是整个程序的核心模块,其中对权值的修正公式为(引入了动量项):式中,表示连接权值向量(其元素为连接权值系数);为k时刻的负梯度;为k-1时刻的负梯度;n为学习效率,n>0;a为动量项因子,。BP算法子VI的程序框图如图2.3所示。输入矩阵由文件导入。
在这里插入图片描述图2.3 BP算法子VI程序框图

同时权值修正也是在此VI下进行,权值修正的主要功能就是对输入层与隐含层间的权值进行修正,a为动量因子,n是学习效率,net1表示输入与中间层的神经元,net2表示中间层与输出的神经元。
当初始化子VI对于相关的参数设定完毕后进出此VI进行训练当迭代次数达到设定值时表示相关参数已经修正完毕,将结果精度进行拟合输出以便与测试结果进行比较,如图2.4所示,将进入下一子VI进行测试验证。
在这里插入图片描述
图2.4 训练精度拟合输出程序图

4)测试子VI
测试子VI的主要功能是将训练中相邻的训练样本坐标相加,然后求其坐标平均值坐标作为输入并最终经神经网络输出,程序框图如图2.5所示。
在这里插入图片描述
图2.5测试子VI程序框图

随后在保持神经网络框架不变的基础上把训练好的权值输入到神经网络中,最终与目标矩阵进行比较拟合得出最终结果,程序框图如图2.6所示。
在这里插入图片描述
图2.6 测试拟合程序框图

5)运行测试
初始化以及训练程序框图中相对应的控件的局部变量。因此,在执行程序时,要先运行初始化子VI加载相应的数据在进行训练程序以及测试。其主程序运行结果如图2.7所示。
在这里插入图片描述
图2.7 BP神经网络曲线拟合主程序运行结果(初始化)

在结果图中,W1和W2两个矩阵权值;中间有b1、b2为其对应的阈值、n(学习效率)、误差精度、训练次数、达到误差精度和达到训练次数指示灯和停止按钮。在程序的调试过程中,需要输入合适的动量因子b、学习效率n、误差精度和训练次数。执行完训练程序后,就可以进行测试。测试的输入取训练样本两两相邻坐标的平均值,图2.8就是BP神经网络的测试结果。
在这里插入图片描述
图2.8 BP神经网络曲线拟合主程序运行结果(测试)

图中“精度”代表训练模型的误差下降过程图,“拟合效果图”代表测试拟合曲线,“”代表目标的输出坐标点。

2.结果分析

图4.8 BP神经网络曲线拟合主程序运行结果(训练)
对于训练结果分析可知我们搭建的模型在2次迭代之前误差极速下降,随后便趋于平缓,最终在10次时达到最小。说明本模型的训练效果较为优良,接下来观察笔记输出结果是否能够与训练结果一样保持优良性能:
在这里插入图片描述
图2.9 BP神经网络曲线拟合主程序运行结果(测试)

由测试结果拟合曲线图可知,训练好的模型对于测试集的输出基本与目标保持一致,所以本模型在对于未知结果的测试中也取得了较为优良的结果。因此BP神经网络在本实验中的性能表现较为理想。

  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值