【DBN分类】麻雀算法优化深度置信网络SSA-DBN数据分类【含Matlab源码 2318期】

本文介绍了深度置信网络(DBN)及其与SSA(麻雀搜索算法)结合用于入侵检测的方法。DBN通过预训练和微调阶段,配合SSA进行结构优化,提升特征提取性能和检测率。Matlab代码示例展示了不同优化算法对DBN预测效果的比较。
摘要由CSDN通过智能技术生成

⛄一、运行结果

在这里插入图片描述
在这里插入图片描述

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄二、DBN

DBN由数个RBM堆叠构成,通常会在顶层加入一个BPNN来实现有监督的分类,DBN中下一层的隐藏层就是上一层的可见层。图1所示的DBN即由两个RBM和顶层一个BPNN构成。
在这里插入图片描述
图1 深度置信网络结构

DBN模型的训练分两个阶段:第1阶段是预训练阶段,自下而上分别对每一个RBM进行无监督训练,得到每一层之间的权重w和每一层的偏置b;第2阶段是微调阶段,自上而下对整个DBN中的参数进行微调,以提高模型性能。顶层BPNN接收下一层RBM输出的特征向量作为输入,可以进行无监督训练,也可以在输入层中加入标签实现有监督训练。

DBN在特征提取方面的性能较好,通过顶层BPNN的有监督训练可以学习已知攻击类型的网络流量特征,对于未知的攻击类型也可以通过它在特征提取方面的优势提高检测率,适用于需要处理大量网络数据的入侵检测。

2 RBM
RBM是一种随机神经网络,由一层可见层和一层隐藏层构成,一般可见层为输入层,隐藏层为输出层。RBM同一网络层的神经元无连接,相邻网络层间的神经元全连接。RBM的网络结构如图2所示。
在这里插入图片描述
图2 RBM的网络结构
用向量v表示可见层的状态,向量h表示隐藏层的状态,可见层有m个神经元,隐藏层有n′个神经元,vi表示可见层第i个神经元,hj表示隐藏层第j个神经元,RBM的参数θ={wij,ai,bj},wij为两层神经元之间的权重值,ai表示可见层第i个神经元的偏置值,bj表示隐藏层第j个神经元的偏置值。则RBM的能量函数E[5]定义为:
在这里插入图片描述
当参数确定时,基于能量函数E可得(v,h)的联合概率分布:
在这里插入图片描述
其中,Z(θ)为所有可能情况下的能量和,称为配分因子。
因此,可以得到两层的激活概率分别为:
在这里插入图片描述
其中,σ(x)为sigmoid激活函数。

为了尽快得到最大概率,采用对比散度算法训练RBM。该算法通常仅需要1次迭代就可以得到最大概率。对比散度算法利用训练数据初始化可见层,通过条件分布概率得到隐藏层,再通过条件分布概率得到最终的可见层,最终得到的可见层就是输入数据的重建。

3 SSA
SSA是于2020年由薛建凯和沈波根据麻雀的觅食行为和反捕食行为提出的一种新型群智能优化算法。SSA[6]将麻雀分为发现者和加入者,麻雀中发现者和加入者的身份可以互相转换,但是总体比例不变。发现者负责在全局中搜寻食物资源丰富的区域,加入者会监视发现者,靠近发现者的区域进行觅食或者抢夺发现者的食物。当麻雀种群发现危险时,处在边缘区域的麻雀会迅速向安全区域靠拢,处在中心区域的麻雀则会随机移动。SSA的步骤如下:

a.初始化麻雀种群,定义其相关参数,计算所有麻雀个体的适应度并进行排序,找出全局适应度值最优的麻雀,记录其适应度值及其全局最优位置;

b.迭代更新发现者、加入者和意识到危险的麻雀的位置,若当前全局最优适应度值比上一代最优值高就进行更新操作,否则不进行更新操作,继续迭代;

c.适应度函数收敛或达到满足条件,获得全局最优值和最优适应度值。

SSA与其他传统优化算法相比,具有收敛速度快、精度高和不易陷入局部最优值的优势,更容易获得优化问题中的全局最优解。因此,笔者采用SSA对DBN进行优化。

4 SSA优化的DBN模型
4.1 模型总体框架

DBN在特征提取方面具有较好的性能,适用于入侵检测技术。DBN的网络结构是否为最优决定了DBN的性能是否为最佳。但是研究者凭借经验设定的DBN网络结构无法完全发挥DBN的性能。因此,笔者用SSA优化DBN得到新的入侵检测模型SSA-DBN。使用SSA优化DBN的核心思想就是得到位置最优的麻雀,也就是适应度最高的麻雀个体,在迭代结束时根据此麻雀的参数设置DBN的最优网络结构,得到最优的入侵检测模型。

4.2 SSA-DBN模块
SSA-DBN模块的功能是对输入的数据进行识别分类,可分为两个步骤:

a.使用训练数据集对SSA-DBN模块进行训练和参数调优,得到最优入侵检测模型;

b.将测试数据集输入到训练好的SSA-DBN模块中得到分类结果。

该模块基本步骤伪代码如图4所示,其中,I为最大迭代次数,PD为麻雀中发现者的数量,SD为发现危险的麻雀的数量,A为警戒值,s为麻雀种群的数量,F(X)为适应度函数,X表示DBN的网络结构。
该算法首先随机初始化麻雀种群的数量并定义相关参数,计算并找出当前适应度函数的最优值。然后更新麻雀的位置,再次计算当前适应度函数的最优值,若为最优,则X为DBN最优的网络结构参数,否则继续更新麻雀位置直到获得最优值或达到最大迭代次数。最后根据最优参数构建最优入侵检测模型进行识别分类操作。

⛄三、部分源代码

%
clc;
clear;
close all;
addpath(‘./HHO’)
addpath(‘./PSO’)
addpath(‘./SSA2’)
addpath(‘./WOA’)
% function test_example_DBN
%addpath(‘./DBN’)
addpath(‘./DeepBeliefNetworksToolbox’)
load(‘data_feature.mat’);

trainX=double(train_X);
trainYn=double(train_Y);
testX=double(test_X);
testYn=double(test_Y);

[Params,CostFunction] = ParameterDefinition(train_X,train_Y);
%% 算法测试
% HHO
[particle1, GlobalBest1] = Initialization(Params,CostFunction,‘HHO’);
[particle1,GlobalBest1] = HHO(particle1,GlobalBest1,Params,CostFunction);
[er_HHO,trainY_out_HHO,testY_out_HHO] = Cost(GlobalBest1.Position);
% %% PSO
[particle2, GlobalBest2] = Initialization(Params,CostFunction,‘PSO’);
[particle2,GlobalBest2] = PSO2(particle2,GlobalBest2,Params,CostFunction);
[er_PSO,trainY_out_PSO,testY_out_PSO] = Cost(GlobalBest2.Position);

%
% %% SSA
[particle3, GlobalBest3,SD,GlobalWorst3,Predator,Joiner] = Initialization(Params,CostFunction,‘SSA’);
[particle3,GlobalBest3] = SSA(particle3,GlobalBest3,GlobalWorst3,SD,Predator,Joiner,Params,CostFunction);
[er_SSA,trainY_out_SSA,testY_out_SSA] = Cost(GlobalBest3.Position);

%
% %% WOA
[particle4, GlobalBest4] = Initialization(Params,CostFunction,‘WOA’);
[particle4,GlobalBest4] = WOA(particle4,GlobalBest4,Params,CostFunction);
[er_WOA,trainY_out_WOA,testY_out_WOA] = Cost(GlobalBest4.Position);
figure
subplot(121)
plot(train_Y(1:100),‘bs-’,‘linewidth’,2);hold on
plot(trainY_out_HHO(1:100),‘ro-’,‘linewidth’,2)
xlabel(‘样本’)
legend(‘DBN’,‘HHO-DBN’)
title(‘哈里斯鹰算法优化DBN训练集预测效果’)
subplot(122)
plot(test_Y(1:100),‘bs-’,‘linewidth’,2);hold on
plot(testY_out_HHO(1:100),‘ro-’,‘linewidth’,2)
xlabel(‘样本’)
legend(‘DBN’,‘HHO-DBN’)
title(‘哈里斯鹰算法优化DBN测试集预测效果’)

figure
subplot(121)
plot(train_Y(1:100),‘bs-’,‘linewidth’,2);hold on
plot(trainY_out_PSO(1:100),‘ro-’,‘linewidth’,2)
xlabel(‘样本’)
legend(‘DBN’,‘PSO-DBN’)
title(‘粒子群算法优化DBN训练集预测效果’)
subplot(122)
plot(test_Y(1:100),‘bs-’,‘linewidth’,2);hold on
plot(testY_out_PSO(1:100),‘ro-’,‘linewidth’,2)
xlabel(‘样本’)
legend(‘DBN’,‘PSO-DBN’)
title(‘粒子群算法优化DBN测试集预测效果’)

figure
subplot(121)
plot(train_Y(1:100),‘bs-’,‘linewidth’,2);hold on
plot(trainY_out_SSA(1:100),‘ro-’,‘linewidth’,2)
xlabel(‘样本’)
legend(‘DBN’,‘SSA-DBN’)
title(‘麻雀算法优化DBN训练集预测效果’)
subplot(122)
plot(test_Y(1:100),‘bs-’,‘linewidth’,2);hold on
plot(testY_out_SSA(1:100),‘ro-’,‘linewidth’,2)
xlabel(‘样本’)
legend(‘DBN’,‘SSA-DBN’)
title(‘麻雀算法优化DBN测试集预测效果’)

figure
subplot(121)
plot(train_Y(1:100),‘bs-’,‘linewidth’,2);hold on
plot(trainY_out_WOA(1:100),‘ro-’,‘linewidth’,2)
xlabel(‘样本’)
legend(‘DBN’,‘WOA-DBN’)
title(‘鲸鱼算法优化DBN训练集预测效果’)
subplot(122)
plot(test_Y(1:100),‘bs-’,‘linewidth’,2);hold on
plot(testY_out_WOA(1:100),‘ro-’,‘linewidth’,2)
xlabel(‘样本’)
legend(‘DBN’,‘WOA-DBN’)
title(‘鲸鱼算法优化DBN测试集预测效果’)

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]王家宝,缪祥华.利用麻雀搜索算法优化深度置信网络的入侵检测研究[J].化工自动化及仪表. 2022,49(02)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值