0


粒子群算法(PSO)优化的BP神经网络预测回归——附代码

摘要:

BP神经网络是一种常见的多层前馈神经网络,本文通过粒子群算法(PSO)对BP神经网络的网络参数进行寻优,得到最优化的网络参数,并与未使用PSO的BP网络对同一测试样本进行预测,对比分析并突出PSO-BP的优越性。本文章代码可改性强,注释详细,替换输入与输出后即可满足不同的任务,实现自己想要的功能,适合新入门神经网络的同学学习。

1.BP模型神经网络模型

2.粒子群优化算法(PSO)

    粒子群算法的思想源于对鸟群觅食行为的研究,鸟群通过集体的信息共享使群体找到最优的目的地。如下图,设想这样一个场景:鸟群在森林中随机搜索食物,它们想要找到食物量最多的位置。但是所有的鸟都不知道食物具体在哪个位置,只能感受到食物大概在哪个方向。每只鸟沿着自己判定的方向进行搜索,并在搜索的过程中记录自己曾经找到过食物且量最多的位置,同时所有的鸟都共享自己每一次发现食物的位置以及食物的量,这样鸟群就知道当前在哪个位置食物的量最多。在搜索的过程中每只鸟都会根据自己记忆中食物量最多的位置和当前鸟群记录的食物量最多的位置调整自己接下来搜索的方向。鸟群经过一段时间的搜索后就可以找到森林中哪个位置的食物量最多(全局最优解)。

在找到这两个最优值时,粒子根据如下的公式来更新自己的速度和新的位置

v[ ] 是粒子的速度,present[ ] 是当前粒子的位置。pbest[ ] 和 gbest[ ] 如前定义。rand() 是介于(0,1)之间的随机数。c1,c2是学习因子。通常c1=c2=2。

伪代码实现

For each particle

____Initialize particle

END

Do

____For each particle

________Calculate fitness value

________If the fitness value is better than the best fitness value (pBest) in history

____________set current value as the new pBest

____End

____Choose the particle with the best fitness value of all the particles as the gBest

____For each particle

________Calculate particle velocity according equation (a)

________Update particle position according equation (b)

____End

While maximum iterations or minimum error criteria is not attained

在每一维粒子的速度都会被限制在一个最大速度Vmax,如果某一维更新后的速度超过用户设定的Vmax,那么这一维的速度就被限定为Vmax。

3.粒子群算法结合BP神经网络(PSO-BP)

BP神经网络的隐藏节点通常由重复的前向传递和反向传播的方式来决定,通过修改或构造训练方式改隐藏的节点数,相应的初始权重和阈值也会随之变化,从而影响网络的收敛和学习效率。 为了减少影响,通过采用基于粒子群算法的BP神经网络模型对权重和阈值的调整进行优化,从而加快网络的收敛速度和提高网络的学习效率。具体的计算流程如下:

4.程序运行结果

5.本文Matlab代码


本文转载自: https://blog.csdn.net/widhdbjf/article/details/129119554
版权归原作者 神经网络与数学建模 所有, 如有侵权,请联系我们删除。

“粒子群算法(PSO)优化的BP神经网络预测回归——附代码”的评论:

还没有评论