本次我们来介绍一下利用MATLAB实现BP神经网络的应用,BP神经网络的算法原理,因网上一大堆,所以小编在此不必展示。对于神经网络这一话题,在现在这个时代可以说是应用十分普遍。
这里小编要从名字开始说起了,首先从名称中可以看出,BP神经网络可以分为两个部分,BP和神经网络。BP是 Back Propagation 的简写 ,意思是反向传播。而神经网络,听着高大上,其实就是一类相对复杂的计算网络。
话不多说了!咱们直奔主题!利用MATLAB中的神经网络工具箱实现简单案例(辛烷值的预测)的应用。
案例:辛烷值的预测
【改编】辛烷值是汽油最重要的品质指标,传统的实验室检测方法存在样品用量大,测试周期长和费用高等问题,不适用于生产控制,特别是在线测试。近年发展起来的近红外光谱分析方法(NIR),作为一种快速分析方法,已广泛应用于农业、制药、生物化工、石油产品等领域。其优越性是无损检测、低成本、无污染,能在线分析,更适合于生产和控制的需要。实验采集得到50组汽油样品(辛烷值已通过其他方法测量),并利用傅里叶近红外变换光谱仪对其进行扫描,扫描范围900~1700nm,扫描间隔为2nm,即每个样品的光谱曲线共含401个波长点,每个波长点对应一个吸光度。
(1)请利用这50组样品的数据,建立这401个吸光度和辛烷值之间的模型。(2)现给你10组新的样本,这10组样本均已经过近红外变换光谱仪扫描,请预测这10组新样本的辛烷值。
关注微信公众号后回复:辛烷值的预测 便可得到Excel表格数据
神经网络工具箱操作流程步骤
一、数据的导入
二、训练集,验证集和测试集的设定
训练集(Training set) —— 用于模型拟合的数据样本。
验证集(Validation set)—— 是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。在神经网络中,我们用验证数据集去寻找最优的网络深度,或者决定反向传播算法的停止点或者在神经网络中选择隐藏层神经元的数量。
测试集(Testing set)—— 用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据。
其中我们设定Training为70%,Validation为15%,Testing为15%。
(Matlab会后台自动帮我们安装这个比例来随机抽取样本,因此每次运行的结果可能都不相同)
三、隐层神经元的个数设定
隐层神经元的个数设定为10,这个参数可以根据拟合的结果再次进行调整。
四、训练算法的选取
一般是选择默认即可,选择完成后点击<train>按钮后,Matlab就会帮我们训练出一个神经网络模型。
其中训练算法的选取可以有3种选择:
(1)莱文贝格-马夸特方法
(2)贝叶斯正则化方法
(3)量化共轭梯度法
五、训练结果的分析
我们使用量化共轭梯度法:
epoch:1个epoch等于使用训练集中的全部样本训练一次,每训练一次,神经网络中的参数经过调整。
MSE: Mean Squared Error 均方误差 MSE = SSE/n
一般来说,经过更多的训练阶段后,误差会减小,但随着网络开始过度拟合训练数据,验证数据集的误差可能会开始增加。在默认设置中,在验证数据集的MSE连续增加12次后,训练停止,最佳模型对应于的最小的MSE。
将拟合值对真实值回归,拟合优度越高,说明拟合的的效果越好。
六、保存结果
模型训练完之后可以保存神经网络函数的代码:
保存好训练出来的神经网络模型和结果:
七、保存结果后进行预测
好啦~本篇利用MATLAB实现BP神经网络的应用就到此结束啦~~~感谢您的观看~~~
点个赞再走呗~~~祝您学习、生活、工作愉快 ^o^
欢迎关注公众号:HJX逆映射唯一
更多精彩将与您分享~~~扫码下方二维码即可关注哦~~~