粒子群算法优化的BP神经网络回归预测(Matlab)

目录

摘要:

1.BP模型神经网络模型

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

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

4.程序运行结果

5.代码展示


摘要:

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

1.BP模型神经网络模型

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

PSO的原理已经介绍的很多了,这里就简单列举一下

PSO 算法中的每个粒子都用位置和速度矢量来描述,其中位置矢量表示问题的可能解,速度矢量表示位置变化的方向和大小。假设粒子总数为 M,则第 n 个粒子在维度 d 中的位置和速度表示如下:

 每个粒子通过跟踪它们之前的个体最佳位置和群体最佳位置来调整它们的速度和位置,这两个最佳位置表示为:

PSO 算法的速度和位置更新公式表示为:

 

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

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

4.程序运行结果

使用PSO-BP和单纯BP同时进行训练和预测,并对比两者在同一预测回归任务上的性能情况,结果表明PSO优化后的BP预测准确度要明显好于没有优化的BP。

5.代码展示

通过替换输入与输出即可实现自己想要的功能,非常方便。

部分代码:

%% 使用PSO优化BP神经网络解决回归预测问题
clc;
clear;
close all;
%% 导入数据
load data.mat; % 可以改成自己的数据
temp = randperm(size(NIR,1)); %打乱数据
%% 设置参数及输入P 输出T ,其中一行为一个样本,一列是一个特征
% 训练输入与输出
P = NIR(temp(1:50),:);
T = octane(temp(1:50),:);
% 测试输入与输出
P_test = NIR(temp(51:end),:);
T_test = octane(temp(51:end),:);
% BP神经网络参数定义
inputnum=size(P,2);                                     %输入层神经元个数
hiddennum=2*inputnum+1;                                 %初始隐层神经元个数
outputnum=size(T,2);                                    %输出层神经元个数
w1num=inputnum*hiddennum;                               %输入层到隐层的权值个数
w2num=outputnum*hiddennum;                              %隐层到输出层的权值个数
N=w1num+hiddennum+w2num+outputnum;                      %待优化的变量的个数
%% 定义粒子群优化算法参数
nVar=N;                                                 %变量数目
VarSize=[1,nVar];                                       %变量矩阵大小
VarMin=-0.5;                                            %变量取值下限
VarMax=0.5;                                             %变量取值上限
MaxIt=50;                                               %最大迭代次数
nPop=40;                                            	%种群数目
w=1;                                                    %惯性权重
wdamp=0.99;                                             %惯性重量降低系数
c1=1.5;                                                 %个体学习系数
c2=2.0;                                                 %群体学习系数
VelMax=0.1*(VarMax-VarMin);                             %速度上限
VelMin=-VelMax;                                         %速度下限

  • 2
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值