摘要:介绍了MATLAB中BP网络算法的基本训练函数。结合案例,探讨了多元非线性系统建模方法,给出了程序设计过程,对网络学习精度等进行了试验研究。
关键词:MATLAB;BP神经网络;多元非线性系统;训练算法;学习精度
中图分类号:TP312文献标识码:A文章编号文章编号:16727800(2013)0010006602
基金项目:佛山科学技术学院重点项目(2010)
作者简介:刘晓莉(1961-),女,佛山科学技术学院副教授,研究方向为应用数学。
0引言
在科学研究和生产实践中,对具有表现系统特征或运行状态的离散数据进行建模,用于系统预测、评价等,是科学决策和决策系统建立的重要基础。由于大多数研究对象普遍具有多变量且依从高度非线性关系等特征,因此多元非线性系统建模极其重要。
人工神经网络是由大量简单的处理单元(神经元)广泛地互相连接形成的复杂非线性系统。它不需要任何先验公式,可直接从训练样本(离散数据)中自动归纳规则,提取离散数据之间复杂的依从关系(可以是高度非线性关系),储存于网络权重之中,从而建立研究问题的神经网络模型。其中由Rumelhart提出的多层前馈神经网络,由于采用误差反传的学习算法,被称为BP网络,其应用非常广泛。在理论上已经证明具有三层结构(一个隐含层)的BP网络能够逼近任何有理函数[1]。
1MATLAB中BP网络训练算法
MATLAB中的神经网络工具箱由许多子程序组成,这些子程序已完成了神经网络算法中所涉及的许多运算和操作,使用者根据需要调用相关函数即可。常见的BP网络训练算法有traingda;traingdx(变学习率算法)、traip(弹性BP算法)、trainbfg 或traincgf(变梯度算法)、trainoss(类Newton算法)等。对于一个实际问题,选用那种训练方法最快捷,样本的拟合精度高低与否等很难判断,它取决于许多因素,包括问题的复杂程度、学习样本的多少、隐含层的节点数目、误差目标等,所以,网络的结构和参数的设计是关键。
2案例与建模
表1所列的样本数据是3个自变量、1个因变量(预测或控制变量)的非线性系统。现用三层BP神经网络模型逼近存在于样本数据间的函数关系,其模型为y=ANN(x1,x2,x3), ANN是一个非线性函数。此模型为隐含表达式,即不能用通常的数学公式表示,故称为“知识库”。
程序中,p、t是用于学习样本输入和目标(实际)输出矩阵;函数newff的第一个参数为样本输入的最小值与最大值构成的矩阵;输入层与隐含层、隐含层与输出层的节点数分别为s1、s2,其传递函数分别为tansig(S型)和purelin(线性);训练算法trainlm 的主要参数是: show、lr、epochs、goal、min_grad、time等,如果训练次数超过epochs,误差低于goal,梯度值低于min_grad或训练时间低于time,训练就结束;newff的返回值net为一个可训练的BP网络,函数train用于训练网络,它将p和t不断作用于该网络以调整网络权值,从而减小网络输出与目标输出间的差距;train函数的返回值为训练后的结果。函数sim模拟网络,它接受样本输入、返回网络输出。
事实上,BP神经网络初始权值对训练结果的影响较大,即使是微小的改变。由于MATLAB的网络初始化是随机的,因此程序在每次运行后得到的训练网络是不同的,即“知识库”是不同的,包括实际迭代次数、网络输入和目标输出的均方差MSE。为此,特取B组数据样本,用来检验训练后的网络可靠性,即在程序中增加以下语句:
3分析
通过试验发现,训练后的网络一般对学习样本有很高的逼近精度,但即便是MSE远远小于最小误差goal值,对那些没有用于网络训练过程的样本(非学习样本)而言,却可能出现误差较大的反映。所以选择训练算法、确定主要参数及改变节点数s1的取值等是极其重要的,需要进行调整。当F检验值越大,MSE值越小,训练后的网络对学习样本的拟和精度越高;网络输出和实际输出的方差Sc值越小,则对非学习样本的拟和精度越高。多次试验中的结果见表3。其中,序号为5的试验中,学习样本的MSE没有达到设定的最小误差goal=1e-4,训练后的网络对学习样本和非学习样本拟和精度较低;序号为2的训练网络对样本拟和精度最高。试验表明,这种方法在提高网络的学习精度等方面是极其有效的。
4结语
多元非线性系统的BP神经网络模型能最大限度地概括原自变量系统中的数据信息,又能对因变量具有较好的解释能力。针对此案例的多次试验表明,各种算法中,trainlm算法的性能较好;对于大小适中的网络,从训练的迭代次数来看,trainlm是最快的一种算法;对于大网络,一般选用traip算法或是某个变梯度算法比较好;对于小网络,则可选择trainbfg。
人工神经网络能同时描述多个控制或预测量的非线性系统。例如,若预测或控制因变量为2个,即目标输出为两列矩阵,则在上述程序中将网络的输出节点取为2即可,多于两个依次类推。人工神经网络适用于关系复杂的多元非线性系统建模,具有误差小、精度高的优点。
参考文献:
[1]王学辉,张明辉.MATLAB6.1最新应用详解[M].北京:中国水利水电出版社,2001.
[2]陈杨,王茹,林辉.MATLAB6.0版本中神经网络工具箱训练算法的使用与比较[J].电脑与信息技术,2002(3).
[3]DOUGLAS M BATES,DONALD G WATTS.非线性回归分析及其应用[M].韦博成,译.北京:中国统计出版社,1997.
[4]赵林明.多层前向人工神经网络[M].郑州:黄河水利出版社,1997.
责任编辑(责任编辑:杜能钢)