🗒️应用PSO的BP网络函数拟合
2023-11-21
| 2024-7-26
Words 2154Read Time 6 min
欲使用BP网络逼近一个非线性函数:

仅使用BP网络

设BP网络隐层节点数为6:
notion image
notion image
这个网络看起来训练了1000次,但实际上仅训练了一次,此时的网络权值还没有达到最优。且由于训练进行到输入的较后部分时,逼近输入较前部分的权值已经被覆盖,导致训练一次得到的网络权值仅是在最后一段内的最优,并不能在整个输入区间内逼近目标函数。例如在上述程序中,如果利用最终得到的权值计算输出(将注释部分解除即可),则有:
notion image
notion image
为了解决这个问题,就需要进行多次训练。为了兼顾训练的快速性和训练的效果,选取大小为100的训练集。训练集的选取方法为:将自变量取值范围1000等分。从1开始,间隔10抽样,例如第一次抽样1,11,21……,991;第二次抽样为2,12,22……992.依次类推,循环往复。为了避免训练结果只能逼近输入的最后一段,应减小学习率,此外设置一个随机的翻转因子,将训练集前后翻转。共进行1000轮训练,之后使用最终得到的权值计算输出。为了验证BP网络训练的效果,不应该使用训练集中的数据测试输出,应当重新选择测试集。测试集的选取方法为:将自变量取值范围101等分,取出101点数据作为测试集。由于1000不能被101整除,可知测试集与训练集是不同的。编写的程序如下:
运行的结果如下:
notion image
notion image
notion image

PSO+BP网络

其本质仍然是一个BP网络,但是不再使用BP网络的学习规则,而是改用PSO来寻找最优的网络权值。每次由PSO更新权值后,由BP网络计算输出与参考输出之间的差值。这里的PSO是一个趋向最小值的优化。
notion image
notion image
notion image
比较两次实验的结果,可以看出,使用PSO优化BP网络可以减小逼近误差,即逼近效果更好。多次运行可以发现,使用PSO优化得到的网络权值较为稳定,逼近效果较好。但纯BP网络由于随机赋予的初始权值不同,可能存在局部最优解的问题,并不是每一次运行都能很好的逼近目标函数。
 
  • 智控
  • 粒子群优化算法SIFT特征点检测
    Loading...