【关键词】人工鱼群算法;BP神经网络;时间序列;预测
1.引言
时间序列是由一个低维的具有非线性和确定性的动态系统产生的外表象随机信号但并非是随机信号的时间序列,这些序列中存在着一些与产生该序列的非线性动力学系统相关的固有的确定性和一些几何拓扑不变性。预测是人们根据事物的发展规律、历史和现状,分析影响其变化的因素,对其发展前景和趋势预先进行的一种推测。对于现实中大量存在的非线性、非平稳的复杂动力系统问题,需要确定合适的模型阶数,这是比较困难的,为了更好地解决这一困难,本论文通过建立在对人工鱼群算法和BP神经网络算法的掌握及应用在时间序列预测上,提出了基于人工鱼群算法和BP神经网络算法的时间序列预测系统模型[1]。
2.基于人工鱼群算法和BP神经网络的时间序列预测模型介绍
2.1方法的引出
无论是在自然科学,还是在社会科学领域的实际工作者和研究人员都要和一系列的观测数据打交道,这些观测数据随时间变化而相互关联,其排列顺序与大小体现了不同时刻的观测值之间的相互联系,观测值之间的这种依赖关系或相关性,表征了产生这些数据的现象、过程或系统的某些时间变化特征和规律。我们把这些按照时间顺序产生和排列的观测数据序列称为时间序列。从系统意义上看,时间序列就是某一系统在不同时间(地点、条件等)的响应。在时间序列预测中,BP神经网络是最常使用的网络。BP网络是一种非线性神经网络,RobertHechtNielson已证明只有一个隐层的神经网络,只要隐节点足够多,就可以以任意精度逼近一个非线性函数[2]。
但是神经网络方法有它的缺点,比如:
(1)计算速度慢(计算量大,学习算法不成熟,不同的算法针对不同的问题收敛才快些)。
(2)输入信号与训练信号相差加大时,可能导致结果完全错误(不同的区域可能有不同的极值)。
因此可以将人工鱼群算法与BP神经网络相结合。人工鱼群(ArtificialFish-swarmAlgorithm,AFSA)是一种基于模拟鱼群行为的优化算法,是由李晓磊等于2002年提出的一种新型的寻优算法。AFSA是一种新型的思路,从具体的实施算法到总体的设计理念,都不同于传统的设计和解决方法,但同时它又能与传统方法相融合。因此,AFSA自提出以来,得到了国内外学者的广泛关注,对算法的研究应用已经渗透到多个应用领域,并由解决一维静态优化问题发展到解决多维动态组合优化问题。AFSA己经成为交叉学科中一个非常活跃的前沿性研究问题[3]。
在基本人工鱼群算法(AFSA)中,主要是利用了鱼群的觅食、聚群和追尾行为,从构造单条鱼的底层行为做起,通过鱼群中各个体的局部寻优,达到全局最优值在群体中突现出来的目的。从目前对人工鱼群算法的研究来看,绝大部分集中在如何应用AFSA解决实际问题。通过深入研究和实践发现,AFSA虽然具有很多优良的特性,但它本身也还是存在一些问题,如随着人工鱼数目的增多,将会需求更多的存储空间,也会造成计算量的增长[4];对精确解的获取能力不够,只能得到系统的满意解域;当寻优的区域较大,或处于变化平坦的区域时,收敛到全局最优解的速度变慢,搜索效率劣化;算法一般在优化初期具有较快的收敛性,而后期却往往收敛较慢。这些算法本身存在的问题,在一定程度上也影响了算法的实际应用[5]。
在当今已经有许多的研究方向,首先采用人工鱼群算法拟合时间序列并求出大量的数据训练神经网络,弥补了历史数据缺乏的问题;然后用训练好的神经网络代替传统的最小二乘法拟合时间序列因素,从而求出预测值。仿真结果表明,此模型能够有效地改善模型的拟合能力并提高预测精度。为实现更好的预测,有时采用神经网络,但前馈神经网络结构难以确定,运用BP算法时又极易陷入局部解。本文将改进人工鱼群算法与BP算法相结合的IAFSA+BP算法,实现了人工鱼群算法的全局搜索能力与BP算法的局部寻优性能的互补结合。将所设计的神经网络利用MATLAB/SIMULINK进行传感器控制系统的建模仿真实验结果表明,该算法具有良好辨识效果[6]。
2.2方法的计算流程与实施步骤
由于BP神经网络存在对初始参数要求高、学习收敛速度慢,网络性能差,优化权值时容易陷入局部极小值等缺陷。而人工鱼群算法具有对初值和参数要求不高,克服局部极值、更好地协调全局和局部搜索能力等优点。因此,将人工鱼群算法与BP算法相结合的混合算法训练人工神经网络,可实现两种算法的取长补短。
构造人工鱼个体模型是改进人工鱼群算法优化训练BP神经网络关键,设人工鱼群规模为N,每个人工鱼看为一个前向神经网络,任意两人工鱼个体的和或差其中i,j∈{0,1,.,N—l})仍看作不同神经网络:待寻优神经网络的参数设有权值矩阵和,其中为第i个隐层神经元与第j个输入神经元之间的权值,为第k个输出神经元与第i个隐层神经元之间的权值;阈值向量和,而为第i个隐层神经元的阈值,为第k个输出神经元的阈值;其参数也随着人工鱼的迭代进化而不断优化。
设神经网络的输入和输出节点分别为和,而网络隐层节点数一般取输入输出节点的平均值,以Sigmoid函数作为BP网络的激励函数,根据前向网络计算算法求出相应每组输入样本的网络输出结果;把网络输出均方误差的倒数作为改进人工鱼群算法的适应函数(食物浓度)Y来指导人工鱼群的进化。通过人工鱼群算法的优化搜索来训练神经网络的权值和阈值,当神经网络输出均方误差指标达到最小时,搜索出就是最优BP网络,而该网络相应的权值和阈值等参数也是最佳的。其算法的适应函数表示如下:
式中:参数N,P,,分别为训练样本总数,网络输出神经元的个数,第i个样本的第j个网络输出的目标值,第i个样本依据输入计算出的第j个网络输出的实际值。
基于人工鱼群算法的BP网络训练算法流程如下:
步骤一:输入人工鱼群的群体规模,最大迭代次数,人工鱼的可视域,人工鱼的最大移动步长,拥挤度因子。
步骤二:设置初始迭代次数,在控制变量可行域内随机生成个人工鱼个体,形成初始鱼群,即产生组,,,且各个分量均为区间内的随机数。
步骤三:计算初始鱼群各人工鱼个体当前位置的食物浓度值,并比较大小,取为最大值者进入公告板,将此鱼赋值给公告板。
步骤四:各人工鱼分别模拟追尾行为和聚群行为,选择行动后值较大的行为实际执行,缺省行为方式为觅食行为。
步骤五:各人工鱼每行动一次后,检验自身的与公告板的,如果优于公告板,则以自身取代之。
步骤六:中止条件判断:判断是否已达到预置的最大迭代次数,若是,则输出计算结果(即公告板的值),否则,转步骤一。
基于人工鱼群算法和BP神经网络的计算流程图如图1所示。
3.实例仿真分析
本论文对建立时间序列预测的BP神经网络的过程加以规范化,建立了基于BP神经网络的时间序列预测的整理方法,并通过实例来检验该时间序列预测模型的预测能力。MATLAB神经网络工具箱给出了两种用于提高神经网络推广能力的方法,即正则化方法(Regularization)和提前停止(Earlystopping)方法,本文的模型建立过程中,用到正则化方法,利用sim函数可以对训练后的网络进行仿真。sim函数的常用格式如下:
①[Y,Pf,ALE,perf]=sim(net,P,Pi,Ai,T)
②[Y,Pf,Af,E,perf]=sim(net,{Q,TS},Pi,Ai,T)
③[Y,Pf,Af,E,perf]=sim(net,Q,Pi,Ai,T)
在sim函数的调用形式①中,输入net为神经网络对象,P为网络输入,Pi为输入延迟的初始状态,Ai为层延迟的初始状态,T为目标矢量。在函数返回值中,Y为网络输出,Pf为训练终止时的输入延迟的初始状态,Af为训练终止时的层延迟状态,E为输出和目标矢量之间的误差,perf为神经网络的性能值。该函数中的P、T、Pi、Y、E、Pf和Af等参量可以是单元数组或矩阵。sim函数的调用形式②③用于没有输入的神经网络,其中,Q为批处理数据的个数,TS为神经网络仿真的时间步数。此外,神经网络工具箱还提供了postreg函数,该函数可对训练后网络的实际输出(仿真输出)和目标输出做线性回归分析,以检验神经网络的训练效果。使用MATLAB语言进行程序编写,实现基于BP神经网络的时间序列预测模型,程序片断如图2所示。
根据2.2中提出的方法,在MATLAB软件中对算法进行编程与实施,得到的仿真结果如图3所示。
其中,检测误差:SSE=8.0059e-004,rerror21=-0.0054。
4.结语
本文给出了基于人工鱼群算法的BP神经网络的训练模型,并形成了一种新的BP网络训练算法。从试验结果比较分析可见:
(1)该方法具有较好的收敛性、初值不敏感和参数不敏感等特点;
(2)算法具有较快的收敛速度,算法收敛过程有明显优势。
(3)算法用于对时间序列的预测,其结果表明是可行的。如何更好地将觅食、聚群和追尾三种优化行为,体现在算法的处理上,以便使运算更加简单,还需要进一步提高。
参考文献
[1]李晓磊,邵之江,钱积新.一种基于动物自治体的寻优模式:鱼群算法[J].系统工程理论与实践,2002,22(11):32-38.
[2]张冬,明新国等.基于BP神经网络和设备特性的工业设备备件需求预测[J].机械设计与研究,2010,26(1):72-77.
[3]康进,刘敬伟.非参数回归估计与人工神经网络方法的预测效果比较[J].统计与决策,2009(23):153-155.
[4]王西邓.人工鱼群算法的改进研究[D].西安:西安建筑科技大学,2007.
[5]李晓磊.一种新型的智能优化方法——人工鱼群算法[D].杭州:浙江大学,2003.
[6]魏崇辉,金福禄,何亚群.基于粗糙集和神经网络的空军航材消耗预测方法[J].东南大学学报(自然科学版),2004,34(Sup):68-70.
关键词:股指预测;均方差;删剪算法;神经网络
中图分类号:TP183
文献标识码:A
近年来,研究人员在利用神经网络预测股指方面做了大量研究,一则因为股指的变化受到许多因素的影响,具有时变性、突发性,是一个典型的非线性动态系统;二则因为神经网络是一种仿大脑信息处理的模型,是由大量简单单元――神经元相互连接而成的自适应非线性动态系统,具有很强的非线性概括能力,在时间序列分析、信号处理、模式识别和控制等不同的领域均得到了很好的应用[1]。所以将其应用到股指预测不失为一种好的方法,而且也有着重要现实意义。研究人员利用不同的神经网络模型和算法进行股票预测,其中有许多取得了较好的结果。但是多数的研究集中在BP算法[2]、径向基函数[3]、遗传算法[4]、支持向量机(SupportVectorMachine,SVM)[5]及其他们的改进算法。这些算法存在着种种缺点和不足:BP算法容易使网络学习陷入局部极小点,而且学习步长以及在中间层的选择上有很大盲目性;径向基0(RadialBasisFunction,RBF)网络在如何选择最佳的中心矢量以及中心矢量的个数方面存在困难,SVM适宜于小样本的情况,但是它和RBF一样还存在着核函数的选择问题,选择什么样的核函数才最好,至今没有人研究;遗传算法虽然是全局寻优,但是基于编码的遗传算法在进行编码时,随着时间序列周期(或技术指数或影响股指变化的因素数目)的增加,容易造成编码急剧增大,导致网络学习训练过程过长
在构建神经网络模型过程中,选择什么样的学习算法以及如何寻找最佳的网络结构一直是决定能否得到高精度预测的关键所在。特别是网络拓扑结构的选择非常重要,不恰当的结构或导致推广能力很差,对于没有训练学习过的模式没有好的预测精度,或导致训练学习过程中收敛速度很慢甚至可能无法收敛。开始的研究只有依靠经验不断的摸索,具有盲目性。本文则提出利用一种基于自适应训练及删剪算法的神经网络模型对股指进行预测。首先在初次训练阶段,采用基于递归最小方差(RecursiveLeastSquare,RLS)的自适应训练算法,以便使网络获得先验知识,然后再利用删剪算法删除隐藏层中及输入层中冗余的神经元,以获得最佳的网络拓扑结构,以提高网络的推广能力,降低网络再学习时的计算复杂度。接下来再对删剪后的网络进行再学习,以达到检验网络结构是否得到优化的目的,并同时经过再学习得到最佳的网络模型。最后是预测阶段,对没有训练学习的模式进行预测或者对未来的股指进行预测。由于利用删剪算法对网络结构进行优化,所以即使选用较小的学习步长,网络再学习阶段的收敛速度也很快。与无删减模型相比,该模型不仅能够提高训练速度,而且也减少了初始参数,更重要的是提高了预测精度,均方误差达到8.7961×10-5。
1网络结构及算法
1.1网络结构
由于前馈型神经网络具有可任意逼近非线性连续函数的学习能力和对杂乱信息的综合能力,所以基于前馈型神经网络的时间序列预测方法是目前最好的一种预测方法。这里网络模型采用抽头延迟神经网络(TappedDelayNeuralNetwork,TDNN),其结构如图1。
是一个三层前馈型网络,网络的输入是经过延迟的时间序列,输出神经元采用线性激活函数,网络的输入和输出的函数关系为:
本文所用符号的含义定义如下:
X(n-1):是第n-1时刻的输入矢量。
wnij(t):神经元(n,j)(第n层第j个神经元)与(n+1,i)之间的互连权重;
式中w=[(w1)T,(w2)T]T是把所有权重排成一维矢量。
θ:输出神经元的偏置。
1.2递归最小方差(RLS)自适应训练算法
对于TDNN模型,互连权重w可以看作是一个稳定的非线性动力学系统的状态,假定输入第n个训练模式,则网络应满足下列静态方程:
估算的权重(n)应使下列误差函数为最小:
式(3)中的λ是遗忘因子,满足0
其中:H(n)=h(w)ww=(n-1)
为梯度矩阵。采用一级近似,系统的静态方程(2)可以近似为线性系统,由此得到估算(n)的递归方程[9]:
(n)=(n-1)+K(n)(d(n)-h((n-1)))缺一个右括号(5)
K(n)是增益矩阵,P(n)是RLS算法中的协方差矩阵。(0)、P(0)可根据先验知识确定,若无任何先验知识,可取
其中,δ是一个大于0的小量。
1.3删剪算法
1.3.1删剪中间层
在神经网络研究中,除了寻找适当的权重,另一个重要的问题就是如何确定适当的规模,规模过大时,虽然其收敛速度快,但推广能力很差;规模过小,就有可能无法收敛。解决这一问题的有效方法之一是权重删剪法。结合上述RLS算法,当输入第n个训练样本后,定义网络的能量函数为:
依据经典权重删剪方法[6],假设协方差矩阵的初始量为一对角矩阵P(0)=δ-1I,其中I为单位矩阵,δ>0,那么权重变化Δ引起能量的变化为:
权重wj的重要性由下式计算:
其中(∞),P(∞)为网络收敛后的权重和协方差矩阵,[P(∞)-1]jj表示P(∞)-1的第j个对角元素。
基于以上公式,删剪过程如下:
(1)首先利用RLS算法训练网络,得到收敛时的权重
w(∝)、协方差矩阵P(∝)和能量E,然后根据(11)式对所有权重的重要性进行估算,并按其重要性从小到大进行排列,设排列的序号为{πi},满足ΔEπm≤ΔEπk(m
通过(10)可估算由于权重wπ1到wπk′的删剪所引起的能量变的ΔE;
(3)如果ΔE≤αE(其中0
值得指出的是,对于三层前馈神经网络,若只有一个输出单元,则删掉一个隐藏层到输出层的权重,等于删掉了一个隐藏层神经元,从输入层到该隐藏层单元的权重也将全部被删除。因此,删剪算法可起到删除隐藏层神经元的作用。
通过删除隐藏层神经元,可使再学习的计算复杂度降低。根据文献[7],对于单输出的三层网络,设删剪前后隐藏层单元的数目分别为H0、H1(H0>H1),则计算复杂度之比为(H1/H0)2。
1.3.2删剪输入层
在利用删剪算法将中间层神经元优化后,设输入层到中间层的权重为wij1
n为中间层的个数。将得到一组向量E=[E11,E21E31…,Em1]T,i=1,2,3…,m。m为输入层的神经元数目。然后将Ei1按从小到大的顺序排列,设
如果满足ΔE1/E1=β(后面给定),我们就可以将前面的K个较小的神经元删剪掉,也即将k个较小的Ei1删剪掉。这样经过对中间层以及输入层单元的删剪,达到了优化网络结构的目的,而删剪的依据则是上述删剪算法,因此与盲目的选择网络结构相比该方法更富有科学性和针对性。
2计算机仿真实现
2.1网络的学习训练
我们采用上证指数2001年3月23日至2003年12月17日期间的650个日数据作为样本。从650个数据样本中抽取前300个作为训练样本,第301~500个样本作为再学习时的学习样本,501~650作为预测样本。首先对样本数据进行初始化处理:
TDNN网络的初始结构为:12151,即网络的输入层有12个神经元,隐藏层有15个神经元,输出层为1个神经元。采用RLS算法先对网络进行训练,权重初始值为:(0)=[0,0,…,0]T,P(0)=60×I;遗忘因子λ=0.999。由表1可见网络的均方差(MSE:meansquarederror)为:1.4142×10-4,均方误差定义为:MSE=∑ne2(n)/N,平均收敛次数为36次,RLS算法的收敛速度较快。
2.2删剪算法
2.2.1中间层的删剪
根据式(11)对权重按其重要性进行排序,然后将前面一些不重要的权重删掉。图2为能量与权重删剪数目的关系曲线,由图可以看到前面130个权重相对不重要,对应的ΔE=1268。其中10个为隐藏层到输出层的权重,由于输出层只有一个神经元,所以意味着删去了10个隐藏层单元,因而网络结构变成1251,这样使得再学习阶段的计算复杂度下降到网络删剪前的(5/15)2=0.1111,这表明该删剪算法能有效删除不重要的权重,从而优化网络的拓扑结构。为便于比较,模拟时取不同的(E进行删剪。由表1可见,删去了10个隐藏层单元(对应于ΔE=1268)时,输出均方差最小。
为进一步证明删剪算法对网络结构优化的有效性,我们利用相同的数据和RLS算法,对网络结构分别为1291,1281,1261,1251,1241模型也作同样训练,再学习和预测,预测结果同样表明1251结构具有最好的预测精度,其预测误差为9.7160×10-5。
2.2.2输入层的删剪
经过对中间层单元的删剪,网络结构变成1251,在此基础上,我们再对输入层单元进行删剪,依据(12)式ΔE1/E1=β,当β=0.2时,i=6也即当输入层删剪掉6个时,网络的预测误差最小。由表2可知,经过删剪优化后,在后来的再学习及预测阶段,其计算复杂度也降为原来的0.1111/2=0.0556。网络的预测精度都较未删剪的网络预测精度高,此时的预测误差等于8.7961×10-5。
2.3再学习
用第301~500个样本对优化的网络结构进行再学习,一则检验删剪后的网络结构是否得到优化,二则让网络再次获得先验知识,使得网络具有最佳权重,以期在预测时得到更高的预测精度,从表1和表2的比较结果可以看出,两个目的都得到了实现。
2.4预测
最后利用再学习后的网络结构对第501~650个样本进行预测,为有效地证明通过图2可正确自适应地选择最合适的ΔE=1268以删除合理的权重数目,得到最佳网络结构,我们对不同的ΔE进行了仿真模拟,结果如表1所示,可以看到ΔE=1286所对应的网络结构为1251时网络预测的均方误差最小为9.7160×10-5。再对输入层进行删剪后,网络的预测均方误差变为8.7961×10-5,网络的预测曲线如图3所示。
Abstract:ThispaperestablishedthetimeseriespredictionmodelbasedonBPneuralnetwork,appliedthemodeltothepracticalexample,anddesignedthenetworkstructure,initializedweightsanddeviation.Theresultsverifytheeffectivenessofthemodel.
关键词:BP神经网络;时间序列;预测;消耗
Keywords:BPneuralnetwork;timeseries;prediction;consumption
中图分类号:TP389.1;TP391.9文献标识码:A文章编号:1006-4311(2010)35-0128-02
0引言
预测是人们根据事物的发展规律、历史和现状,分析影响其变化的因素,对其发展前景和趋势预先进行的一种推测。对于现实中大量存在的非线性、非平稳的复杂动力系统问题,非线性ARMA模型应用中需要确定合适的模型阶数,这是比较困难的,在传统的预测方法解决效果欠佳的领域,应用神经网络等智能预测方法往往能够更有效。
神经网络中单个神经元具有简单的能够反映非线性本质特征的能力,通过这些基本的单元自组织复合,使神经网络能够重建任意的非线性连续函数。通过这一归纳过程,可以使网络获得序列的内在规律,从而可以对序列的变化进行预测。基于神经网络的时间序列预测方法是用神经网络预测的方法之一,自从1987年Fabrer首先应用神经网络进行预测以来,这种方法日益受到重视,它为一类高度非线性动态关系的时间序列预测提供了一条有效途径。
假设一次观测中过去值与未来值之间存在联系,找到一个函数,当过去观测值作为输入时,给出未来值作为输出。由此可以得出利用神经网络进行时间序列预测的基本思路:用神经网络来拟合这个函数,然后预测未来值。在时间序列预测中,BP神经网络是最常使用的网络[1-5]。BP网络是一种非线性神经网络,RobertHechtNielson已证明只有一个隐层的神经网络,只要隐节点足够多,就可以以任意精度逼近一个非线性函数,因此下面采用三层BP网络进行预测。
1三层BP网络模型
三层BP网络是由输入层、一个隐层和输出层构成的前馈网络,如图1所示。
1.1算法描述三层BP网络算法的过程如下。
输入:层数为3的神经网络,其中第i层神经元数为ni,训练样本集T。
输出:经过训练的神经网络。
1.1.1初始化各层的权值W和偏差θ。
1.1.2输入训练样本:输入T中的一个样本X=(X1,X2,…,X)和期望输出Y=(Y1,Y2,…,Y)。
1.1.3正向传播:从第2层开始到第3层,计算每层神经元的输出。令第k层第j个神经元的输出记为O,有:
O=fW(t)X+θ(t)(1)
其中,Wij(t)为t时刻神经元i与下层神经元j间的权值,θj(t)为t时刻神经元j的偏差,X为t时刻第k-1层神经元i的输出。对于输入神经元来说,输出就等于输入,即O=X。
1.1.4反向传播:从第3层开始到第2层,计算每层神经元的误差。将第k层第j个神经元的误差记为e,对于输出层神经元,误差为:
e=O1-OY-O1jn(2)
隐层神经元的误差为:
e=O1-OW(t)ek=2,1jn(3)
1.1.5修改权值和各神经元的偏差:
W(t+1)=W(t)+η•e•Oθ(t+1)=θ(t)+η•e(4)
1.1.6根据给定的结束条件判断是否满足。如果满足,则算法结束,否则返回第2步继续执行。
1.2网络结构设计基于BP神经网络的时间序列预测不需要确定影响因素,但是在对输入神经元的确定上要注意:在样本数确定的情况下,输入神经元的数目过多,则供训练的学习样本太少;反之,输入神经元的数目过少,则学习样本太多[6-8]。
1.3确定初始权值和偏差BP算法可以获得使均方误差最小的网络参数,使网络达到设定精度的最佳拟合,但是,由于多层网络性能曲面具有多个局部极小点,所以不一定能产生精确逼近解的网络参数。因此,当BP算法收敛时,并不能确定是否得到了最优解,最好的办法是多试几个不同的初始权值和偏差以保证获得全局极小点,即最优的解。
1.4传递函数设计BP网络常用的传递函数是对数-S形函数和线性函数,其输出范围分别是[0,1]和任意值[9-10]。为了满足非线性预测的要求,又满足网络输出的需要,隐层采用对数-S形函数作为传递函数,而输出层则采用线性函数为传递函数。对数-S形函数为:
f(x)=a>0(5)
2算例
某项备件12年的消耗统计数据如表1所示,下面就利用上述模型预测该项备件年消耗数。
设定均方误差精度为0.0001,对数-S形函数的参数a为1。设相邻3年的数据为一组,从1998至2008年共9组,利用前6组进行训练,每一组的三个数据作为输入神经元,下一年度的数据作为输出神经元。备件消耗预测模型可以采用3-4-1网络,训练方法采用Levenberg-Marquardt算法(以下简称LM算法)。LM算法具有最快的收敛速度,对于中小规模的BP网络是最优的方法,因此适用于备件消耗预测模型所采用的3-4-1网络。
训练后的神经网络隐层各神经元的输入权值和偏差如表2所示,输出层各神经元的输入权值和偏差如表3所示。
然后,利用第7、8组进行验证:预测消耗数分别为4.0048、4.0048,误差均为0.0048,表明该模型的预测效果比较理想。
最后,用第九组预测2009年的消耗数:预测消耗数为4.0048,因此,2009年该器材的消耗数为4。
3结论
基于BP神经网络的时间序列预测的优点是没有复杂的理论问题,简便易行,但是缺少理论依据。研究结果表明,该模型用于预测的效果较好,为一类高度非线性动态关系的时间序列预测提供了一条有效途径。
参考文献:
[1]赵淑舫,宁宣熙,吴桐水.航材需求预测模型研究[J].中国民航学院学报,2002,20(3):20-23.
[2]张冬,明新国等.基于BP神经网络和设备特性的工业设备备件需求预测[J].机械设计与研究,2010,26(1):72-77.
[3]康进,刘敬伟.非参数回归估计与人工神经网络方法的预测效果比较[J].统计与决策,2009(23):153-155.
[4]吴清亮,董辉等.基于神经网络对航材备件需求率的预测分析[J].兵工自动化,2009,28(1):54-56.
[5]徐勋福,郭军.航材需求分析的误差反向传播网络预测[C].第二届中国航空学会青年科技论坛文集,2006:616-623.
[6]魏崇辉,金福禄,何亚群.基于粗糙集和神经网络的空军航材消耗预测方法[J].东南大学学报(自然科学版),2004,34(Sup):68-70.
[7]MartinT.HaganHowardB.DemuthMarkH.Beale.神经网络设计[M].戴葵,等,译.北京:机械工业出版社,2006.
[8]董肇君.系统工程与运筹学[M].北京:国防工业出版社,2007.
摘要:目前世界超过5亿人患有不同的肾脏疾病,但全社会对慢性肾脏病的知晓率尚不足10%,肾病患者甚至一些非肾脏科的大夫对慢性肾脏病的危害缺乏足够的了解,由于慢性肾脏病早期多没有明显症状,很容易被忽略,很多患者直到肾功能完全恶化导致尿毒症时才去就医。同时,针对不同慢性肾病的等级又有对应的不同治疗方向。因此,对慢性肾病进行分级预警是一个影响非常深远的课题。在进行慢性肾病分级的过程中,肾小球滤过率对慢性肾病分级起着基础与指导的作用,因此我们必须着重解决一个重要的问题:肾小球滤过率的评估。
本文主要针对肾小球滤过率的预测进行设计。为了达到人工智能对慢性肾病进行分级的最终目的,本文将通过MATLAB软件平台对肾小球滤过率的评估进行仿真。接着对于在医院收集好的数据进行筛选,最终选出一组具有较高参考意义的数据,对其使用适当的处理方法,并运用了BP神经网络来构建合适的预测模型,对肾小球滤过率进行预测评估。在经过反复的网络学习,测试后,最终确定一个误差最少,精度最高,稳定性最好的BP神经网络评估模型。最后,根据训练好的神经网络对数据进行分级,从而最终构建出一个实用性良好的慢性肾病分级预警模型。
关键词:慢性肾病;肾小球滤过率;BP神经网络
一、前言
在众多的神经网络结构中,多层前馈神经网络是目前应用最广泛也是最成熟的一种网络结构。Rumelhart,McClelland和他们的同事洞察到神经网络信息处理的重要性,于1982年成立了一个PDP小组,在研究并行分布信息处理方法,探索人类认知的微结构的过程中,于1986年提出了BP网络(Back.PropagationNetwork,简称BP网络)模型,实现了Minsky的多层网络设想[1]。在多层前馈神经网络MFNN中,网络权值的调整是通过著名的误差反向传播学习算法——BP算法来进行的。BP网络具有非线性映射能力、泛化能力和容错能力,同时BP网络结构简单,是在自动控制中是最有用的学习算法之一,也是慢性疾病分析的首选神经网络[2-5]。因此,本文选取这种网络结构作为慢性肾病分级预测的基础,在后面将对它进行详细论述。
二、基于BP神经网络的慢性肾病分级预警模型设计框架
要设计出慢性肾病的分级预警模型,关键在于如何把慢性肾病进行分级[6-9]。我所采用的设计框架是基于MATLAB的BP神经网络,把从医院获得的临床数据进行筛选,并对网络进行初始化设置,运用BP神经网络对数据进行学习,根据不断的误差修正以及数据的测试,构建起肾小球滤过率的预测模型,根据肾小球滤过率的指标最终建立起符合实际的慢性肾病分级预警模型,如图1所示。
图1慢性肾病预警模型设计框架
因此,本文的整个设计重点分为两部分:第一部分为建立肾小球滤过率的预测模型,第二部分为建立基于人工智能的慢性肾病分级预警模型。
(一)BP神经网络进行肾小球滤过率预测的原理
BP神经网络是通过对以往历史数据的学习,找出不同测量指标对肾小球滤过率的相应的非线性的变化关系,并将具体的资料存储于相应的权值与阈值之中,从而对肾小球滤过率进行预测。
(二)基于BP神经网络的肾小球滤过率预测模型
利用BP神经网络对肾小球滤过率进行预测时,网络的拓扑结构的设计、隐层节点个数的确定、样本数据的选取以及对原始数据、输出数据的预处理的确定等问题,都直接影响着我们所建立的肾小球滤过率预测模型的各项性能[10-12]。
1.网络拓扑结构的设计。
由于网络训练样本是有限的,因此把推广能力作为主要的要求来操作的话,则强调选择能达到要求的最小网络[13]。许多理论都表明,一个三层网络可以任意逼近一个非线性连续函数。由于这种三层网络简单、易于实现、计算量小、并行性强得众多特点,目前仍然是多层式网络训练的首选网络结构之一,并且已经被人们广泛应用于解决实际的问题。因此,鉴于上述提及的论点,本文采取三层网络建模进行对肾小球滤过率的预测。
相比起输入输出层节点的选择,隐层节点数目的选择可谓是一个较为复杂的问题,因为没有很好的表达式来表示。隐层节点的数目与我所需要的输入、输出节点数目密切相关。隐层节点数目太小,则会导致学习过程不能收敛,或者导致网络实用性不强,不能识别以前所没有遇到过的样本;但是如果隐层节点数目过多,虽然网络映射能力会增强,局部极小点会越少,且越容易收敛到全局最小点,但会使学习时间加长,同时使得网络训练过度,这时网络不但记住了训练样本的一般特征,而且记住了训练样本中的一些个别特征,包括随机噪声,这样将会导致网络的容错性降低[14]。
确定一个最佳的隐层节点数的一个常用方法称为试凑法,可先设置较少的隐层节点用以训练网络,随后逐渐增加隐层节点数,用同一样本进行训练,从中确定出网络误差最少的时候对应的隐层节点数[15]。在使用试凑法的时候,可以用一些确定隐层节点数的经验公式。这些公式计算出来的隐层节点数虽然只是一些粗略的估计值,但是可作为大致隐层节点数目的参考:
(3-1)
(3-2)
(3-3)
以上各式中m为隐层节点数,n为输入层节点数,l为输出层节点数,a为1-10之间的常数[16]。在本文中采取了式(3-1)来确定隐层节点数的大概范围,然后将根据实验结果反复修正具体的隐层结点个数。
对于BP网络来说,为了节约训练网络的时间,可以采用部分连接的方式,使得在合理的时间内获得比较好的精度。而本文将采用相邻两层节点全连接,而同一层的节点互不相连的连接方式构造BP神经网络。
(三)肾小球滤过率预测模型的MATLAB实现。
在建立了肾小球滤过率的预测模型之后,就要开始使用MATLAB仿真软件构件BP神经网络,同时通过对网络的不断训练,以求达到最好的肾小球滤过率的预测效果。
1.BP网络的MATLAB实现。
MATLAB是一套功能强大的工程计算及数学分析的可视化软件。1984年,Mathwork公司将MATLAB推向市场。90年代又逐步拓展起数值计算、符号解析运算、文字处理、图形显示等功能,至今,MATLAB已经成为线性代数、自动控制理论、概率论及数理统计、数字信号处理、时间序列分析、动态系统仿真等方面重要的数学计算工具[19]。它具有程序可读性强、程序简单等优点,尤其是在编写含矩阵运算的复杂程序时,能给用户提供极大方便。
现在,神经网络已经成为了解决一些问题的手段以及方法,但利用神经网络来解决问题的时候,必定会设计到大规模的运算量,其中包括了矩阵计算的问题等,考虑到MATLAB的神经网络工具箱的特殊功能,以及效率与准确性的问题,本文选择了专门用于了MATLAB软件进行仿真模拟。
(1)BP神经网络的生成及初始化。
在MATLAB软件中,我们采用newff函数来生成BP网络,而newff函数的调用格式为:
(3-4)
其中PR为维的矩阵,表示R维输入矢量中每维输入的最小值和最大值之间的范围;因此,通常我们会设定,即设定PR为P的最小值和最大值之间的范围;中n表示BP神经网络所具有的层数,而Sn则表示具体第几层具有多少个神经元;中各元素表示各层神经元采用的传递函数;BTF则表示神经网络训练时所用的训练函数;net为生成的BP网络对象。对于newff生成的BP神经网络,网络本身对各层的权值和阈值会自动进行初始化,如果用户需要,则可以对各层网络的权值和阈值的初始化函数重新定义。
(2)BP神经网络的训练。
在BP神经网络生成及初始化后,就可以开始对网络进行训练了。BP神经网络的训练通常采用train函数来完成,在训练之前需要对网络的训练参数net.trainparam进行适当的设置。当设置完训练参数之后,就可以开始调用train函数对BP神经网络进行训练了。该函数采用自适应学习速率法,返回误差参数。其调用格式如下:
(3-5)
其中P是输入样本;T是对应的输出样本;等号的左右两侧的net分别用于表示训练得到的和训练之前的神经网络对象;tr存储了训练过程中的步数信息以及误差信息,并给出了网络误差的实时变化曲线。
(3)BP神经网络的仿真。
在MATLAB的应用中,我们选用sim函数对训练之后所得到的网络进行仿真,sim函数的调用格式如下:
(3-6)
其中,net为神经网络对象,P为输入样本,Pi为输入延迟的初始状态,Ai为层延迟的初始状态,T为输出样本,Y为网络的实际输出,Pf为训练终止时的输入延迟状态,Af为训练终止时的层延迟状态,E为输出样本和实际输出之间的误差,pref为网络性能值。
对于本文的sim函数调用,采取了如下调用格式进行简化:
(3-7)
(4)BP神经网络的保存。
在完成网络的训练后,必须要对训练后的网络进行保存,这样才能在下次进行预测的时候沿用训练过的网络,在MATLAB中,保存网络的调用格式如下:
(3-8)
以上即为肾小球滤过率预测模型的设计流程。
2.BP神经网络进行肾小球滤过率预测的实现。
(1)数据样本的选取。
为实现肾小球滤过率的预测模型,本文选取了广州珠江医院的327例慢性肾病病历作为研究对象。
初始权值采取的是随机数,输入层到单隐层采用的传递函数为tansig函数,单隐层到输出层采用的传递函数为logsig函数,训练函数采用trainlm函数。同时,设置300个训练网络的样本数据,误差精度设置为E
BP神经网络的训练是网络是否成功的一个非常重要的环节,网络训练的好坏直接影响到预测的准确性与稳定性。因此,对网络进行训练和测试的时候,必须要反复修改设置参数,方能达到最佳效果。
在神经网络训练完成之后,需要用另外的测试数据来对网络进行检验,而这些测试的数据应该要是独立的数据。因此,学习与测试过程需要独立开来,一旦BP网络学习完成了,就必须要将权值保存下来,以供下次预测使用。
(四)仿真实验及结果分析。
1.应用肾小球滤过率预测模型建立慢性肾病分级预警模型。
上述建立肾小球滤过率预测模型的目的,正是为了建立起慢性肾病的分级预警模型。在预测到肾小球滤过率的基础上,运用数据,建立起对应的慢性肾病的分级模型。在表1中,根据归纳方法,列出了以上20组预测数据的预测分级情况与这20组数据实际的分级情况的对比。
表120组数据的预测分级与实际分级情况对比
序号123456
预测分级532451
实际分级541551
序号789101112
预测分级413553
实际分级313543
序号131415161718
预测分级133243
实际分级134152
序号1920
预测分级42
实际分级52
从上表1可以看出,基于MATLAB的神经网络对慢性肾病的分级有较好的准确性,能较好地对慢性肾病进行分级预警,因此,具有良好的推广性以及实用性。
三、结论
本文的工作只是一种基础性的、初步的工作,涉及到BP神经网络的一些重要应用显得还比较浅,因此,在今后的研究里面,还需要对其中的许多性能参数进行有效的修改,方能得到理想的结果。
在今后的研究中,对BP网络的算法修改是一个非常大的课题,为了能使网络的预测能力最大限度地根据实际情况达到目的,必须针对现有的数据资料,对使用的算法进行改良。同时,为了更有效,更准确地得到预测结果,需要对样本的数量继续加以增加,方能达到理想的目标。
因此,以BP神经网络对医学各个方向的预测是今后研究许多医学问题的主要趋势,是一个值得深入探讨的重要课题。
参考文献:
[1]程晓霞.慢性肾病的幕后推手.疾病与营养。
[2]张春,邓安国.慢性肾脏病心血管并发症的危险因素与防治.临床内科杂志,200825(7)。
[3]陆汉魁.中华检验医学杂志.20073(11)P.1211-1212。
[4]叶解明.简化估算肾小球滤过率模型算法的参考限及临床特性.2010,25(4)。
[5]M.Kastra.ForecastingCombiningwithNeuralNetworks.Forecast,1996,15(1):49—61。
[6]韩力群.人工神经网络教程.北京:北京邮电大学出版社,2006。
[7]王万森.人工智能原理及其应用.北京:电子工业出版社,2006.27-51。
[8]T.Kohonen.Theselforganizingmap.ProcIEEE,1990,(78):1464~1480。
[9]D.E.Rumelhart,GE.Hinton,R.J.Williams.LearningRepresentationsbyBack.propagatingErrors.Nature,1986,323(9):533-536。
[10]钟义信.智能理论与技术——人工智能与神经网络.北京:人民邮电出版社.1992:45--46。
[11]吴凌云.BP神经网络学习算法的改进及其应用.信息技术,2003,27(7):42—44。
[12]吴耿锋等.股票短期预测的一种非线性方法.上海投资,1999:35、37。
[13]徐丽娜.神经网络控制.哈尔滨:哈尔滨哈尔滨工业大学出版社,2006:241~256。
[14]师智斌,陈立潮,靳雁霞.基于神经网络的股票交易数据的预测研究.华北工学院学报,2003,34(6):12~16。
[15]尹念东.BP神经网络的应用设计.信息技术,2003,27(6):18~20。
[16]韩力群.人工神经网络教程.北京:北京邮电大学出版社,2006:74~75。
[17]吴佑寿,赵明生.激活函数可调的神经元模型及其监督学习与应用.中国科学E辑,2001,3l(3):263。
关键词:垃圾邮件;深度置信网络;分类;受限玻尔兹曼机;支持向量机
0引言
电子邮件的速度快、成本低等优势使其成为人们用于思想和信息交流的强大工具,然而伴随而来的垃圾邮件成为当今网络的一个重要问题[1]。根据Ferris的研究估计,垃圾邮件数量占美国一家企业组织总电子邮件的15%至20%。在这样的情况下,垃圾邮件造成了大量的带宽浪费和邮件系统超载。由于以上严重问题,必须采取措施来解决垃圾邮件现象。已有研究证明最好的方法是垃圾邮件过滤。
通常有两种邮件过滤的方法:知识工程(KnowledgeEngineering,KE)以及机器学习(MachineLearning,ML)。基于第一种方法的垃圾邮件过滤通常使用预定义的集合和用户定义的规则,这样的规则尝试识别信息中垃圾邮件的典型特点;然而,已经证明在实践中该方法的泛化能力较差。
实验表明机器学习分类器具有更好的性能,因此大量的分类方法被提出来实现垃圾邮件检测任务。Puniskis等[2]将神经网络方法应用到垃圾邮件分类。也有其他研究人员将朴素贝叶斯法(NaiveBayes,NB)和支持向量机(SupportVectorMachine,SVM)[3-9]应用到垃圾邮件分类任务中。深度置信网络(DeepBeliefNet,DBN)是拥有深层架构的前馈神经网络,其中包含多个隐含层,而使用DBN的障碍在于如何训练这样的深层网络。通常情况下,由于网络权值的随机初始化,基于梯度的优化容易陷入局部最小值[10]。Hinton等[11]提出了一种新的贪婪逐层非监督算法来初始化基于受限玻尔兹曼机(RestrictedBoltzmannMachine,RBM)的DBN。这个算法提供了网络权值的初始化方法,随后使用基于梯度的算法如梯度下降法来微调网络权值。研究指出,DBN初始化方法的有效性在多个数据集中得到验证[12]。
在受限玻尔兹曼机的快速学习算法的驱动下,本文提出了使用深度置信网络来解决垃圾邮件问题,并且在三个充分研究的垃圾邮件数据集上评价分类方法的性能。将本文的算法和较好的垃圾邮件检测方法支持向量机分类器[13]进行比较,结果表明,基于深度置信网络的方法表现出和SVM相似的性能或者说比SVM更好的性能。
1深度置信网络分类
人工神经网络(ArtificialNeuralNetwork,ANN)研究主要关注的是训练网络来找到正确的权重,可以正确地将输入样本分类。最成功的算法是著名的反向传播(BackPropagation,BP)算法。反向传播的问题是:ANN代表一个f(X,W)的非线性映射,其中:X是输入向量,W是整个网络的权重矩阵。随着网络层数的增加,函数f变得越来越复杂,如此一来将得到多个局部最小值。反向传播算法根据权重W的初始化来收敛到某一最小值,但有时它会收敛到一个表现差的局部最小值而不是全局最小值。对于一些人工智能任务,有些局部最小值是没有问题的,但是有些是不可以接受的。此外,随着网络层数的增加,训练时间变得越来越长。反向传播的另一问题是它需要大量的标签数据,这对于许多需要分类的人工智能任务来说是不可能的。对于之前提到的问题,Hinton等[11]基于DBN和RBM介绍了一种快速学习算法来训练深度人工神经网络。
1.1深度置信网络模型
DBN由多层RBM和一层BP神经网络构成,它的结构如图1所示。其中,多层RBM网络采用无监督的学习方法,而BP神经网络采用有监督的学习方法。自底向上每一层RBM对输入数据进行提取、抽象,尽可能保留重要信息,将最后一层RBM网络的输出信息作为BP神经网络的输入数据。由于每层RBM训练只能使该层网络参数达到最优,而不能使整个网络达到最优,因此本文使用有监督的BP神经网络将误差反向传播,自顶向下微调整个模型。同时,经过若干层RBM网络优化得到的信息作为BP神经网络的输入数据,解决了BP神经网络由于随机初始值容易陷入局部最小值和收敛速度慢的问题。DBN网络是一种深层学习模型,增加RBM网络的层数,可以使提取的信息更抽象,网络的精度更高。
3.3实验结果
下面描述DBN和SVM训练的细节以及在三个数据集上的分类性能表现。对于LingSpam,设置k=1500,而对于SpamAssassin和Enron1设置k=1000。对于SpamAssassin,需要去掉其中的HTML标签。三个数据集上的实验都使用10折交叉验证[15]。Lingspam已经被其创建者划分为10份;对于其他两个数据集,随机将语料库拆分成10份,并保证每一部分保留原有语料库的垃圾邮件比例。
为了将DBN应用到垃圾邮件检测,必须决定隐含层个数
以及每层隐含单元的个数的合适值。
根据已有研究,实验选择了比较简单的有3个隐含层的网络[11-12];通过选择不同隐含单元为网络尝试不同的配置,设置三个隐含层的神经元个数分别为50、50、200,每一层神经元的数量适度的变化并没有显著的影响结果。为了强调DBN方法对于不同架构的鲁棒性,本文实验使用相同的架构。
4结语
通过逐层无监督的学习方法预训练深度网络的权值参数,解决了权值的初始化问题,提出了基于深度置信网络的分类方法,并将其应用到垃圾邮件过滤中。实验结果表明,深度置信网络的分类方法在垃圾邮件过滤中有较好的表现,但是也有一些问题将在今后的工作中继续探讨,例如,如何更好地选择深度置信网络隐藏层数以及每层的单元个数来提高算法的性能。
参考文献:
[1]PUC,WEBBS.Observedtrendsinspamconstructiontechniques:acasestudyofspamevolution[C]//CEAS2006:ProceedingsoftheThirdConferenceonEmailandAntiSpam.MountainView,California:CEAS,2006:104-112.
[2]PUNIKISD,LAURUTISR,DIRMEIKISR.AnartificialneuralnetsforspamEmailrecognition[J].ElectronicsandElectricalEngineering,2006,69(5):73-76.
[3]ANDROUTSOPOULOSI,PALIOURASG,MICHELAKISE.LearningtofilterunsolicitedcommercialEmail[M].Athens,Greece:"DEMOKRITOS",NationalCenterforScientificResearch,2004.
【谷歌图书查找】
[4]METSISV,ANDROUTSOPIULOSI,PALIOURASG.SpamfilteringwithnaiveBayes―whichnaiveBayes?[C]//CEAS2006:ProceedingsoftheThirdConferenceonEmailandAntiSpam.MountainView,California:CEAS,2006:27-28.
[5]ZHANGL,ZHUJ,YAOT.Anevaluationofstatisticalspamfilteringtechniques[J].ACMTransactionsonAsianLanguageInformationProcessing,2004,3(4):243-269.
[6]HOVOLDJ.NaiveBayesspamfilteringusingwordpositionbasedattributes[C]//CEAS2005:ProceedingsoftheSecondConferenceonEmailandAntiSpam.PaloAlto,CA:CEAS,2005:41-48.
[7]FUMERAG,PILLAII,ROLIF.Spamfilteringbasedontheanalysisoftextinformationembeddedintoimages[J].TheJournalofMachineLearningResearch,2006,7:2699-2720.
[8]ALMEIDATA,ALMEIDAJ,YAMAKAMIA.Spamfiltering:howthedimensionalityreductionaffectstheaccuracyofNaiveBayesclassifiers[J].JournalofInternetServicesandApplications,2011,1(3):183-200.
[9]ALMEIDATA,YAMAKAMIA,ALMEIDAJ.EvaluationofapproachesfordimensionalityreductionappliedwithNaiveBayesantispamfilters[C]//ICMLA09:Proceedingsofthe2009InternationalConferenceonMachineLearningandApplications.Piscataway:IEEE,2009:517-522.
[10]SUNZ,XUEL,XUM,etal.Overviewofdeeplearning[J].ApplicationResearchofComputers,2012,29(8):2806-2810.(孙志军,薛磊,许明阳,等.深度学习研究综述[J].计算机应用研究,2012,29(8):2806-2810.
[11]HINTONGE,OSINDEROS,TEHYW.Afastlearningalgorithmfordeepbeliefnets[J].NeuralComputation,2006,18(7):1527-1554.
[12]BENGIOY,LAMBLINP,POPOVICID,etal.Greedylayerwisetrainingofdeepnetworks[C]//NIPS06:Proceedingsofthe2007TwentiethAnnualConferenceonNeuralInformationProcessingSystems.Cambridge:MITPress,2007,19:153-160.
[13]BEUGESCJC.Atutorialonsupportvectormachinesforpatternrecognition[J].DataMiningandKnowledgeDiscovery,1998,2(2):121-167.