700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【DBN分类】基于matlab麻雀算法优化深度置信网络SSA-DBN数据分类【含Matlab源码 2318期】

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

时间:2019-01-09 14:55:22

相关推荐

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

⛄一、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是于由薛建凯和沈波根据麻雀的觅食行为和反捕食行为提出的一种新型群智能优化算法。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版本

a

2 参考文献

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

3 备注

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

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