BP神经网络预测实现

article/2025/10/8 10:50:28

基本概念

误差反向传播神经网络简称为BP(Back Propagation)网络,它是一种具有三层或三层以上的多层神经网络,每一层都由若干个神经元组成。如图所示为一个BP神经网络的结构图,它的左、右各层之间各个神经元实现全连接,即左层的每一个神经元与右层的每个神经元都有连接,而上下各神经元之间无连接。BP神经网络按有监督学习方式进行训练,当一对学习模式提供给网络后,其神经元的激活值将从输入层经各隐含层向输出层传播,在输出层的各神经元输出对应于输入模式的网络响应。然后,按减少希望输出与实际输出误差的原则,从输出层经各隐含层、最后回到输人层逐层修正各连接权。由于这种修正过程是从输出到输入逐层进行的,所以称它为“误差逆传播算法”。随着这种误差逆传播训练的不断进行,网络对输入模式响应的正确率也将不断提高。

BP神经网络参数 

在进行BP神经网络的设计时,应从网络的层数、每层中的神经元数、初始值以及学习速率等几个方面进行考虑。

1)网络的层数。已经证明:三层BP神经网络可以实现多维单位立方体 到 的映射,即能够逼近任何有理函数。这实际上给了一个设计BP神经网络的基本原则。增加层数可以更进一步地降低误差,提高精度,但同时也使网络复杂化,从而增加网络权值的训练时间。而误差精度的提高实际上也可以通过增加隐含层中的神经元数目来获得,其训练结果也比增加层数更容易观察和调整。所以一般情况下,应优先考虑增加隐含层中的神经元数。

2)隐含层的神经元数。网络训练精度的提高,可以通过采用一个隐含层而增加神经元数的方法来获得。这在结构的实现上要比增加更多的隐含层简单得多。在具体设计时,比较实际的做法是隐含层取输人层的两倍,然后适当地加上一点余量。评价一个网络设计得好坏,首先是它的精度,其次是训练时间。时间包含有两层: 一层是循环次数,二是每一次循环中计算所花的时间。

3)初始权值的选取。由于系统是非线性的,初始值的选取对于学习是否达到局部最小、是否能够收敛以及训练时间的长短有很大关系。初始值过大过小都会影响学习速度,因此权值的初始值应选为均匀分布的小数经验值,一般取初始权值在(-1,1)之间的随机数,也可选取在[-2.4/n,2.4/n] 之间的随机数,其中n为输人特征个数。为避免每步权值的调整方向是同向的,应将初始值设为随机数。

4)学习速率。学习速率决定每次循环训练中 所产生的权值变化量。高的学习速率可能导致系统的不稳定;但低的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值跳出误差表面的低谷而最终趋于最小误差值。在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取0.01 ~0. 8。

如同初始权值的选取过程一样,在一个神经网络的设计中,网络要经过几个不同的学习速率的训练,通过观察每一次训练后的误差平方和\sum {e^2 }的下降速率来判断所选定的学习速率是否合适,若\sum {e^2 }下降很快,则说明学习速率合适,若\sum {e^2 }出现震荡现象,这说明学习速率过大。对于每一个具体网络都存在一个合适的学习速率,但对于较复杂网络,在误差曲面的不同部位可能需要不同的学习速率。为了减少寻找学习速率的训练次数以及训练时间,比较合适的方法是采用变化的自适应学习速率,使网络的训练在不同的阶段自动设置不同学习的速率。一般来说,学习速率越高,收敛越快.但容易震荡而学习速率越低.收敛越慢。

5)期望误差的选取。在网络的训练过程中期望误差值也应当通过对比训练后确定一个合适的值。所谓的“合适”,是相对于所需要的隐含层的结点数来确定的,因为较小的期望误差要靠增加隐含层的结点,以及训练时间来获得。一般情况下,作为对比,可以同时对两个不同期望误差的网络进行训练,最后通过综合因素的考虑来确定采用其中

尽管含有隐含层的神经网络能实现任意连续函数的逼近,但在训练过程中如果一些参数选取得合适,可以加快神经网络的训练,缩短神经网络的训练时间和取得满意的训练结果。对训练过程有较大影响的是权系数的初值、学习速率等。

实验背景

本次实验采用的数据集是从网上下载的使用近红外变换光谱仪对不同的汽油样本进行扫描后得到的实验数据,以此数据使用BP神经网络建立既有样品近红外光谱以及辛烷值之间的数学模型。辛烷值是汽油中十分重要的意向品质指标,在传统的实验检测方法中存在样品用量过大,测试周期长和费用高的问题。近年来发展的近红外光谱法可以快速的对辛烷含量进行分析。

数据集中包含采集到的60组汽油样品,利用傅立叶近红外变换光谱仪对其进行扫描,扫描间隔为2nm,每个样品的光谱曲线包含401个波长点,样品的近红外光谱曲线如图所示,其中包含对曲线的局部放大图。同时数据集中包含使用传统的检测方法测定的辛烷含量值。

从图可以看出,不同浓度的汽油的近红外光谱在一些峰值的地方会表现出一些差异。我们主要根据这些差异来建立模型进行辛烷浓度的预测。整个60组数据随机抽取50组作为训练集,剩下的10组作为测试集。 

如图所示为使用MATLAB建立的神经网络结构,其中神经网络的输入值个数为401个,隐含层的个数为9层。神经网络训练参数的设置分别为:迭代次数1000次,训练目标为10-3,学习率设置为0.01。

实验结果 

如图所示为使用MATLAB进行神经网络进行训练之后的回归结果,可以看出目标值和输出结果基本上在同一个直线上,训练结果比较好。 

 然后对训练后得到的10组结果进行反归一化后,再计算出结果与标准结果的相对误差,画出10组测试集所得出的结果与答案的相对误差的柱形图如图7所示。从图中我们可以看出训练得到的结果是比较准确的,相对误差最大只为0.6%。然后再计算出魔性的决定系数,决定系数也称为拟合优度,决定系数越大,自变量对因变量的解释程度越高,自变量引起的变动占总变动的百分比高。观察点在回归直线附近越密集。决定系数的范围在[0,1]之内,越接近1代表魔性的性能越好,越接近0代表性能越差。本次训练得到的模型计算出的结果的决定系数为0.966,可以很好的对结果进行预测。

最后画出真实结果与使用BP神经网络预测结果的对比图,从图8中我们可以看出,预测的结果与实际的结果是十分相近的,说明该模型具有较好的回归结果。

 

源码 

 
  1. clear all

  2. clc

  3.  
  4. %导入数据

  5. load spectra_data.mat

  6.  
  7. % 随机产生训练集和测试集

  8. temp = randperm(size(NIR,1));

  9. % 训练集——50个样本

  10. P_train = NIR(temp(1:50),:)';

  11. T_train = octane(temp(1:50),:)';

  12. % 测试集——10个样本

  13. P_test = NIR(temp(51:end),:)';

  14. T_test = octane(temp(51:end),:)';

  15. N = size(P_test,2);

  16.  
  17. %数据归一化

  18. [p_train, ps_input] = mapminmax(P_train,0,1);

  19. p_test = mapminmax('apply',P_test,ps_input);

  20. [t_train, ps_output] = mapminmax(T_train,0,1);

  21.  
  22. %创建网络

  23. net = newff(p_train,t_train,9);

  24.  
  25. % 设置训练参数

  26. net.trainParam.epochs = 1000;

  27. net.trainParam.goal = 1e-3;

  28. net.trainParam.lr = 0.01;

  29.  
  30. %训练网络

  31. net = train(net,p_train,t_train);

  32.  
  33. %仿真测试

  34. t_sim = sim(net,p_test);

  35.  
  36. %数据反归一化

  37. T_sim = mapminmax('reverse',t_sim,ps_output);

  38.  
  39. %相对误差error

  40. error = abs(T_sim - T_test)./T_test;

  41.  
  42. %决定系数R^2

  43. R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2));

  44.  
  45. %结果对比

  46. result = [T_test' T_sim' error']

  47.  
  48. %绘图

  49. figure

  50. plot(1:N,T_test,'b:*',1:N,T_sim,'r-o')

  51. legend('真实值','预测值')

  52. xlabel('预测样本')

  53. ylabel('辛烷值')

  54. string = {'测试集辛烷值含量预测结果对比';['R^2=' num2str(R2)]};

  55. title(string)


http://chatgpt.dhexx.cn/article/TKFLhMNB.shtml

相关文章

基于神经网络的房价预测,BP神经网络预测房价

1、如何利用matlab进行神经网络预测 matlab 带有神经网络工具箱,可直接调用,建议找本书看看,或者MATLAB论坛找例子。 核心调用语句如下: %数据输入 %选连样本输入输出数据归一化 [inputn,inputps]mapminmax(input_train); [outpu…

麻雀搜索算法优化BP神经网络预测以及MATLAB代码实现

麻雀搜索算法SSA优化BP神经网络回归预测以及MATLAB代码实现 文章目录 麻雀搜索算法SSA优化BP神经网络回归预测以及MATLAB代码实现1. 麻雀搜索算法SSA原理1.1 算法灵感来源1.2 算法模型描述 2. SSA优化BP神经网络预测算法流程3. SSA优化BP回归预测的MATLAB实现步骤4. 运行结果与…

bp神经网络预测模型优点,bp神经网络缺点及克服

BP神经网络的核心问题是什么?其优缺点有哪些? 人工神经网络,是一种旨在模仿人脑结构及其功能的信息处理系统,就是使用人工神经网络方法实现模式识别.可处理一些环境信息十分复杂,背景知识不清楚,推理规则不明确的问题,神经网络方法允许样品有较大的缺损和畸变.神经网络的类型…

提高bp神经网络预测精度,bp神经网络收敛速度慢

1、如何提高bp神经网络的预测精度啊 跟你的预测对象有很大关系。 1. 根据你的预测对象的特性选取合适的输入层、输出层和隐层神经元数目。 2. 选择合适的神经网络训练函数。 3. 保证足够的训练样本数据,并且确保这个训练样本数据有足够的精度能够反映需要预测的对象…

(四)BP神经网络预测(上)

BP神经网络适用于机器人控制、组合优化、模式识别、图像信息处理,能够对非线性数据建立精确的模型,对其未来进行预测。其核心思想是:将已预处理好的数据放到神经网络的微分方程进行反复训练,通过大量的训练建立BP神经预测模型&…

基于遗传算法优化BP神经网络预测和分类MATLAB实现-附代码

基于遗传算法GA优化的BP神经网络预测和分类(含优化前对比) 文章目录 基于遗传算法GA优化的BP神经网络预测和分类(含优化前对比)1. BP神经网络预测原理简介2. 遗传算法GA优化BP神经网络原理3. GA-BP模型建立3.1 模型与数据介绍3.2 …

用matlab做bp神经网络预测,matlab人工神经网络预测

如何得到神经网络预测结果 20 。 如果你用9——11年的数据不经过预测12——19年的数据就想得到第20年的数据的做法是不合理的,神经网络的预测讲求时间序列的连续性,你可以在编写maltab程序的时候才用递归的方法调用神经网络工具箱,加上对预…

提高bp神经网络预测精度,bp神经网络数据预处理

bp神经网络对输入数据和输出数据有什么要求 p神经网络的输入数据越多越好,输出数据需要反映网络的联想记忆和预测能力。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。 它的学习规则是使用最速下降法&…

bp神经网络预测模型优点,bp神经网络相关性分析

BP神经网络的可行性分析 神经网络的是我的毕业论文的一部分4.人工神经网络人的思维有逻辑性和直观性两种不同的基本方式。 逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符…

bp神经网络预测未来数据,bp神经网络数据预处理

如何建立bp神经网络预测 模型 建立BP神经网络预测 模型,可按下列步骤进行:1、提供原始数据2、训练数据预测数据提取及归一化3、BP网络训练4、BP网络预测5、结果分析现用一个实际的例子,来预测2015年和2016年某地区的人口数。 已知2009年——…

bp神经网络数据预测实例,bp神经网络预测数据

BP神经网络预测,预测结果与样本数据的理解。 输入节点数是3,说明输入向量的行数m3,你给的样本只有1行,是不是不全?输出节点只有一个,说明每3个输入数据对应一个预测的输出数据。其实样本数量很少&#xff…

bp神经网络预测模型原理,BP神经网络预测模型

深度学习与神经网络有什么区别 深度学习与神经网络关系2017-01-10最近开始学习深度学习,基本上都是zouxy09博主的文章,写的蛮好,很全面,也会根据自己的思路,做下删减,细化。 五、DeepLearning的基本思想假…

bp神经网络预测模型python,bp神经网络预测模型

如何建立bp神经网络预测 模型 。 建立BP神经网络预测模型,可按下列步骤进行:1、提供原始数据2、训练数据预测数据提取及归一化3、BP网络训练4、BP网络预测5、结果分析现用一个实际的例子,来预测2015年和2016年某地区的人口数。 已知2009年…

BP神经网络预测

BP神经网络预测 1.输入向量与输出向量 我们将前14组国内男子跳高运动员各项素质指标作为输入,即(30m行进跑,立定三级跳远,助跑摸高,助跑4-6步跳高,负重深蹲杠铃,杠铃半蹲系数,100m&…

BP神经网络预测模型

一、BP神经网络简单介绍 BP神经网络是一种人工神经网络,其主旨是一种进行分布式并行信息处理的数学模型。 其内部包含一个或多个隐含层。 1、基本概念 感知器 代表BP神经网络中的单个节点。 其包含:输入项、权重、偏置、激活函数、输出。 下图可以看…

BP神经网络如何用历史数据预测未来数据

本文主要为了解决如何用BP神经网络由历史的目标数据与因素数据去预测未来的目标数据。Bp神经网络的具体算法步骤与代码在网络上已经有很多大佬写过了,本文提供了将其应用于预测的方法。(附简单直接可使用代码) 开始我也在思考,简答…

EXCEL生成脚本

Execel 业务导入 1、填写数据 2、根据包的存储过程,生成脚本 3、输出脚本

用Python如何开发Excel宏脚本?新手必学

今天介绍一个叫 xlpython 的库,通过它我们可以用 Python 来开发 Excel 的宏脚本,真正实现在 Excel 中调用 Python。 基本环境 操作系统:Windows 10 x64 Office:2016 安装Python 1.下载Python安装包 登录[https://www.python…

大新闻!微软正考虑添加 Python 为官方的 Excel 脚本语言

(点击上方蓝字,快速关注我们) 来源: 开源中国 www.oschina.net/news/91595/python-as-an-official-scripting-language-to-excel 据外媒报道,微软正考虑添加 Python 为官方的一种 Excel 脚本语言,如果获得批准,Excel 用…

Excel里写VB脚本自定义函数

1点击开发者工具,选择Visual Basic 2选择插入模块 3如图写入如下脚本 str为需要匹配的字符串,exist表示存在的符号,uexist表示不存在的符号,SearchString合法字符集集合 函数功能:遍历str中每个字符,如果有任一字符存在于SearchString中,则显…