基于BP神经网络的长江流域人口预测研究
预测出未来的值。然而由于受到多种因素的影响,系统的发展变化是高度非线性的,很难直接找到描述系统发展变化规律的函数。神经网络为寻找这种规律提供了有效的方法,它具有高度的自学习能力,可以以任意精度逼近非线性函数,因此非常适合模拟复杂的非线性系统[2]。1.1 BP神经网络
在时间序列预测中,多层前馈神经网络(Mul-ltiayerFeed-forwardNetwork),简称MLFN,是最常使用的神经网络。从数学角度看,MLFN网络成为输入输出的非线性函数。如对某个时间序列为{pt}进行预测,可用pt+k=f(pt,pt-1,…,pt-k+1
)描述,时间序列预测即是用神经网络来拟合函数f(·),然后预测未来值。
当前应用中较为广泛和成熟的是“误差逆向传播网络”(Errorbackpropagationnetwork),简称BP神经网络,可以用它作为时间序列的预测模型。一个或多个隐层和输出层组成。隐层中的BP网络通常由输入层、神经元均采用sigmoid型变换函数,输出层的神经元采用纯线性变换函数,网络通常采用BP学习算法进行网络的训练。当正向传播时,输入样本从输入层经BP网络的学习过程由2部分组成:正向传播和反向传播。隐层单元处理后传向输出层,如果在输出层得不到样本输出,则转入反向传播。通过反向传播(BP)误差信号(样本输出与网络输出之差)按原连接通路反向计算,由梯度下降法调整各层神经元的连接权值和阈值,使误差的平方和最小。神经网络理论已经证明BP网络具有强大的非线性映射能力和泛化功能,任一连续函数或映射均可采用三层网络加以实现图1所示。
1.2 BP算法的改进
基本BP算法采用最速下降法(梯度下降法)使得误差趋向最小、直至达到误差要求。在实际应用中,存在收敛速度慢、局部极值等缺陷,因此出现了许多改进算法,如动量法、学习率自适应调整策略。动量法能够降低网络对于误差曲面局部细节的敏感性,有效抑制网络陷于局部极小;学习率自适应调整策略利用Levenberg-Marquardt数值优化法来实现反传算法,从而有利于缩短学习时间
[3]
[3,4]
。采用一个隐层的BP神经网络建立时间序列预测模型,其网络结构如
图1 具有一个隐层的BP神经网络
。
2 基于BP网络的人口预测模型的建立
2.1 样本数据预处理
对长江流域(包括上海、浙江、江苏、湖北、湖南、重庆、四川、江西、安徽7省2市)的人口进行预测,从《中国人口统计年鉴》中得到的1988~2001年的人口统计结果作为样本数据,见表1。
表1 长江流域1988~2001年的人口统计数据
年份(t)人口(p(t))/(万人)
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
200047802
200148404
425704315844110446304535445513459294630246730471274743947743
由于历年人口数据是一维时间序列,但BP神经网络要求用多组输入来训练网络,而且输入数据范围一般在[0,1]。因此对样本数据p(t)根据式(1)进行预处理,预处理结果p′(t)见表2的最后一列。
p′(t)=p(t)/10
式中,n为所有统计数据中最大值的整数位数,这里n=5。2.2 网络结构的确定
神经网络理论Kolmogorov定理已经证明,经充分学习的三层BP网络可以逼近任何函数。因此选择三层BP网络(如图1所示)。时间序列数据输入层节点数是人为确定的,输入层节点数过多,造成网络学习次数较大;输入层节点数过少,不能反映后续值与前驱值的相关关系。经反复试验最终确定为4个,且输出层节点数为1。隐层节点数的选择在所有BP网络中目前还没有理论上公认的推导方法。大多通过反复学习,在相同总体误差情况下,选择收敛最快的。采用一种经验算法“0.618法”来确定隐层节点数,表达式为
m=
n+0.618(n-t) (n≥t)t-0.618(t-n) (n<t)
(2)
n
(1)