基于粒子群优化的BP神经网络
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于粒子群优化的BP神经网络
【摘要】人工神经网络的优化学习是其研究中的一个重要课题。将粒子群优化算法用于BP神经网络的学习,将粒子优化算法的全局搜索和BP神经网的局部搜索相结合,并设计一网络实例加以训练,达到了比较满意的效果。
【关键词】粒子群优化算法BP神经网络BP算法BP网络(Back Propagation Network)是用途最为广泛的一类神经网络,具有很强的信息处理能力。但是,由于BP算法的基本思想是最小二乘法,采用的是梯度搜索技术,难免存在收敛速度慢、局部极小等问题。粒子群优化算法(Particle Swarm Optimaziton,简称PSO )是由Kennedy J和Eberhart R C于1995年提出的一种优化算法,源于对鸟群和鱼群群体运动行为的研究。由于其容易理解,易于实现,不要求目标函数和约束条件是可微的,并能以较大概率求得全局最优解,目前已在许多优化问题中得到成功应用。由于它具有并行计算的特点,而且可以提高计算速度。因此,可以用粒子群优化算法来优化BP网络。
一、BP神经网络及其算法
BP网络是一种具有三层或三层以上的单向传播的多层前馈网络,其拓扑结构如图1。
图1 拓扑结构图
BP算法的执行步骤如下:
(1)对各层权系数置一个较小Wij的非零随机数。(2)输入一个样本X=(X1,X2,…,x n),以及对应期望输出) Y=(y1,y2,…,yn)。(3)计算各层的输出。
对于第k 层第i个神经元的输出有:Uki=∑WijXk-1i,Xki=f(Uki)(一般为sigmoid 函数,即f(x)=1/(1-epx(-x))。(4)求各层的学习误差dki。对于输出层,有,k=m,dmi=Xmi(1-Xmi)(Xmi-Ymi)。
对于其他各层,有dxi=Xki(1-Xki)∑Wijdk+1i。(5)修正权系数Wij。Wij (t+1)=Wij-η•dki•Xk-1j。(6)当求出各层权系数之后,可判别是否满足要求。如果满足要求,则算法结束;如果未满足要求,则返回(3)执行。
二、粒子群优化算法
粒子群优化算法与其它进化算法相类似,也采用“群体”与“进化”的概念,所不同的是,粒子群算法不像其它进化算法那样对于个体使用进化算子,而是将每个个体看作是在维搜索空间中的一个没有质量和体积的粒子,并在搜索空间中以一定的速度飞行,每个粒子的飞行速度由其本身的飞行经验和群体的飞行经验调整。
假设在一个n维的目标搜索空间中,有个粒子组成一个群落,其中第i个粒子在n维搜索空间中的位置表示为一个n维向量,每个粒子的位置代表一个潜在
的解。设xi=(xi1,xi2,…xin)为粒子的当前位置;为粒子i当前飞行的速度;pi=(pi1,pi2,…pin)为粒子所经历的最好位置,也就是粒子所经历过的具有最好适应值的位置,称为个体最优位置;pg=(pg1,pg2,…pgn)为整个粒子群迄
今为止搜索到的最优位置,称为全局最优位置。将带入目标函数就可以计算出其适应值,根据适应值的大小衡量的优劣。每个粒子的位置和速度按下述2个公式进行迭代。
(1)vij(t+1)=wvij(t)+c1r1j(t)(pij(t)-xij(t))+c2r2j(t)(pgj(t)-xij(t))
(2)xij(t+1)=xij(t)+vij(t+1)
其中,下标j表示粒子的第j维(j=1,2,…,n)表示第i个粒子(i=1,2,…,n)t表示第t代,c1 、c2 为加速度常数,通常在0~2间取值,c1调节粒子向自身最优位置飞行的步长,c2调节粒子向全局最优位置飞行的步长。r1j~U(0,1),r(2j)(0,1)为两个相互独立的随机函数。为了减小在进化过程中粒子离开搜索空间的可能性,通常限定于一定范围内,即vij∈[-vmax;vmax]。如果问题的搜索空间限定在[-xmax,xmax]内,则可设定。迭代中若粒子的位置和速度超出了对其限定的范围,则取边界值。代表第个粒子目前位置到其迄今为止搜索到的最优位置的距离,pgj(t)-xij(t)代表第个粒子目前位置到整个粒子群迄今为止搜索到的最优位置的距离。公式(1)用于计算粒子的速度,如当前是t时刻,则粒子在t+1时刻速度是由当前时刻的速度、当前位置与该粒子的局部最优位置的距离、当前位置与全局最优位置的距离共同决定的;公式(2)用于计算粒子速度更新后的位置,它由粒子当前位置和粒子更新后的速度决定。所有粒子的初始位置和速度随机产生,然后根据上述2个公式进行迭代,不断变化它们的速度和位置,直到找到满意解或达到最大的迭代次数为止(粒子的位置即是要寻找的解)。
三、优化实例
相比BP算法具有较强的信息处理能力,但是它的收敛速度很慢,又难以避免的存在局部极小问题,而且BP网络结构的确定也缺乏有效的方法。粒子群算法计算简单,它根据目标函数计算适值,对问题依赖性小;多点并行操作,有效的防止搜索过程收敛于局部最优解;概率决定寻优规则,采用高效启发式搜索,而非盲目或随机的搜索;具有并行计算的特点,可通过大规模并行计算提高计算速度,但是,从粒度计算角度来讲,粒子群算法属于粗粒度计算(尽管可细粒度实现),是一种全局搜索优化,要得到精确解存有困难,有必要采用某种局部搜索方法弥补此不足,因此,我们决定用粒子群算法来优化BP神经网络,使粒子群算法和BP算法互为补偿。可以采用优化神经网络的结构、算法和权值等,本例采用优化权值的方式来训练一个1-4-1的BP神经网络,使其逼近正弦函数。利用matlab6.5进行编程。算法流程见图2。
参数设置如下:这个实例取学习因子c1=1.5,c2=2.5,惯性权重ω=1.4,ω将随着迭代次数的增加而逐渐减小,当ω小于0.4时,将令ω=0.4,即不再减小,以保证迭代后期粒子能够在一定空间探索更好的解。本分别用标准粒子群优化算法做2次实验,它们的群体规模都是:50和100,其他参数不变,网络训练50个单位时间,训练目标为误差小于0.008,其他参数采用默认值。训练完毕得到网络的训练情况:(1)Fpoch 200/561,MSE 0.006 978 29/0.009,Gradient 0.046 123 4/1e-006(优化网络)。(2)Fpoch 561/561,MSE 0.026 228 2/0.008,Gradient 0.146 69 /1e-006(标准网络)。
由图3可看出,粒子群优化的神经网在191个单位时间时由于目标误差达到,停止训练,而BP神经网在500个单位时间时误差为0.02222242,远没有达到目标误差0.008。粒子群优化的神经网效果明显好于标准BP神经网络。
单纯用粒子群算法或BP算法训练神经网络,都存在某些不足。本文将二者有机的结合,使其互为补偿,取得了很好的训练效果。
参考文献:
[1] 张颖,刘艳秋.V 软计算方法V[M]. 北京:科学出版社,2002.
[2]罗四维.V 遗传算法神经网络的学习算法[J]. 北方交通大学学报.
[3]徐宗本,张讲社,郑亚林.V 计算智能中的仿生学V 理论与算法[M].北京:科学出版社,2003.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。