700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【GRNN回归】基于matlab遗传算法优化GRNN数据回归拟合【含Matlab源码 1401期】

【GRNN回归】基于matlab遗传算法优化GRNN数据回归拟合【含Matlab源码 1401期】

时间:2023-07-02 06:58:52

相关推荐

【GRNN回归】基于matlab遗传算法优化GRNN数据回归拟合【含Matlab源码 1401期】

一、DBN算法简介

DBN是深度学习方法中的一种常用模型,是一种融合了深度学习与特征学习的神经网络。DBN网络结构是由若干层受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)和一层BP组成的一种深层神经网络。DBN结构如图2所示。

图2 DBN结构示意图

DBN训练过程由预训练和微调构成,数据首先由输入层输入到网络结构中,生成一个向量V,通过权重值W传给隐藏层得到H,单独无监督训练每一层RBM网络,确保特征向量映射到不同特征空间,最后由BP网络接收RBM的输出特征向量作为它的输入特征向量,反向传播网络自顶向下将错误信息传播给每一层RBM,微调整个DBN网络,进行有监督的训练,最终得到网络中的权重以及偏置。

1 受限玻尔兹曼机

RBM是1986年由Smolensky提出的一种可通过输入数据集学习概率分布的随机生成神经网络。RBM模型是包含一种可观察变量(v)和单层隐藏变量(h)的无向概率图,RBM只有两层神经元,它是一个二分图,两层间的单元相互连接,层内的任何单元之间不存在连接。RBM结构见图3。

图3 RBM结构示意图

RBM是一种基于能量的模型,任何两个连接的神经元之间都有一个权重W来表示连接权重Wij, Wij表示可观察变量单元i和隐藏变量单元j之间的权重,观察层与隐藏层分别用v和h来表示,则连接权重与偏差决定的观察层变量v和隐藏层变量h的联合配置能量如下:

其中ai是可观察层单元的偏置,bj是隐藏层单元的偏置,Wij为可观察层单元与隐藏层单元之间的连接权重,基于能量函数的可观察层和隐藏层可以得到概率分布:

其中Z为配分函数的归一化常数,即所有参数下的能量之和,该函数累加所有可观察向量和隐藏向量的可能组合。

RBM中的每层中的神经元只存在两种状态0或1,给定任意层中的各神经元的状态,可以得到可观察层神经元和隐藏层神经元的状态概率如下:

根据Hinton在2002年提出的对比散度,可知参数的变化规则如下:

其中,ε是学习率,⟨⋅⟩data表示训练原始数据集的模型定义的分布,⟨⋅⟩recon表示一步重构后模型定义的分布。

2 BP神经网络

BP神经网络是一种多层的前馈神经网络,其输出结果采用的是前向传播,误差采用反向传播方式进行的。BP神经网络是含有输入层、隐藏层和输出层的三层神经网络结构。具体如图4所示。

BP神经网络由上一层神经元连接到下一层神经元时可以接收到上一层神经元传递来的信息,并经过“激活”将接收到的值传递给下一层。对于误差的反向传播是从下一层神经元传递给上一层神经元,一次性调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。

图4 BP神经网络结构图

二、部分源代码

%% 基于grnn的回归拟合%% 1.初始化环境clc;clear;close all;format compact;rng('default')%% 2.加载数据load data % 你发的fussy.m提取出的p t保存在了data.mat里面% 划分数据集N=size(p,2);n=randperm(N);m=floor(N*0.7);p_train=p(:,n(1:m));t_train=t(:,n(1:m));p_test=p(:,n(m+1:end));t_test=t(:,n(m+1:end));clear N n m p t%% 3.创建grnnspread=1;net=newgrnn(p_train,t_train,spread);pred_train=sim(net,p_train);pred_test=sim(net,p_test);%% 4.结果统计disp('优化前')mse_train=mse(pred_train-t_train);disp(['训练集 mse:',num2str(mse_train)])function ret=Code(lenchrom,bound)%本函数用于随机初始化一条染色体% lenchrom input : 染色体长度% boundinput : 变量的取值范围% ret output: 染色体的编码值flag=0;while flag==0pick=rand(1,length(lenchrom));ret=bound(:,1)'+(bound(:,2)-bound(:,1))'.*pick;flag=test(lenchrom);%检验染色体的可行性endfunction ret=Cross(pcross,lenchrom,chrom,sizepop,bound)%本函数完成交叉操作% pcorssinput : 交叉概率% lenchrom input : 染色体的长度% chrominput : 染色体群% sizepopinput : 种群规模% ret output : 交叉后的染色体for i=1:sizepop %每一轮for循环中,可能会进行一次交叉操作,染色体是随机选择的,交叉位置也是随机选择的,%但该轮for循环中是否进行交叉操作则由交叉概率决定(continue控制)% 随机选择两个染色体进行交叉pick=rand(1,2);while prod(pick)==0pick=rand(1,2);endindex=ceil(pick.*sizepop);% 交叉概率决定是否进行交叉pick=rand;while pick==0pick=rand;endif pick>pcrosscontinue;endflag=0;while flag==0% 随机选择交叉位pick=rand;while pick==0pick=rand;endpos=ceil(pick.*sum(lenchrom)); %随机选择进行交叉的位置,即选择第几个变量进行交叉,注意:两个染色体交叉的位置相同pick=rand; %交叉开始v1=chrom(index(1),pos);v2=chrom(index(2),pos);chrom(index(1),pos)=pick*v2+(1-pick)*v1;chrom(index(2),pos)=pick*v1+(1-pick)*v2; %交叉结束% flag1=test(lenchrom,bound,chrom(index(1),:)); %检验染色体1的可行性% flag2=test(lenchrom,bound,chrom(index(2),:)); %检验染色体2的可行性flag1=test(lenchrom); %检验染色体1的可行性flag2=test(lenchrom); %检验染色体2的可行性if flag1*flag2==0flag=0;else flag=1;end %如果两个染色体不是都可行,则重新交叉endendret=chrom;%出售各类算法优化深度极限学习机代码392503054

三、运行结果

四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,.

[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,.

[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,.

[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,.

[5]方清城.MATLAB Ra神经网络设计与应用28个案例分析[M].清华大学出版社,.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。