基于遗传算法GA优化的BP神经网络预测和分类含优化前对比文章目录基于遗传算法GA优化的BP神经网络预测和分类含优化前对比1. BP神经网络预测原理简介2. 遗传算法GA优化BP神经网络原理3. GA-BP模型建立3.1 模型与数据介绍3.2 GA与BP参数设置3.3 遗传算法优化BP的设计4. 测试结果5. MATLAB代码1. BP神经网络预测原理简介BP 神经网络是一种多层前馈神经网络常用的为输入层-单隐含层-输出层的三层结构如下图所示。BP神经网络训练的主要思想输入的信号特征数据先映射到隐含层激活函数实现再映射到输出层默认采用线性传递函数得到期望输出值。将期望输出值和实际测量值做比较计算误差函数J再将误差反向传播通过梯度下降等算法来调节BP网络的权值和阈值。重复该过程直到满足设定的目标误差或者最大迭代次数等终止准则停止训练。通过下面的例子来理解每一层的作用。1输入层相当于人的五官五官获取外部信息对应神经网络模型input端口接收输入数据的过程。2隐含层对应人的大脑大脑对五官传递来的数据进行分析和思考神经网络的隐含层hidden Layer对输入层传来的数据x进行映射简单理解为一个公式hiddenLayer_outputF(w*xb)。其中w、b叫做权重、阈值参数F()为映射规则也叫激活函数hiddenLayer_output是隐含层对于传来的数据映射的输出值。换句话说隐含层对于输入的影响因素数据x进行了映射产生了映射值。3输出层可以对应为人的四肢大脑对五官传来的信息经过思考隐含层映射之后再控制四肢执行动作向外部作出响应。类似地BP神经网络的输出层对hiddenLayer_output再次进行映射outputLayer_outputw *hiddenLayer_outputb。其中w、b为权重、阈值参数outputLayer_output是神经网络输出层的输出值也叫仿真值、预测值理解为人脑对外的执行动作比如婴儿拍打桌子。4梯度下降算法通过计算outputLayer_output和神经网络模型传入的y值之间的偏差使用算法来相应调整权重和阈值等参数。这个过程可以理解为婴儿拍打桌子打偏了根据偏离的距离远近来调整身体使得再次挥动的胳膊不断靠近桌子最终打中。BP神经网络所实现的功能作用“能尽数天星便能尽知棋势”。围棋体现着大自然的道法而在AlphaGo击败人类围棋冠军则是使用算法来寻求围棋的道实现人机对战。BP神经网络训练的结果得到多维数据x与y之间存在的规律即实现由x来映射逼近y。而BP训练出来得到的模型是否可靠表现为对其他未经过训练的数据输入到BP中是否能输出较为准确的预测值。对此在BP神经网络训练之后还需要再给指标因素x1到训练好的bp network中得到相应的BP输出值预测值predict1通过作图等计算MseMapeR方等指标来对比predict1和y1的接近程度就可以知道模型是否预测准确。这是BP模型的测试过程即预测过程。小结BP神经网络实现了a). 根据训练集数据训练得到一个模型b). 对模型的可靠性与准确性进行测试集不同于训练样本数据预测和实际值对比检验预测的精度。c). 只给输入得到预测值可理解为测试集的数据丢了实测值本质一样给输入到BP中得到输出。由于该情况无输出纯预测无法检验精度是否合格写论文时无太大意义而不必实现该情况的步骤。2. 遗传算法GA优化BP神经网络原理在BP神经网络训练的过程中通过前向传播数据与误差反向传递使用算法来更新权重阈值。一方面在该过程中第一次前向传播过程的权重和阈值该如何确定即如何初始化权重和阈值。深度学习的方法是采用随机化方法得到初始的权值与阈值参数。另一方面选定了初始参数后梯度下降算法将初始参数值作为起点进行参数优化与更新。在优化算法的发展中有两类确定性算法与启发式算法。确定性算法指使用数学方法求最优问题找到的结果与求导的初始点有关一般为确定值。启发式算法则是灵感源于自然界生物进化的规律主要思想为迭代逼近最优优化的结果为满足工程精度要求的可变值无限接近理论最优值。在上述过程中作为一种确定性算法梯度下降算法的收敛性是得到了证明的但收敛值并非一定是全局最优与初始的参数值梯度下降算法的起点有关。由于随机初始的参数未必是最优的起点指既训练准确又预测可靠因此训练的模型可靠性和稳定性受到了初始随机参数的很大影响。作为启发式算法遗传算法GA具体很好的全局搜索能力引入GA用来解决此问题。主要思想将参数作为问题的决策变量模型的精度作为问题的目标函数。遗传算法GA优化BP神经网络的算法流程图如下3. GA-BP模型建立3.1 模型与数据介绍下面以MATLAB官方提供的化学传感器的数据集为例进行建模。数据介绍采集某个化学实验过程的数据将8个传感器的采样数据作为输入x第9个传感器的采样数据作为输出y。数据格式如下样本编号x1x2x3…x8Target即y1––––––2––––––…––––––n––––––读取数据%%读取读取 dataxlsread(数据.xlsx,Sheet1,A1:I498);%%使用xlsread函数读取EXCEL中对应范围的数据即可%输入输出数据 inputdata(:,1:end-1);%data的第一列-倒数第二列为特征指标 outputdata(:,end);%data的最后面一列为输出的指标值 Nlength(output);%全部样本数目 testNum100;%设定测试样本数目 trainNumN-testNum;%计算训练样本数目3.2 GA与BP参数设置1 BP参数设置对权重和阈值有关的参数进行说明a). 输入层和输出层节点使用size函数直接获取。函数用法[M,N]size(A)M为A的行数N为A的列数。size(A,2)得到的是第二个参数N即列数。此数据中输入8个维度指标输出的为1个维度指标。即输入层节点为8输出层节点为1。inputnumsize(input,2);%输入层神经元节点个数 outputnumsize(output,2);%输出层神经元节点个数b). 隐含层节点的确定过程使用循环来遍历范围内的隐含层节点与训练误差情况。因为要找最小的误差所以初始化训练误差时将MSE设置较大的数字用于在循环中确定最佳的隐含层节点。%确定隐含层节点个数%采用经验公式hiddennumsqrt(mn)am为输入层节点个数n为输出层节点个数a一般取为1-10之间的整数 MSE1e5;%初始化最小误差forhiddennumfix(sqrt(inputnumoutputnum))1:fix(sqrt(inputnumoutputnum))10c). 其他BP参数学习速率训练次数训练的目标误差等%网络参数 net.trainParam.epochs1000;%训练次数 net.trainParam.lr0.01;%学习速率 net.trainParam.goal0.000001;%训练目标最小误差2遗传算法GA参数设置%初始化ga参数 PopulationSize_Data30;%初始种群规模 MaxGenerations_Data50;%最大进化代数 CrossoverFraction_Data0.8;%交叉概率 MigrationFraction_Data0.2;%变异概率3.3 遗传算法优化BP的设计1优化变量的设计使用遗传算法求解优化问题时对于决策变量优化变量有三种编码方式二进制编码向量形式编码矩阵形式编码。由于权重和阈值分别以m×n维的矩阵向量形式存在与BP神经网络结构net中。为方便对每个元素都进行优化先将元素分别取出然后按取的顺序放入到向量染色体中完成编码。权重和阈值的经验范围为[-1,1]可适当将寻优的范围放宽取[-3,3]。优化变量元素个数的计算如下nvarsinputnum*hiddennum_besthiddennum_besthiddennum_best*outputnumoutputnum;%变量维度 lbrepmat(-3,nvars,1);%自变量下限%repmat得到一个nvars×1维的向量每个元素的值都为-3即优化变量下限 ubrepmat(3,nvars,1);%自变量上限2适应度函数的设计采用以下公式计算适应度值。F min ⁡ ( M S E Trainingset , Testingset ) F\min \left(M S E_{\text {Trainingset }, \text { Testingset }}\right)Fmin(MSETrainingset,Testingset​)式中TraingingSetTestingSet分别为训练集和测试集的样本。因为预测精度越高说明误差越低所以公式设计为求解最小的均方误差。使用遗传算法后适应度函数值越小表明训练越准确且兼顾模型的预测精度更好。3算法设计将遗传算法视为一个“黑箱”优化器。在确定了优化的变量与目标适应度函数后只需要经过该“黑箱”即可输出最小的误差精度最好值和最优解变量再把变量赋给BP神经网络的权值矩阵与阈值向量的相应位置进行优化后的BP训练与测试即可。说明在遗传算法的“黑箱”求解器中进行的算法操作为选择、交叉与变异。4. 测试结果1 BP各层的神经元个数的确定过程2 遗传算法GA进化曲线3 遗传算法GA优化BP神经网络与BP的预测结果对比4 预测值和真实值的误差计算对比MAE、MSE、RMSE、MAPE5. MATLAB代码以下介绍了常用的BP神经网络预测和分类代码模型及编写相应的代码相关模型原理见博客主页。BP神经网络预测优化代码 (点击蓝色字体下载资源)遗传算法优化BP神经网络回归预测MATLAB代码粒子群算法PSO优化BP神经网络回归预测MATLAB代码布谷鸟搜索算法CS优化BP神经网络回归预测MATLAB代码海鸥优化算法SOA优化BP神经网络回归预测MATLAB代码鲸鱼优化算法WOA优化BP神经网络回归预测MATLAB代码麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码人工蜂群算法ABC优化BP神经网络回归预测MATLAB代码原子搜索算法ASO优化BP神经网络回归预测MATLAB代码蚁群算法ACO优化BP神经网络回归预测MATLAB代码混合遗传蚁群算法GA-ACO优化BP神经网络回归预测MATLAB代码基于Logistic混沌映射改进的麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码基于Logistic混沌映射改进的原子搜索算法ASO优化BP神经网络回归预测MATLAB代码基于Sine混沌映射改进的麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码基于Tent混沌映射改进的麻雀搜索算法SSA优化BP神经网络回归预测MATLAB代码基于Tent混沌映射改进的原子搜索算法ASO优化BP神经网络回归预测MATLAB代码BP神经网络分类及优化算法模型BP神经网络数据分类算法MATLAB代码遗传算法GA优化BP分类算法MATLAB代码麻雀搜索算法SSA优化BP神经网络分类MATLAB代码蝙蝠算法BA优化BP神经网络分类MATLAB代码Elman神经网络数据分类算法MATLAB代码代码点击上面的表格