matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用

机器学习、神经网络、人工智能等词汇目前已经成为了极度热门的词汇,对于大部分人来说充满了神秘感。笔者也是机器学习的小白一枚,想要对神经网络进行一些了解,但大部分资料要么是介绍众所周知的基本概念,要么就是进行晦涩难懂的数学推导,对初学者不太友好。对初学者而言,了解其中的概念和数学原理固然重要,但实践也是非常重要的环节,而要想快速上手实践的话,Matlab神经网络工具箱是一个非常好的选择,它由于具有用户图形界面,上手难度甚至低于Python的一些神经网络库,这里给大家介绍一下神经网络工具箱的使用,若存在问题欢迎指出。
1. 人工神经网络
人工神经网络(ANN)是一种模拟大脑神经网络工作的一种算法,网络由若干神经元连接而成,每个神经元包含一些列的输入变量xi,权重Wki,偏置bk和激活函数Ф,这样单个神经元的输出yk可以表示为如下的计算式:
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

将上述多个神经元相连即构成了一个人工神经网络,下图是最常见的一种神经网络连接方式,一个3层神经网络,也是最简单的神经网络,其中一层输入层,一层输出层,一层隐藏层;具有多个隐藏层的网络成为深度神经网络。神经网络算法具有广泛的应用,如模式识别、分类、非线性拟合等。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

2. Matlab神经网络工具箱的使用
在进入正题之前,先简单介绍一下Matlab中神经网络的相关函数。
首先,如果激活函数使用的Sigmoid或者双极S型函数,那么需要根据相应激活函数的值域将数据进行归一化处理(即归一到(0, 1)或者(-1, 1)),Matlab中采用[Y,PS] = mapminmax(X)实现,该函数可根据输入的参数不同而实现输入数据到不同区间的归一化以及根据归一化法则将数据反归一化得到正常的数据。
在数据准备完成之后,Matlab利用net = newff(A, B, {C}, ‘trainFun’, ‘BLF’, ‘PF’)函数建立前馈神经网络,具体用法可参考帮助文档。建立好神经网络之后利用net = train(net, X, Y)来对网络进行训练;训练好的神经网络可用Y_predict= sim(net, X)来使用该神经网络预测输入为X时的输出结果。
为了评估模型的预测准确性,Matlab中采用了均方根误差MSE和回归值R来评价网络预测的优劣。MSE越小代表预测值和真实值的差别越小,R值越接近1代表预测值越接近真实值。
在进行上述介绍后,下面介绍如何利用Matlab神经网络工具箱搭建简单神经网络(1输入层,1输出层,1隐藏层)。
本例中所用Matlab版本为R2015a,首先在APPS中找到NeuralNet Fitting,这是利用神经网络进行非线性拟合的工具。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

打开后出现如下对话框,对话框中对该nftool进行了介绍。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

点击next后进入到数据选择的界面,这里可以利用load example data set加载软件自带的数据和案例,包括最简单的拟合问题、房价预测等等。本例中我们先加载最简单的拟合案例。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

点击import后可以在刚才的界面看到对该数据的描述如下,说明该数据的输入数据和输出数据均为1个,共有94个数据样本。
【matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用】matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

点击next后,出现如下对话框,需要对刚才的数据集进行拆分,默认以70%的数据作为训练集,15%的数据作为验证集,15%的作为测试集。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

点击next后,需要指定隐藏层神经元的个数,默认为10个。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

定义好神经网络的结构之后,点击next进入网络训练的界面,这里可以选择不同的训练方式,分别是Levenberg-Marquardt, Bayesian Regularization和Scaled Conjugate Gradient,具体每种方法在其下方均有简要的说明。这里我们用默认的L-M方法,点击train。由于数据量很少,网络很简单,因此在很短时间内即训练完成了。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

训练好网络后,可以通过PlotFit来查看利用网络的预测值和数据值;Plot Regression可以查看预测值与真实值之间的回归性,越接近1预测越准确。需要注意的是,Plot Fit功能只能是单输入单输出网络才能使用,即输入层和输出层均只有一个节点的时候。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

然后点击next,在该界面可以重新修改神经网络隐藏层的个数进行重新训练,也可以加载更过的数据对网络的MSE和R进行准确性进行评估。这里我们跳过,直接点next.
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

点击next后,在Deploy Solution界面可以查看相关的代码,这里直接跳过,点next。
然后进入到保存界面,这里我们全部勾选,点击save results,然后刚才的神经网络信息就被储存到了Workspace中。需要用刚才训练好的神经网络计算时可使用y_predict = sim(net, input)语句。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

然后我们将刚才预测的y_predict和真实值target绘制在同一张图上看看效果,用plot(input,target,'r*',input,y_predict,'b--o'); 语句即可,绘制出的真实值为红色线,预测值为蓝色线,如图。至此,一个利用Matlab神经网络工具箱的非线性拟合案例就完成了。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

进一步地,我们再试试其他的自带示例,这里载入的是Engine案例,是一个典型的两输入,两输出的神经网络。输入值为供油率和转速,输出值为扭矩和氮氧排放。我们用同样的方式定义、训练并保存神经网络。
然后在Command Window中用语句y_predict = sim(net,input)来计算预测值。由于input数据有两列,即供油率和转速,y_predict数据也两列,即扭矩和氮氧。我们用第三方绘图软件分别将数据列确定为X, Y,Z1, Z2, Z3, Z4,可绘制预测值与真实值的对比图,如下所示。
Matlab神经网络工具箱虽然上手容易,但其功能较为简化,且隐藏了内部的算法细节和参数设置,仅能作为神经网络初学的上手和普通数据处理工具,切勿对其过于依赖。
matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

matlab|matlab bp神经网络工具箱_Matlab神经网络工具箱的使用
文章图片

留言区

    推荐阅读