一、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.创建grnn
spread=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 : 染色体长度
% bound      input : 变量的取值范围
% ret        output: 染色体的编码值
flag=0;
while flag==0pick=rand(1,length(lenchrom));ret=bound(:,1)'+(bound(:,2)-bound(:,1))'.*pick;flag=test(lenchrom);     %检验染色体的可行性
end
function ret=Cross(pcross,lenchrom,chrom,sizepop,bound)
%本函数完成交叉操作
% pcorss                input  : 交叉概率
% lenchrom              input  : 染色体的长度
% chrom     input  : 染色体群
% sizepop               input  : 种群规模
% 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    %如果两个染色体不是都可行,则重新交叉endend
ret=chrom;%出售各类算法优化深度极限学习机代码392503054

三、运行结果



四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.

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

  1. 【ELM分类】基于matlab遗传算法优化ELM神经网络数据分类【含Matlab源码 2138期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[ELM分类]基于matlab遗传算法优化ELM神经网络数据分类[含Matlab源码 2138期] 点击上面蓝色字体,直接付费下载,即可. ...

  2. 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】

    一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...

  3. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  4. 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】

    一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  5. 【Matlab条形码识别】二维条形码识别【含GUI源码 607期】

    一.代码运行视频(哔哩哔哩) [Matlab条形码识别]二维条形码识别[含GUI源码 607期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  6. 【LSSVM分类】基于matlab遗传算法优化LSSVM烟叶识别【含Matlab源码 1944期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[ELM分类]基于matlab鲸鱼算法优化核极限学习机数据分类[含Matlab源码 2012期] 获取代码方式2: 付费专栏Matlab智 ...

  7. 【生产优化】基于matlab遗传算法求解帐篷工序问题【含Matlab源码 2145期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [生产优化]基于matlab遗传算法求解帐篷工序问题[含Matlab源码 2145期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  8. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  9. 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  10. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

最新文章

  1. Tensorflow实现神经网络及实现多层神经网络进行时装分类
  2. 在IIS6中FLV不能播放
  3. 苹果mp3软件_神技能!!!音视频制作软件
  4. Ubuntu2004,虚拟机中使用,解决系统图标变大变小以及分辨率降低问题
  5. Python编程系列教程第13讲——隐藏数据和封装
  6. 集群故障处理之处理思路以及听诊三板斧(三十四)
  7. lvs服务器需要开启web服务么_Centos7搭建LVS+Keepalived高可用Web
  8. OpenCV入门及应用案例:手把手教你做DNN图像分类
  9. Import Changes from Direct3D 11 to Direct3D 12
  10. springboot mysql事物_springboot如何开启数据库事务
  11. php观察者模式使用场景,php设计模式系列--观察者模式
  12. 纯前端实现人脸识别-提取-合成
  13. Python 面向对象编程(一)
  14. 计算机无法启动printspooler,Win7系统下print spooler服务无法启动的解决方法
  15. 从一个例子看ASCII点阵字库的应用原理
  16. 使用Texmacs帮助您写格式规范统一的BLOG
  17. Win11系统Windows.old怎么删?Windows.old删不了怎么办?
  18. 阿里巴巴2021校招
  19. android webview 劫持,微信webview 及第三方浏览器劫持视频问题
  20. spleeter分离伴奏和人声

热门文章

  1. 《计算机硬件技术基础》在线平时作业1
  2. Android drawable 渐变色
  3. Nginx443端口被System占用解决方式
  4. chia如何给别人P盘
  5. 和刚入门的菜鸟们聊聊--什么是聚簇索引与非聚簇索引
  6. 间隔问题(时间间隔,日期间隔等)
  7. JAVA中Bean是什么?
  8. Java链接生成二维码
  9. 面试题(四)你工作中常用的jvm参数有哪些?
  10. react中ES6语法报错:static propTypes,static defaultProps :modulbuild failed:SyntaxError