【SVM分类】基于matlab斑马算法优化卷积神经网络多头注意力机制结合支持向量机ZOA-CNN-MATT-SVM数据分类【含Matlab源码 3914期】

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

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

⛄一、注意力机制的卷积神经网络结合双向长短记忆神经网络CNN-BiLSTM-attention

1 卷积神经网络
1.1 卷积神经网络各个层级结构图
在这里插入图片描述
上图中CNN要做的事情是:给定一张图片,是车还是马未知,是什么车也未知,现在需要模型判断这张图片里具体是一个什么东西,总之输出一个结果:如果是车 那是什么车

所以
最左边是数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步。

中间是
CONV:卷积计算层,线性乘积 求和。
RELU:激励层,上文2.2节中有提到:ReLU是激活函数的一种。
POOL:池化层,简言之,即取区域平均或最大。

最右边是
FC:全连接层
这几个部分中,卷积计算层是CNN的核心,下文将重点阐述。

1.2 CNN之卷积计算层
1.2.1 CNN怎么进行识别
简言之,当我们给定一个"X"的图案,计算机怎么识别这个图案就是“X”呢?一个可能的办法就是计算机存储一张标准的“X”图案,然后把需要识别的未知图案跟标准"X"图案进行比对,如果二者一致,则判定未知图案即是一个"X"图案。

而且即便未知图案可能有一些平移或稍稍变形,依然能辨别出它是一个X图案。如此,CNN是把未知图案和标准X图案一个局部一个局部的对比,如下图所示
在这里插入图片描述
而未知图案的局部和标准X图案的局部一个一个比对时的计算过程,便是卷积操作。卷积计算结果为1表示匹配,否则不匹配。

具体而言,为了确定一幅图像是包含有"X"还是"O",相当于我们需要判断它是否含有"X"或者"O",并且假设必须两者选其一,不是"X"就是"O"。
在这里插入图片描述
理想的情况就像下面这个样子:
在这里插入图片描述
标准的"X"和"O",字母位于图像的正中央,并且比例合适,无变形

对于计算机来说,只要图像稍稍有一点变化,不是标准的,那么要解决这个问题还是不是那么容易的:
在这里插入图片描述
计算机要解决上面这个问题,一个比较天真的做法就是先保存一张"X"和"O"的标准图像(就像前面给出的例子),然后将其他的新给出的图像来和这两张标准图像进行对比,看看到底和哪一张图更匹配,就判断为哪个字母。

但是这么做的话,其实是非常不可靠的,因为计算机还是比较死板的。在计算机的“视觉”中,一幅图看起来就像是一个二维的像素数组(可以想象成一个棋盘),每一个位置对应一个数字。在我们这个例子当中,像素值"1"代表白色,像素值"-1"代表黑色。
在这里插入图片描述
当比较两幅图的时候,如果有任何一个像素值不匹配,那么这两幅图就不匹配,至少对于计算机来说是这样的。

对于这个例子,计算机认为上述两幅图中的白色像素除了中间的3*3的小方格里面是相同的,其他四个角上都不同:
在这里插入图片描述
因此,从表面上看,计算机判别右边那幅图不是"X",两幅图不同,得出结论:
在这里插入图片描述
但是这么做,显得太不合理了。理想的情况下,我们希望,对于那些仅仅只是做了一些像平移,缩放,旋转,微变形等简单变换的图像,计算机仍然能够识别出图中的"X"和"O"。就像下面这些情况,我们希望计算机依然能够很快并且很准的识别出来:
在这里插入图片描述
这也就是CNN出现所要解决的问题。

Features
在这里插入图片描述
对于CNN来说,它是一块一块地来进行比对。它拿来比对的这个“小块”我们称之为Features(特征)。在两幅图中大致相同的位置找到一些粗糙的特征进行匹配,CNN能够更好的看到两幅图的相似性,相比起传统的整幅图逐一比对的方法。

每一个feature就像是一个小图(就是一个比较小的有值的二维数组)。不同的Feature匹配图像中不同的特征。在字母"X"的例子中,那些由对角线和交叉线组成的features基本上能够识别出大多数"X"所具有的重要特征。
在这里插入图片描述
这些features很有可能就是匹配任何含有字母"X"的图中字母X的四个角和它的中心。那么具体到底是怎么匹配的呢?如下:
在这里插入图片描述
看到这里是不是有了一点头目呢。但其实这只是第一步,你知道了这些Features是怎么在原图上面进行匹配的。但是你还不知道在这里面究竟进行的是怎样的数学计算,比如这个下面3*3的小块到底干了什么?
在这里插入图片描述
这里面的数学操作,就是我们常说的“卷积”操作。接下来,我们来了解下什么是卷积操作。

1.2.2 什么是卷积
对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

非严格意义上来讲,下图中红框框起来的部分便可以理解为一个滤波器,即带着一组固定权重的神经元。多个滤波器叠加便成了卷积层。

2 注意力机制
注意力机制是一种模拟人类注意力分配的机制,它在深度学习中被广泛应用于各种任务,如机器翻译、语音识别和图像处理等。其原理可以简单概括为:根据输入的不同部分对输出的贡献程度进行加权,从而使模型能够更加关注重要的信息。

具体来说,注意力机制通过计算输入序列中每个位置的权重,然后将这些权重与对应位置的特征进行加权求和,得到最终的输出。这个权重计算过程通常包括以下几个步骤:

(1)计算注意力分数:通过将输入序列中的每个位置与当前的上下文进行比较,计算出每个位置与当前上下文的相关性得分。常用的计算方法包括点积注意力、加性注意力和缩放点积注意力等。

(2)归一化注意力权重:将注意力分数进行归一化处理,使得它们的总和等于1。这可以通过应用softmax函数来实现。

(3)加权求和:将归一化后的注意力权重与对应位置的特征进行加权求和,得到最终的上下文向量。这个上下文向量会被传递给下一个阶段的模型进行进一步处理。

通过注意力机制,模型可以根据输入的不同部分的重要性动态地调整权重,从而更加准确地捕捉到关键信息。这种机制使得模型能够在处理长序列或复杂任务时更加有效和灵活。

3 斑马算法优化卷积神经网络多头注意力机制结合支持向量机ZOA-CNN-MATT-SVM
斑马算法优化卷积神经网络多头注意力机制结合支持向量机ZOA-CNN-MATT-SVM是一种用于图像分类任务的深度学习模型。下面我将逐步介绍其原理。
3.1 卷积神经网络(CNN):
卷积神经网络是一种常用于图像处理任务的深度学习模型。它通过卷积层、池化层和全连接层等组件来提取图像的特征,并进行分类或回归等任务。

3.2 多头注意力机制:
多头注意力机制是一种用于提取特征的方法,它通过将输入特征映射到多个子空间,并在每个子空间中计算注意力权重,然后将不同子空间的特征进行加权融合。这样可以使模型更好地关注不同特征的重要性。

3.3 支持向量机(SVM):
支持向量机是一种常用的监督学习算法,用于分类和回归任务。它通过在特征空间中找到一个最优超平面来进行分类,使得不同类别的样本尽可能地分开。

3.4 ZOA-CNN-MATT-SVM模型原理:
ZOA-CNN-MATT-SVM模型是将多头注意力机制和支持向量机结合起来的图像分类模型。它的基本原理如下:
(1)首先,使用卷积神经网络(CNN)提取图像的特征。
(2)然后,将提取的特征输入到多头注意力机制中,得到不同子空间的特征表示。
(3)接下来,对每个子空间的特征进行加权融合,得到最终的特征表示。
(4)最后,将融合后的特征输入到支持向量机(SVM)进行分类。

⛄二、部分源代码

%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
%% 读取数据
data1= xlsread(‘DGAData1.xlsx’);
% data1=fillmissing(data,“previous”);
input =data1(:,1:end-1);
output=data1(:,end);
data2=log10(input);
data2(data2(:,1:5)==0)=0.001;
%% 分析数据
num_class = length(unique(data1(:, end))); % 类别数(Excel最后1列放类别)
num_dim = size(data1, 2)-1 ; % 特征维度
num_res = size(data1, 1); % 样本数(每一行,是一个样本)
flag_conusion = 1; % 标志位为1,打开混淆矩阵(要求2018版本及以上)
%% 划分训练集和测试集
n = randperm(size(data2,1));
% 2. 训练集――270个样本
P_train =data2(n(1:200)😅‘;
T_train =output(n(1:200)😅’;
M = size(P_train, 2);
% 3. 测试集――111个样本
P_test=data2(n(201:end)😅‘;
T_test =output(n(201:end)😅’;
N = size(P_test, 2);
%% 数据归一化
[P_train, ps_input] = mapminmax(P_train, 0, 1);
P_test = mapminmax(‘apply’, P_test, ps_input);
t_train = categorical(T_train)‘;
t_test = categorical(T_test )’;
% % 打乱数据集(不打乱数据时,注释)
% RM=randperm(M);
% RN=randperm(N);
% P_train = P_train( :,RM);
% T_train = T_train( :,RM);
% P_test = P_test( :,RN);
% T_test = T_test( :,RN);
%% 数据平铺
% 将数据平铺成1维数据只是一种处理方式
% 也可以平铺成2维数据,以及3维数据,需要修改对应模型结构
% 但是应该始终和输入层数据结构保持一致

p_train = double(reshape(P_train, num_dim, 1, 1, M));
p_test = double(reshape(P_test , num_dim, 1, 1, N));
%% 构造北方苍鹰优化器
popsize = 20;%种群数量
Max_iteration = 50;%最大迭代次数
lb = [0.0001 0.0001];%权值阈值下边界
ub = [0.1 0.1];%权值阈值上边界
dim=2;
fobj=@(x)fun(x,num_dim,num_class,p_train, T_train,t_train,p_test,t_test,M,N);
[Best_score,Best_pos,ZOA_cg_curve]=ZOA(popsize,Max_iteration,lb,ub,dim,fobj);
[error1,T_sim1,T_sim2]=fun(Best_pos,num_dim,num_class,p_train, T_train,t_train,p_test,t_test,M,N);
figure
plot(ZOA_cg_curve)
xlabel(‘迭代次数’)
ylabel(‘RMSE’)
%% 性能评价
error1 = sum((T_sim1’ == T_train))/M * 100 ;
error2 = sum((T_sim2’ == T_test)) /N * 100 ;
%% CNN-SVM数据输出
%% 训练误差集评价
disp(‘2DCNN-SVM训练ACC’);
disp(error1)
%-------------------------------------------------------------------------------------
%% 测试集误差评价
disp(‘2DCNN-SVM测试ACC’);
disp(error2)

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]张立峰,刘 旭.基于 CNN-GRU 神经网络的短期负荷预测[J].电力科学与工 程. 2020年11月

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 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值