基于LSTM深度学习网络的疾病发作检测算法matlab仿真
目录
1.算法仿真效果
matlab2022a仿真结果如下:
2.算法涉及理论知识概要
长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。
长短期记忆网络(Long-Short Term Memory,LSTM)论文首次发表于1997年。由于独特的设计结构,LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。LSTM的表现通常比时间递归神经网络及隐马尔科夫模型(HMM)更好,比如用在不分段连续手写识别上。2009年,用LSTM构建的人工神经网络模型赢得过ICDAR手写识别比赛冠军。LSTM还普遍用于自主语音识别,2013年运用TIMIT自然演讲数据库达成17.7%错误率的纪录。作为非线性模型,LSTM可作为复杂的非线性单元用于构造更大型深度神经网络。
LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为它可以记忆不定时间长度的数值,区块中有一个gate能够决定input是否重要到能被记住及能不能被输出output。图1底下是四个S函数单元,最左边函数依情况可能成为区块的input,右边三个会经过gate决定input是否能传入区块,左边第二个为input gate,如果这里产出近似于零,将把这里的值挡住,不会进到下一层。左边第三个是forget gate,当这产生值近似于零,将把区块里记住的值忘掉。第四个也就是最右边的input为output gate,他可以决定在区块记忆中的input是否能输出 。LSTM有很多个版本,其中一个重要的版本是GRU(Gated Recurrent Unit),根据谷歌的测试表明,LSTM中最重要的是Forget gate,其次是Input gate,最次是Output gate。
传统RNN网络由于结构存在固有缺陷,在参数更新时会存在梯度消失以及梯度爆炸的问题,导致长距离的历史信息丢失,进一步造成网络极难收敛,无法训练出理想的模型。LSTM作为一种改进的循环神经网络,在原有网络结构的基础上加入了细胞状态(cell state)的结构来控制全局信息的传输,并通过遗忘门,输入门,输出门三种门控单元控制细胞状态信息值的更新。LSTM在极大程度上缓解了传统RNN模型存在的长期依赖问题,减少了长距离历史信息的丢失,输出的预测结果更准确 。
LSTM通过以下公式进行更新权值矩阵和偏置参数等网络信息:
3.MATLAB核心程序
.................................................
%Classify
YPred = classify(net,channel)';
YPred_numerical = double(YPred);
YPred_numerical(YPred_numerical==1)= 1;
YPred_numerical(YPred_numerical==2)=-1;
acc = sum(YPred == output)./numel(output)
%Time
timepoint = 300/length(output);
time = [timepoint:timepoint:timepoint*length(output)];
figure
subplot(221)
plot(time, channel, 'b')
hold on
plot(time(channel_out==1),channel(channel_out==1), '.g')
legend('信号', '癫痫发生')
xlim([100,300])
subplot(223)
plot(time, channel, 'b')
hold on
plot(time(YPred=='1'),channel(YPred=='1'),'r>',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.9,0.0]);
legend('信号', '癫痫信号LSTM检测')
xlim([100,300])
subplot(2,2,[2,4])
confusionchart(channel_out,YPred_numerical)
a917
4.完整算法代码文件
V
相关文章
- 用matlab求逆矩阵的方式_matlab矩阵转置命令
- matlab 求矩阵秩,求Matlab中矩阵的秩和迹 | 学步园[通俗易懂]
- 基于matlab的Canny算法的边缘检测(附源代码)
- matlab最优化问题的函数(fminbnd),fmincon,globalsearch,multistart(全局局部最优)
- ADRC控制matlab仿真,关于ADRC的一些基本例子仿真
- 各种智能优化算法比较与实现(matlab版)
- PID控制的MATLAB仿真(1)
- matlab怎么对语音信号处理,语音信号处理MATLAB程序
- matlab 插值出错,MATLAB插值问题
- Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择|附代码数据
- matlab如何导入txt数据画图形_matlab画复杂函数图像
- matlab多元函数极值_matlab求三元函数的极值
- zigzag扫描matlab,ZIGZAG扫描的MATLAB实现
- matlab画图操作(修改坐标轴及字体,加粗,颜色修改,适合论文画图)「建议收藏」
- 指派问题匈牙利算法例题_匈牙利算法matlab代码
- 粒子群优化算法matlab程序_多目标优化算法
- Matlab循环语句_matlab中if语句的用法
- 数学建模(7)动态规划以及matlab实现
- matlab 怎么使用function,Matlab中function函数使用操作方法
- MATLAB数据挖掘用改进的K-Means(K-均值)聚类算法分析高校学生的期末考试成绩数据
- 一种基于交叉选择的柯西反向鲸鱼优化算法QOWOA附matlab代码
- 人工智能算法:Matlab遗传算法工具箱使用方法