论文导读:研究方向为人工神经网络、图论及其应用。地下水动态受一系列自然和人为因素的影响。关于地下水位的动态预测。探讨基于LM(levenberg-marquardt)算法的地下水位动态预测。
关键词:算法,地下水动态,预测,研究
一.问题的提出
地下水动态受一系列自然和人为因素的影响。研究表明,影响地下水位的主要因素有河道流量、气温、饱和差、降水量、蒸发量等,其变化是一个十分复杂的非线性过程。
关于地下水位的动态预测,目前有许多方法,但各种方法均存在优缺点。BP网络是利用非线性可微分函数进行权值训练的多层神经网络,由于其结构简单、可塑性强,故广泛应用于函数逼近、模式识别、信息分类和数据压缩等。
本文利用BP神经网络优良的非线性映射能力,探讨基于LM(levenberg-marquardt)算法的地下水位动态预测。
二.LM(levenberg-marquardt)算法
在BP神经网络的各种训练算法中,常用的有梯度下降法、共轭梯度法、牛顿算法等,每种算法都有其不足。其中牛顿法是一种基于二阶泰勒(Taylor)级数的快速优化算法,基本方法是

式中 是当前的权值和阈值矩阵, 是当前表现函数的梯度, 为误差性能函数在当前权值和阈值下的Hessian矩阵(二阶导数)
| 
牛顿算法通常比梯度下降法、共轭梯度法的收敛速度快,但对于前馈神经网络计算Hessian矩阵是很复杂的,付出的代价也很大。论文大全。
当表现函数是平方和的形式时,可以采用计算量更小、速度更快的训练算法,即LM(levenberg-marquardt)算法。论文大全。该算法不需要计算Hessian矩阵,Hessian矩阵可以用下面的矩阵来近似代替:

其梯度为
,
式中J是雅克比(Jacobian)矩阵,它含有网络训练误差的一阶导数,是权值和阈值的函数,e是网络训练误差矢量。
有
当 =0时,就变成具有近似Hessian矩阵的牛顿法;当 较大时,LM(levenberg-marquardt)算法就更接近小步长的梯度法。在迭代过程中,如果训练成功,就减小 的值;如果训练失败,就增大 的值。论文大全。这样,该算法每一步迭代的误差性能总是减小的,表现函数最终会减小到设定的值,并且逼近最小误差的速度更快,精度更高。
三.应用实例
本节以MATLAB7.0为平台,滦河某地的地下水动态模拟与预测实例来说明LM(levenberg-marquardt)算法的实际应用.
1)原始数据的引入与预处理
原始数据引自罗定贵等(见表一), 这些数据是滦河某观测站24个月的地下水位实测序列值及5个影响因子实测序列值。河道流量、气温、饱和差、降水量、蒸发量都是影响地下水位的重要因子。本节通过LM(levenberg-marquardt)算法建立地下水位与各影响因子间的非线性关系模型。
表一 地下水位及影响因子实测值
序 号 |
河道 气温 饱和差 降水量 蒸发量 水位 流量 埋深 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
1.5 -10.0 1.20 1.0 1.2 6.92 1.8 -10.0 2.0 1.0 0.8 6.97 4.0 -2.0 2.5 6.0 2.4 6.84 13.0 10.0 5.0 30.0 4.4 6.5 5.0 17.0 9.0 18.0 6.3 5.75 9.0 22.0 10.0 113.0 6.6 5.54 10.0 23.0 8.0 29.0 5.6 5.63 9.0 21.0 6.0 74.0 4.6 5.62 7.0 15.0 5.0 21.0 2.3 5.96 9.5 8.5 5.0 15.0 3.5 6.3 5.5 0 6.2 14.0 2.4 6.8 12.0 0.5 4.5 11.0 0.8 6.9 0.5 1.0 2.0 1.0 1.0 6.7 3.0 -7.0 2.5 2.0 1.3 6.77 7.0 0 3.0 4.0 4.1 6.67 10.0 10.0 7.0 0 3.2 6.33 4.5 18.0 10.0 19.0 6.5 5.82 8.0 21.5 11.0 81.0 7.7 5.58 57.0 22.0 5.5 186.0 5.5 5.48 35.0 19.0 5.0 114.0 4.6 5.38 39.0 13.0 5.0 60.0 3.6 5.51 23.0 6.0 3.0 35.0 2.6 5.84 11.0 1.0 2.0 4.0 1.7 6.32 4.5 -7.0 1.0 6.0 1.0 6.56 |
获得有关地下水位的数据后,在用于训练样本和测试样本之前,需要进行归一化处理,
[pn,minp,maxp,tn,mint,maxt] = premnmx(u,v);
为检验网络的预测效果,测试集应为训练集以外的样本,所以任意选择第6~24组为训练样本,第1~5为测试样本。编写代码:
p=pn(1:5,6:24); %训练集的输入矩阵
t=tn(1:1,6:24); %训练集的目标矩阵
p_test=pn(1:5,1:5); %测试集的输入矩阵
2) 网络训练与水位预测
t1=clock;
net=jinnewrb(p,t,0.1,300,25);
t_test=sim(net,p_test);
waterlevel=postmnmx(t_test,mint,maxt);
waterlevel=postmnmx(t_test,mint,maxt)
datat=etime(clock,t1)
figure
plot(1:5,v(1,1:5)-waterlevel(1,:),'b:o');
执行后产生如下图形和结果:

LM(levenberg-marquardt)算法的地下水位预测误差
waterlevel =6.787.09 6.596.38 5.66
datat = 0.4690
即第1~5组样本的水位预测序列值为:
6.787.09 6.596.38 5.66
水位实测序列值为:6.926.97 6.846.50 5.75
从中可以看出,LM(levenberg-marquardt)算法具有良好的预测效果,运行效率高且泛化能力很强。
四.结论
对于包含数百个权值的函数逼近网络, LM(levenberg-marquardt)算法收敛速度最快,尤其是当精度要求强较高时,该算法具有更小的均方误差,非线性映射能力较强,用它进行地下水位预测,误差小、速度快,具有一定的推广价值。其不足之处是需要较大的存储空间和较多的训练样本数量。
参考文献:
[1] 郑阿奇.MATLAB实用教程[M].北京:电子工业出版社,2006.
[2]罗定贵,郭青,王学军.基于RBF神经网络的地下水动态模拟与预测[J].地球学报,2003,24(5):475-478.
[3] 董长虹.MATLAB神经网络与应用[M].北京:国防工业出版社,2005.
[4]飞思科技产品研发中心.神经网络理论与MATLAB7实现[M] .北京:电子工业出版社,2006.
|