一、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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  10. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

最新文章

  1. jQuery之替换节点
  2. Test execution order
  3. 数学大神攻克猜字游戏Wordle,求解算法成绩逼近理论极限,连信息论都用上了...
  4. 中文预训练模型ZEN开源,效果领域内最佳,创新工场港科大出品
  5. win10只有c盘怎么分区_磁盘分区:系统C盘空间不足怎么办?
  6. P3311-[SDOI2014]数数【AC自动机,dp】
  7. 系统防止绕过程序直接数据库修改数据(金额等敏感数据)
  8. span 里面的文字不显示_“无糖饮料”显示不含糖,为何还这么甜?原来里面加了这个...
  9. intel A20地址线
  10. 查看dll/exe所依赖的库文件、导出函数、系统位数
  11. 学JS必读,《JavaScript高级程序设计(第3版)》
  12. emule电骡无法连网的原因和解决方法-更新服务器与kad节点
  13. 【POJ 3764】 The xor-longest path
  14. IDEA 2019 激活码(注册码)
  15. bluefish4框架平台
  16. 做国外广告联盟:你要学会这些运作方法
  17. 宽屏电脑应用不全屏显示问题
  18. 【数据结构】快速排序详解
  19. 技术需求文档,应当这么写!
  20. 国际贸易术语解释通则(CIP 运费和保险费付至(……指定目的地))

热门文章

  1. Vue生命周期学习总结
  2. linux驱动之设备号与创建设备节点
  3. git stash pop 冲突,git stash list 中的记录不会自动删除的解决方法
  4. Windows 10 下使用Git
  5. Node.js 0.8.20 稳定版发布
  6. AutoCAD2020线型比例修改
  7. 传智播客 Web静态服务器-6-epoll
  8. Atitit 业务领域体系分类 目录 1. 按照互联网企业类型以及只是体系类的分类 2 2. 电子商务 2 3. **通信类社交 Im类 em 2 4. **信息搜索类爬虫 2 4.1. 媒体
  9. atitit 每季度日程表 每季度流程 v3 qaf.docx Ver history V2 add diary cyar data 3 cate V3 fix detail 3cate ,
  10. Atitit 数据库视图与表的wrap与层级查询规范