数学建模(NO.19BP神经网络)
发布日期:2021-05-07 23:24:35 浏览次数:21 分类:原创文章

本文共 2042 字,大约阅读时间需要 6 分钟。

BP神经网络

一.原理

在这里插入图片描述


链接:https://pan.baidu.com/s/1hu7x_LC65Ez382725sqU4g (提取码:dwla)
备用下载链接:https://pan.baidu.com/s/1tHOA9rIMNYgFqHfIqCMwlQ
BP网络是一种多层前馈神经网络,它的名字源于在网络训练中,调整网络权值的训练算法是反向传播算法(即BP学习算法).
BP网络是一种具有三层或者三层以上神经元的神经网络,包括输入层,隐含层和输出层,上下层之间实现全连接,而同一层的神经元之间无连接,输入层神经元和隐含层神经元之间的是网络的权值,即两个神经元之间的连接强度.隐含层或输出层任一神经元将前一层所有神经元传来的信息进行整合,通常还会在整合的信息中添加一个阈值.当一对学习样本提供给输入神经元后,神经元的激活值(该层神经元输出值)从输入层经过各隐含层向输出层传播,在输出层的各神经元获得网络的输入响应,然后按照减少网络输出与实际输出样本之间误差的方向,从输出层反向经过各隐含层回到输入层,从而逐步修正各隐含权值,这种算法称为误差反向传播算法,即BP算法.
随着这种误差逆向传播修正的反复进行,网络对输入模式的正确率也不断上升.BP算法的核心是数学中的负梯度下降理论,即BP算法总是沿着误差下降最快的方向进行.
BP网络求解过程
(1) 原始数据的输入
(2) 数据归一化
(3) 网络训练
(4) 对原始数据进行仿真
(5) 将原始数据仿真的结果与已知样本进行对比
(6) 对新数据进行仿真

二.机器学习中的训练集,验证集和测试集

在这里插入图片描述

三.例题1:辛烷值的预测

1.题目

在这里插入图片描述

2.数据的导入

Excel操作小技巧:
选择某个单元格的数据,同时按住键盘上的Ctrl和Shift两个键不松手,然后按键盘上
方向键“→”,就可以选择这个单元格所在的一行;然后再按键盘上的方向键“↓”,就
可以再选取这一行所在的一整列。

在这里插入图片描述

在工作区新建好上述三个变量后,我们将Excel的数据分别粘贴到变量中,然后在Matlab的工作区内按快捷键“Ctrl+S”(或者鼠标右键点击保存也可以),就可以将数据文件保存在本地。下次使用时,只需要将数据加载到Matlab即可。
加载数据使用load命令,代码、文件以及当前Matlab的工作路径需要在同一个文件夹

3.使用神经网络进行预测

在这里插入图片描述

在这里插入图片描述
训练集测试集验证集分区*(默认)
在这里插入图片描述
在这里插入图片描述
隐层神经元的个数,这个参数可以根据拟合的结果再次进行调整
在这里插入图片描述

训练算法的选取,一般是选择默认即可,选择完成后点击按钮后,Matlab就
会帮我们训练出一个神经网络模型。

莱文贝格-马夸特方法(Levenberg–Marquardt algorithm)能提供数非线性最小化
(局部最小)的数值解。此算法能借由执行时修改参数达到结合高斯‐牛顿算法以
及梯度下降法的优点,并对两者之不足作改善(比如高斯‐牛顿算法之反矩阵不存
在或是初始值离局部极小值太远)
贝叶斯正则化方法(Bayesian‐regularization):
https://blog.csdn.net/sinat_38835380/article/details/86927943
量化共轭梯度法(Scaled Conjugate Gradient ):
《模式识别与智能计算——MATLAB技术实现》

4.结果分析

在这里插入图片描述
在这里插入图片描述
六次就收敛了不太好,可以再次训练
发现和上一次没啥区别
于是进行更改模型
在这里插入图片描述
在这里插入图片描述

epoch:1个epoch等于使用训练集中的全部样本训练一次,每训练一次,神经网络
中的参数经过调整。 MSE: Mean Squared Error 均方误差 MSE = SSE/n
一般来说,经过更多的训练阶段后,误差会减小,但随着网络开始过度拟合训练数
据,验证数据集的误差可能会开始增加。在默认设置中,在验证数据集的MSE连续
增加六次后,训练停止,最佳模型对应于的最小的MSE。

这样就ok了
图上的圈圈:均方误差最小的时刻
横坐标:反过来修改多少次wb
均方误差最小的时候是最优,我么就可以用这里的wb进行一个拟合
在这里插入图片描述
在这里插入图片描述

将拟合值对真实值回归,拟合优度越高,说明拟合的的效果越好。 真实值和预测值回归的结果

5.保存结果

可以保存神经网络函数的代码,以及神经网络图。
在这里插入图片描述
下一步
在这里插入图片描述
保存好训练出来的神经网络模型和结果

6.保存结果并对进行预测

在这里插入图片描述
残差 + 拟合值 = 真实值

% 这里要注意,我们要将指标变为列向量,然后再用sim函数预测sim(net, new_X(1,:)')% 写一个循环,预测接下来的十个样本的辛烷值predict_y = zeros(10,1); % 初始化predict_yfor i = 1: 10result = sim(net, new_X(i,:)');predict_y(i) = result;enddisp('预测值为:')disp(predict_y)

四.例题2:神经网络在多输出中的运用

在这里插入图片描述

上一篇:林大OJ(3)
下一篇:数学建模(NO.18灰色预测)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月09日 12时04分10秒