2023/5/7周报

news2024/11/25 22:31:55

目录

摘要

论文阅读

1、标题和现存问题

2、循环神经网络和传统 LSTM

3、堆叠 LSTM和论文模型结构

4、实验准备

5、结果分析

深度学习

1、TGCN

2、公式

3、伪代码

总结

摘要

本周在论文阅读上,阅读了一篇基于注意力机制的堆叠LSTM心电预测算法的论文。模型结构采用两个LSTM网络结构,构成一种堆叠的循环神经网络模型。输出的信号再通过注意力机制,加强重点关注区域后经由全连接层输出结果。经验证,模型效果十分优越。在深度学习上,对TGCN进了学习,TGCN作为时空图卷积网络,对于处理时间和空间数据有着独特的优势。

This week,in terms of thesis reading,perusaling a paper on the stacked LSTM electrocardiogram prediction algorithm based on attention mechanism.The model structure adopts two LSTM network structures to form a stacked recurrent neural network model.The output signal is then output through the attention mechanism, strengthening the key focus area, and then outputting the results through the fully connected layer.After verification, the model has shown excellent performance.In deep learning,studying theTGCN.As a spatiotemporal graph convolutional network, TGCN has unique advantages in processing temporal and spatial data.

论文阅读

1、标题和现存问题

标题:基于注意力机制的堆叠LSTM心电预测算法

现存问题:针对日趋增长的心电数据分析需求,国内的研究大多停留在分类处理阶段,对心电异常的预测相对较少。 而心电异常的提前预警对预防接下来可能出现的危险极为重要,因此,提出了一种新的心电预测算法。

2、循环神经网络和传统 LSTM

下图为循环神经网络的典型结构,当前时刻的状态不仅取决于此刻的输入,同时与上一时刻的状态相关。 与基础神经网络不同的是,循环神经网络除了在不同层之间建立了权连接,同时在相同层之间的神经元也建立了权连接。

 然而,循环神经网络在处理超长序列时,也存在一定的局限性,由于在反向传播期间,向后遍历层时梯度值衰减会导致信息随时间而丢失,因此网络会面临“梯度消失”和“梯度爆炸”的问题。 为了解决这两个问题,提出了长短期记忆网络。

传统的 LSTM 网络具有三层:输入层、隐藏层(即LSTM 层)和输出层。 LSTM 层的关键单元是它的内存块。 每个内存块都有多个单元,它们之间有循环连接。 传统的 LSTM 具有三个乘法门:输入门、遗忘门和输出门,它们本质上是自适应的。 输入门用于学习,识别哪些信息要存储在内存中,遗忘门用于了解信息存储多长时间,而输出门用于了解存储的信息何时可以使用。

 LSTM 网络通过以下公式来计算网络单元激活从输入序列x到输出序列h的映射迭代:

 

3、堆叠 LSTM和论文模型结构

堆叠 LSTM 结构可以定义为由多个 LSTM 层组成的 LSTM 模型。 上层的 LSTM 结构输出一个序列而不是单一的值到下一个 LSTM 结构,这样做的目的是加深网络,从而预测更加复杂的问题。 每个循环层可以及时展开到等效的前馈网络,其层共享相同的参数。 堆叠循环层允许在不同的时间尺度上处理这些序列,并产生更丰富的时间特征集。

神经网络中的注意力机制,也称为神经/ 人工注意力,因为它是以端到端的目标导向方式学习的,所以被视为一种自上而下的注意力。 注意力机制对模型中各类不同的元素赋予了各自不同的权重,对于重要的影响参数,对其权重进行增加;而对于不相关的信息,将其权重进行缩减。 由此,利于克服神经网络随着输入长度增加而性能下降及输入顺序不合理而计算效率低下的问题。因此,文章提出了了 Attention -LSTM的模型,结合堆叠 LSTM 结构和注意力机制,挖掘数据间的潜在规律,从而进一步提升 ECG 信号异常预测的精度。

网络在输入层有一个输入节点,并在输出层对接下来 20 个时间步长的序列进行预测。 该文在隐藏层使用 LSTM 单元,内部节点循环全连接到后续隐藏层,最后一层隐藏层与输出层全连接,使用 Softmax 激活函数来获得最终的输出:

 

4、实验准备

数据集:MIT-BIH 心律失常数据库

将数据集划分为两组:选取其中的 70% 作为训练集,30% 作为测试集。 训练基于堆叠 LSTM 的循环网络。 使用最大似然估计将预测误差向量拟合到多元高斯,然后使用经过训练的 LSTM 网络对测试集进行预测,并记录所得误差向量 的概率:

 

通过计算数据集中不同心电类别的概率分布以及总体的准确率来综合评价模型的性能,概率分布的计算方式如下所示:

 

TP、TN、FP、FN 对应关系:

 

训练时初始学习率设置为 0. 001, Batch - size 设 置 为 300, Epochs 设 置 为500,为了防止过拟合,迭代次数设置为 10000。

5、结果分析

为了验证提出的堆叠式 Attention-LSTM 网络的优势,采用不同的算法在本数据集上进行对比,通过与仅使用堆叠式 LSTM 的网络模型和仅加入注意力机制的单层 LSTM 网络模型进行对比,

 

文中模型在性能上优于堆叠式 LSTM 模型和单层加入注意力机制的 LSTM模型。 与仅使用堆叠 LSTM 的网络模型相比,文中模型的准确率提升了 1. 3% ;与仅加入注意力机制的单层LSTM网络模型相比, 文中模型的准确率提升了0.9% ,这充分验证了文中算法的可行性和优越性。

在准确率指标的基础上,同时引入了混淆矩阵对模型性能进行进一步评估

加入注意力机制的堆叠LSTM的混淆矩阵:

 

堆叠LSTM的混淆矩阵:

 

加入注意力机制的单层LSTM的混淆矩阵:

从图所示的混淆矩阵的第一列可以看出,绝大多数标签为正常窦性心律的数据均得到了正确的预测,这表明文中模型对于正常窦性心律数据的特征学习的效果较好;第二列中房性早搏的预测准确率普遍不太理想,这是由于样本标签的数量相对不足,这就对LSTM网络造成了一定的干扰,迫使模型做出了错误的预测。 而其余各列的准确率基本达到了 90% 以上,加入注意力机制的堆叠 LSTM 网络的准确率甚至达到了 96% 以上,这充分表明文中模型具有极大的优越性。

深度学习

1、TGCN

TGCN,即时空图卷积网络(Temporal Graph Convolutional Network),是一种用于处理时间序列数据的神经网络模型,它结合了图卷积网络和时间序列分析的思想,可以对时间序列数据进行有效的建模和预测。

TGCN的特点如下:

  1. 能够处理时间序列数据:TGCN针对时间序列数据的特点进行设计,可以对时间序列数据进行建模和预测。与传统的时间序列模型相比,TGCN具有更好的表现力和预测性能。

  2. 能够处理图结构数据:TGCN是基于图卷积网络的,可以处理带有图结构的数据,例如社交网络、电力网络等。与传统的基于向量的神经网络模型相比,TGCN可以利用图结构中的拓扑信息和关系信息,获得更好的表现力和泛化能力。

  3. 能够处理时空数据:TGCN可以处理时空数据,例如交通流量、气象数据等。TGCN将时空数据表示为图结构,利用时间维度和空间维度上的信息进行建模和预测,可以更准确地反映时空数据的特点。

  4. 能够处理大规模数据:TGCN采用了一些加速技巧,例如分层采样、空间变换等,可以有效地处理大规模的数据。

TGCN中的主要操作是图卷积(graph convolution)和时间卷积(time convolution)。图卷积可以看作是对邻居节点的聚合操作,用于提取节点的局部特征。时间卷积则用于提取时间序列中的局部特征。在TGCN中,这两种卷积操作是交替进行的,以捕捉时间序列数据中的时空特征。

TGCN模型首先将时间序列数据转化为时空图数据。每个时间点对应图中的一个节点,相邻时间点之间的关系则对应图中的边。接着,TGCN模型通过交替进行图卷积和时间卷积操作,来逐步提取时空图数据中的特征。最终,TGCN模型将提取的特征输入到全连接层中进行分类或回归等任务。

2、公式

 

其中,h{v, t}^{(l)}表示节点 v在时间步t,第l层的特征表示,sigma为激活函数,{N}v 为节点 v$的邻居节点集合,K为 Chebyshev 多项式的阶数,lambda_k 为第 k 阶 Chebyshev 多项式的特征{\Theta}k^{(l)}为第 l层与第k阶 Chebyshev 多项式的系数矩阵,{Phi}t^{(l)}表示第l层的时间权重矩阵,用于学习节点特征在时间维度上的变化。

在第l层中,节点v的特征表示h{v, t}^{(l)}由两部分组成,一部分是邻居节点的信息的加权和,另一部分是节点在时间维度上的权重与其自身特征的乘积。具体来说,第一部分用 Chebyshev 多项式来进行卷积操作,第二部分通过时间权重矩阵学习节点在时间维度上的变化规律,将其与节点特征进行加权相乘。最终,将节点特征 h{v,t}^{(l+1)} 通过激活函数映射到特征空间中。

当使用TGCN进行时间序列预测时,通常会采用以下公式:

 

其中,{Y}{t+1}表示在 t时刻的输入和 t+1时刻的邻接矩阵,使用权重矩阵W_t和V_t进行计算,得到 t+1时刻的预测值。A是图的邻接矩阵,X{t}表示在t时刻的输入。f是一个函数,它通过将输入和邻接矩阵进行组合并进行一些计算,得出了预测值 {Y}_{t+1}。

具体来说,TGCN中的ChebConv用于执行空间卷积,W_t是一个线性层,它将时间分片t映射到一个大小为节点数的向量,V_t是另一个线性层,它将时间分片t映射到大小为节点数乘以特征维度的矩阵。通过对x、A、W_t、V_t进行组合和计算,可以得出预测值 {Y}_{t+1}。

3、伪代码

该段代码包括了ChebConv层和时间卷积层,用于对时空图上的节点特征进行卷积。

  1. 将输入的节点特征x变形为(batch_size, num_nodes, num_features)的三维张量,其中batch_size表示批次大小,num_nodes表示节点数,num_features表示每个节点的特征数。

  2. 将边的索引和权重分别变形为(batch_size, num_nodes, num_nodes)的三维张量。

  3. 将时间切片time_slice变形为(batch_size, num_nodes, 1)的三维张量。

  4. 对时间切片进行线性变换,使用sigmoid函数将结果限制在0-1之间,将线性变换结果Wt与节点特征进行逐元素相乘,得到新的节点特征。

  5. 对新的节点特征x进行ChebConv层的卷积操作,得到新的节点特征。

  6. 对新的节点特征x进行时间卷积操作,使用线性变换Vt对节点特征进行逐元素相乘,得到新的节点特征。

  7. 将新的节点特征变形为(batch_size, num_nodes * num_features)的二维张量,作为输出

import torch
import torch.nn.functional as F
from torch_geometric.nn import ChebConv
​
class TGCNConv(torch.nn.Module):
    def __init__(self, in_channels, out_channels, num_nodes, K):
        super(TGCNConv, self).__init__()
​
        self.conv = ChebConv(in_channels, out_channels, K)
        self.num_nodes = num_nodes
​
        # Add temporal convolution
        self.Wt = torch.nn.Linear(num_nodes, num_nodes)
        self.Vt = torch.nn.Linear(num_nodes, num_nodes)
​
    def forward(self, x, edge_index, edge_weight, time_slice):
        # Get graph topology
        x = x.view(-1, self.num_nodes, x.size(1))
        edge_index = edge_index.view(-1, self.num_nodes, self.num_nodes)
        edge_weight = edge_weight.view(-1, self.num_nodes, self.num_nodes)
​
        # Get time topology
        time_slice = time_slice.view(-1, self.num_nodes, 1)
        batch_size = time_slice.size(0)
​
        # Get temporal convolutions
        Wt = torch.sigmoid(self.Wt(time_slice))
        Vt = self.Vt(time_slice)
​
        # Compute graph convolutions
        x = self.conv(x, edge_index, edge_weight)
​
        # Compute temporal convolutions
        x = torch.bmm(Wt * x, Vt.permute(0, 2, 1))
​
        return x.view(batch_size, -1, x.size(2))
 

总结

本周在论文阅读上面,查找了一遍时序模型的文章展开了阅读,下周计划对TGCN的论文进行学习和阅读,并对论文的代码看能不能成功跑起来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1 Python数据分析概况

1 Python数据分析概况 1.1 认识数据分析1.2 熟悉Python数据分析的工具Python数据分析常用类库 1.3 Jupyter Notebook 快捷键 1.1 认识数据分析 数据分析是指用适当的分析方法对收集来的大量数据进行分析,提取有用信息和形成结论,对数据加以详细研究和概…

C语言刷题(1)----指针数组

下面指针选题来源于教材、牛客网。 1.键盘输入一个字符串&#xff0c;编写代码获取字符串的长度并输出&#xff0c;要求使用字符指针实现。 示例&#xff1a; 输入&#xff1a; helloworld 返回值&#xff1a; 10 代码实现 #include<stdio.h> int main (void) {char st…

117-Linux_数据库_事务

事务 一.什么是事务?二.事务的四大特性1.原子性(atomicity)2.一致性(consistency)3.隔离性(isolation)4.持久性(durability) 三.隔离级别1.READ UNCOMMITTED 未提交读2.READ COMMITTED 提交读3.REPEATABLE READ 可重复读4.SERIALIZABLE 可串行化5.查看隔离级别(1)查看当前会话…

HTML5 FormData 方法介绍

XMLHttpRequest 是一个浏览器接口&#xff0c;通过它&#xff0c;我们可以使得 Javascript 进行 HTTP (S) 通信。XMLHttpRequest 在现在浏览器中是一种常用的前后台交互数据的方式。2008年 2 月&#xff0c;XMLHttpRequest Level 2 草案提出来了&#xff0c;相对于上一代&#…

MySQL之约束讲解

1. 主键约束 主键约束要求列的数据唯一&#xff0c;并且不能为空。 主键能够唯一地标识表中的一条记录。 主键和记录之间的关系如同身份证和人之间的关系&#xff0c;它们之间是一一对应的。 1.1 单字段主键 直接在定义列的时候指定主键即可。 create table temp1( num int …

高通 Android 13 兼容extfat模式

Android本身不支持extfat格式 需要通过nofuse 打kernel补丁方式去实现 1、kernel/msm-4.19/arch/arm64/configs/vendor/device-perf_defconfig 增加 diff --git a/kernel/msm-4.19/arch/arm64/configs/vendor/device-perf_defconfig b/kernel/msm-4.19/arch/arm64/configs/ve…

导航栏模糊背景 out 了? 来看看这种模糊是否合你胃口? 并且学习 backdrop-filter

导航栏模糊背景 out 了? 来看看这种模糊是否合你胃口? 并且学习 backdrop-filter 传统情况模糊导航栏效果 &#x1f19a; 一种比较新的模糊导航栏效果(比如 Element-Plus 官网的导航栏效果, 有些类似密集点阵式) 导航栏要实现这个效果必须设置背景为有透明的颜色并且通过 ba…

Docker安装常用软件-Apollo

零&#xff1a;apollo概念介绍 官网网站&#xff1a;GitHub - apolloconfig/apollo: Apollo is a reliable configuration management system suitable for microservice configuration management scenarios. gitee网址&#xff1a;mirrors / ctripcorp / apollo GitCode …

家用电器-电磁炉加热原理及实现

目录 一、历史 二、基本原理 三、电路组成 3.1 控制电路 3.2 电源电路 3.3 电磁线圈及驱动电路 3.4 传感器电路 3.5 散热-风扇 四、电磁炉的核心部件 五、电磁炉特点 5.1 加热速度快 5.2 热效率高 5.3 加热的均匀性 六、国内电磁炉市场 参考资料 一、历史 电磁炉…

【Python入门】Python的判断语句(if else 语句)

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Python零基础入门系列&#xff0c;本专栏主要内容为Python基础语法、判断、循环语句、函…

idea调优|maven调优

一、idea调优 1、idea启动优化 首先打开idea->Help->Edit Custom VM Options 按如下配置调整既有参数&#xff0c;参数数值不固定&#xff0c;需根据开发环境配置适当调整。针对如下配置#号后面的为注释&#xff0c;配置时需删除 # 启动堆大小 -Xms2048m # 最大运行堆…

SpringCloud-OpenFeign案例实战

关于Spring Cloud Open Feign的介绍可以参考这两篇博客 OpenFeign服务接口调用 使用Feign作为服务消费者 本博客参考gitee开源项目代码&#xff0c;结合自己的理解&#xff0c;记录下微服务场景下的使用。Talk is cheap. Show me the code&#xff01; 一、项目结构 这里使用…

FJUT第17届校赛题解

致歉 由于出题人经验不足&#xff0c;给大家带来不好的体验&#xff0c;实在抱歉。在赛中忘记开答疑&#xff0c;发不了公告&#xff0c;发现的问题已经在尽量修补。出现的问题如下&#xff08;均修复&#xff09;&#xff1a; 1.薛薛的简单数学题&#xff0c;没写spj&#xf…

【Python从入门到进阶】18、文件内容序列化和反序列化操作

接上篇《17、文件的读写操作》 上一篇我们学习了Python文件对象包含哪些方法&#xff0c;并学习了文件如何进行读、写、定位和删除。本篇我们来学习文件读取及写入数据序列化和反序列化的操作。 一、什么是序列化和反序列化 通过文件操作&#xff0c;我们可以将字符串写入到一…

【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_8.7p1(亲测无问题,建议收藏)

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录 文章声明前述安装一些必要的命令&…

MySQL数据库学习(进阶篇)

1.存储引擎 1.1 MySQL体系结构 连接层 最上层是一些客户端和链接服务&#xff0c;主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 第二层家口主要完成大多数的核心服务功能&#xff0c;如SQL接口…

二挡起步——pythonweb开发Django框架,前端原生+Django后端框架+python网络抓包(代替数据库数据)(附带小案例)

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

Java8新特性—Stream API

前言 Java 8引入了Stream API&#xff0c;这是一种新的API&#xff0c;可让开发人员更轻松地处理集合数据。 Stream API提供了丰富的操作&#xff0c;如过滤、映射、排序和规约。下面将对Stream API的基本语法、使用场景和示例进行介绍。 基本语法 Stream API是Java 8中处理…

玄子Share- Maven 3 安装配置教程(含安装包)

玄子Share- Maven 3 安装配置教程&#xff08;含安装包&#xff09; 下载 下载链接 官网 https://maven.apache.org/index.html 下载教程 进入 Maven 官网&#xff0c;点击左侧导航栏&#xff0c;Download下载。 下方选择安装类型&#xff0c;选择.zip后缀文件&#xff0c…

Linux系统通过Docker安装Elasticsearch、部署kibana

Docker安装和基本操作 一、安装Elasticsearch 1.1.创建网络 因为我们还需要部署kibana容器&#xff0c;因此需要让es和kibana容器互联。这里先创建一个网络&#xff1a; docker network create es-net1.2.拉取 docker pull elasticsearch:7.12.11.3.运行 运行docker命令…