机器学习周记(第三十周:文献阅读-SageFormer)2024.3.11~2024.3.17

news2024/11/24 2:04:32

目录

摘要

ABSTRACT

1 论文信息

1.1 论文标题

1.2 论文摘要 

1.3 论文背景

2 论文模型

2.1 问题描述

2.2 模型信息

2.2.1 Series-aware Global Tokens(序列感知全局标记)

2.2.2 Graph Structure Learning(图结构学习)

2.2.3 Iterative Message Passing(迭代信息传递)

3 相关代码


摘要

  本周阅读了一篇时间序列预测的论文,改论文模型(SageFormer)使用GNN结合Transformer的框架实现。SageFormer在使用Transformer建模序列间依赖关系的同时还注重于使用GNN建模序列间依赖关系,减少跨序列的冗余信息。模型主要包括两个过程:全局标记的生成、迭代的消息传递。全局标记的生成为每个序列添加了随机初始化的可学习标记,以封装它们对应的全局信息,以此增强序列感知能力。迭代的消息传递使得全局信息在每个序列的所有标记之间进行传播,以此捕获序列内部和序列间的依赖关系。

ABSTRACT

This week, We read a paper on time series prediction, which introduces a model called SageFormer that utilizes a framework combining GNN with Transformer. SageFormer focuses on modeling both intra-series and inter-series dependencies using Transformer for the former and GNN for the latter, aiming to reduce redundant information across series. The model mainly consists of two processes: the generation of global tokens and iterative message passing. The generation of global tokens involves adding randomly initialized learnable tokens to each series to encapsulate their corresponding global information, thereby enhancing series awareness. The iterative message passing facilitates the propagation of global information among all tokens within each series, capturing both intra-series and inter-series dependencies.

1 论文信息

1.1 论文标题

SageFormer: Series-Aware Framework for Long-Term Multivariate Time Series Forecasting

1.2 论文摘要 

  在新兴的物联网生态系统中,多元时间序列(MTS)数据变得无处不在,凸显了时间序列预测在众多应用中的基础作用。长期MTS预测的关键挑战是如何找到能够捕捉序列内和序列间依赖关系的成熟模型。最近深度学习的进展,特别是Transformer中,展现出了解决这一问题的希望。然而,许多流行的方法要么边缘化了序列间的依赖关系,要么完全忽略了它们。为弥补这一缺失,本文提出了一个新的序列感知框架,明确地强调这种依赖关系的重要性。这个框架的核心在于论文模型:SageFormer。作为一种序列感知的图增强Transformer模型,SageFormer可以使用图结构熟练地识别和建模序列之间的复杂关系。除了捕获不同的时间模式,它还减少了跨序列的冗余信息。值得注意的是,序列感知框架与现有的基于Transformer的模型无缝集成,丰富了它们理解序列间关系的能力。在真实数据集和合成数据集上的广泛实验验证了SageFormer相对于当前最先进方法具有更加优秀的性能。

1.3 论文背景

  随着物联网(IoT)的兴起,越来越多的互连设备已经进入人们的日常生活,从工业和智能家居到医疗保健和城市规划。这些设备持续产生、交换和处理大量数据,形成了一个复杂的通信网络。在产生的各种数据形式中,多元时间序列(MTS)数据是一种特别普遍且关键的类型。源自物联网设备内部多个传感器或处理器的同时观测,MTS数据呈现出物联网固有的复杂相互作用和时间动态的现象。在这个蓬勃发展的物联网驱动的数据环境中预测未来行为至关重要。在物联网系统中,预测MTS数据优化操作并确保安全,特别是在能源、交通和天气等关键领域。尽管目前的研究大多强调了对短期预测的需求,以应对即时挑战,但长期预测领域同样具有重要意义。长期预测为人们提供了对MTS数据中更大时间模式和关系的洞察。然而,在长时间范围内进行建模会放大即使是十分微小的噪声,使任务变得更加具有挑战性,但也无疑具有重要价值。

  近年来,深度学习方法,尤其是采用Transformer架构的方法,在长期多元时间序列(MTS)预测任务中表现出色,超过了传统技术如ARIMASSM。许多基于Transformer的模型主要关注时间依赖性,通常通过线性变换将各种序列合并为隐藏的时间嵌入,被称为“序列混合框架”。然而,在这些时间嵌入中,序列间的依赖关系并没有被明确建模,导致信息提取效率低下。有趣的是,一些最近的研究发现,有意排除序列间依赖性的模型,被称为“序列独立框架”,由于其对分布漂移的增强鲁棒性,可以产生显著改进的预测结果。然而,对于某些数据集来说,这种方法可能并不理想,因为它完全忽视了序列间的依赖关系。这凸显了在建模序列内部和序列间依赖关系时所需的复杂平衡,这是MTS预测研究的一个关键领域。

  在本文中,作者引入了“序列感知框架”来填补这一研究空白,深入探讨了长期MTS预测问题中序列间依赖关系的复杂性。论文中介绍了旨在精确建模序列间依赖关系的序列感知框架,如Fig.1(a)所示。这个框架以论文模型Series-Aware Graph-Enhanced Transformer(SageFormer)为基础,是一个增强了图神经网络(GNN)的序列感知Transformer模型。通过学习图结构,旨在利用可交互的全局标记区分序列,并通过图聚合提高跨序列的多样化时间模式建模能力。序列感知框架可以作为Transformer结构的通用扩展,更好地利用序列内部和序列间的依赖关系,并在不显著增加模型复杂性的情况下实现卓越性能。

Fig.1 序列感知框架与其他框架图示

2 论文模型

2.1 问题描述

  在论文中,模型专注于长期多元时间序列(MTS)预测任务。设x_{t} \in \mathbb{R}^{C}表示时间步tC个序列的值。给定长度为H的历史MTS序列X_{t}=[x_{t},x_{t+1},...,x_{t+H-1}] \in \mathbb{R}^{C \times H},目标是预测接下来的T个时间步的MTSY_{t}=[x_{t+L},...,x_{t+L+T-1}] \in \mathbb{R}^{C \times T}。最终的目标是利用提出的模型学习一个映射f(\cdot ):X_{t}\rightarrow Y_{t}(当不会引起歧义时,省略下标t)。

  模型采用图来表示多元时间序列(MTS)中的序列间依赖关系,并简要概述相关的图相关概念。从图的角度来看,MTS中的不同序列被视为节点,序列之间的关系则用图的邻接矩阵描述。形式上,MTS数据可以被视为一个信号集合G=\left \{ V, X_{t},A \right \}。节点集合V包含MTS数据的C个序列,而A \in \mathbb{R}^{C \times C}则是一个加权邻接矩阵。元素a_{ij}表示序列ij之间的依赖关系。如果它们不相关,则a_{ij}等于零。

2.2 模型信息

  如Algorithm1所示,序列感知框架旨在预测多元时间序列(MTS)数据。框架主要包括两个过程:全局标记的生成、迭代的消息传递。在消息传递机制中,可以利用现代架构来进行序列间和序列内信息的传播。SageFormer是序列感知框架的一个具体实例。它有效地利用图神经网络(GNNs)来建模序列间的依赖关系,同时利用Transformer来捕捉序列内的依赖关系。因此,它确保了模型全面掌握了序列感知设置的基本动态。整体结构遵循Transformer编码器设计,并用更高效的线性解码器头(ForecastingHead)取代传统的Transformer解码器。凭借其独特的GNNsTransformer的结合,SageFormer成为了捕捉和建模序列内和序列间关系本质的一种十分具有潜力的解决方案。

2.2.1 Series-aware Global Tokens(序列感知全局标记)

  在Transformers中的传统方法涉及通过对输入时间序列进行逐点或逐块拆分来获取输入标记。这是为了使这些标记包含局部语义信息,然后通过自注意机制来检查它们之间的相互连接。

  论文的方法提出了一个关键的创新点:将全局标记集成到模型中以增强序列感知能力,这一概念受到了自然语言处理模型和视觉Transformer中的类标记的启发。为每个序列添加了随机初始化的可学习标记,以封装它们对应的全局信息。这些全局标记不仅仅是占位符,同时用于在第一层自注意力之后捕获和增强序列内部的时间信息。利用这些全局标记来有效捕获系列间的依赖关系。通过它们参与基于GNN的序列间信息传递,从而增强每个子序列的序列感知能力。

Fig.2 SageFormer中迭代消息传递过程

2.2.2 Graph Structure Learning(图结构学习)

  在SageFormer中,邻接矩阵是端到端学习的,从而能够捕捉到系列之间的关系,而无需先验知识。在多元时间序列(MTS)预测中,假设序列之间的依赖关系是单向的。例如,尽管电力负载可能影响油温,但反之则不一定成立。这种有向关系在推导的图结构中得到了表示。值得注意的是,许多时间序列缺乏内在的图结构或补充的辅助数据。然而,论文的方法能够仅通过数据推断出图结构,无需外部输入,从而增强了其多功能性和广泛适用性。

2.2.3 Iterative Message Passing(迭代信息传递)

  嵌入标记通过SageFormer编码器层进行处理,其中进行了迭代的时间编码和图聚合(Fig.2)。这种方法目的是在GNN阶段收集的全局信息在每个序列的所有标记之间进行传播。因此,模型通过迭代消息传递捕获了序列内部和序列间的依赖关系。

  需要注意的是,节点嵌入和全局标记都是随机初始化的,然后通过迭代的消息传递过程进行优化。尽管这种强调标记的独特方法与图聚合中的典型GNN方法一致,但两种方法的输入张量具有相同的格式,其尺寸为(b,n,d),其中b代表批大小,n代表图中的节点数,d代表特征维度。此外,由于在初始层引入了一个时间编码操作,所以在图聚合阶段,全局标记不仅仅是随机实体。相反,它们在变量中具有全面的全局信息。这种设计确保了全局标记对模型的收敛产生积极影响。

3 相关代码

Transformer内部多头注意力机制的实现:

class MultiHeadAttention(nn.Module):
    ''' Multi-Head Attention module '''

    def __init__(self, n_head, d_model, d_k, d_v, dropout=0.1):
        super().__init__()

        self.n_head = n_head
        self.d_k = d_k
        self.d_v = d_v
        # 三个线性层做矩阵乘法生成q, k, v.
        self.w_qs = nn.Linear(d_model, n_head * d_k, bias=False)
        self.w_ks = nn.Linear(d_model, n_head * d_k, bias=False)
        self.w_vs = nn.Linear(d_model, n_head * d_v, bias=False)
        self.fc = nn.Linear(n_head * d_v, d_model, bias=False)
        # ScaledDotProductAttention见下方
        self.attention = ScaledDotProductAttention(temperature=d_k ** 0.5)

        self.dropout = nn.Dropout(dropout)
        self.layer_norm = nn.LayerNorm(d_model, eps=1e-6)


    def forward(self, q, k, v, mask=None):

        d_k, d_v, n_head = self.d_k, self.d_v, self.n_head
        sz_b, len_q, len_k, len_v = q.size(0), q.size(1), k.size(1), v.size(1)

        residual = q

        # Pass through the pre-attention projection: b x lq x (n*dv)
        # b: batch_size, lq: translation task的seq长度, n: head数, dv: embedding vector length
        # Separate different heads: b x lq x n x dv. 
        q = self.w_qs(q).view(sz_b, len_q, n_head, d_k) # project & reshape
        k = self.w_ks(k).view(sz_b, len_k, n_head, d_k)
        v = self.w_vs(v).view(sz_b, len_v, n_head, d_v)

        # Transpose for attention dot product: b x n x lq x dv
        q, k, v = q.transpose(1, 2), k.transpose(1, 2), v.transpose(1, 2)

        if mask is not None:
            mask = mask.unsqueeze(1)   # For head axis broadcasting. 
            # (batchSize, 1, seqLen) -> (batchSize, 1, 1, seqLen)

        q, attn = self.attention(q, k, v, mask=mask)

        # Transpose to move the head dimension back: b x lq x n x dv
        # Combine the last two dimensions to concatenate all the heads together: b x lq x (n*dv)
        # view只能用在contiguous的variable上
        q = q.transpose(1, 2).contiguous().view(sz_b, len_q, -1)
        q = self.dropout(self.fc(q))
        # add & norm
        q += residual

        q = self.layer_norm(q)

        return q, attn

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

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

相关文章

【图像分割】使用Otsu 算法及迭代计算最佳全局阈值估计并实现图像分割(代码实现与分析)

本实验要求理解全局阈值分割的概念,并实现文本图像分割。需要大家深入理解Ostu 算法的实现过程及其迭代原理,同时通过学习使用Otsu 算法及其迭代,实践图像分割技术在文本图像处理中的应用。 以下将从实验原理、实验实现、实验结果分析三部分对…

数据结构-队列java实现

队列 队列(queue)1.队列的特点2.数组模拟队列JAVA代码3.上述过程优化 博文主要是自己学习的笔记,供自己以后复习使用, 参考的主要教程是B站的 尚硅谷数据结构和算法 队列(queue) 1.队列的特点 1)队列是一个有序列表,可以用数组…

cannot find -xml2: No such file or directory的解决方法

一,问题现象 在编译库的时候出现如下图所示的报错:C:/msys64/mingw32/bin/…/lib/gcc/i686-w64-mingw32/13.2.0/…/…/…/…/i686-w64-mingw32/bin/ld.exe: ca nnot find -lxml2: No such file or directory collect2.exe: error: ld returned 1 exit s…

Linux环境下用IDEA运行Golang记录

一、背景 和存储同时开发AI项目,在Linux环境运行Golang项目,因此需要进行相关的配置。 二、Golang安装 参考:【Linux — 安装 Go】Linux 系统安装 Go 过程总结_linux 安装go-CSDN博客 三、IDEA中Golang配置 1、去除代理 否则在Plugins中…

奇舞周刊第522期:“Vite 又开始搞事情了!!!”

奇舞推荐 ■ ■ ■ Vite 又开始搞事情了!!! Vite 的最新版本将引入一种名为 Rolldown 的新型打包工具。 unocss 究竟比 tailwindcss 快多少? 我们知道 unocss 很快,也许是目前最快的原子化 CSS 引擎 (没有之一)。 巧用…

每日五道java面试题之mybatis篇(一)

目录: 第一题. MyBatis是什么?第二题. ORM是什么?第三题. 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?第四题. 传统JDBC开发存在的问题第五题. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的…

差分逻辑电平 — LVDS、CML、LVPECL、HCSL互连

前言 首先了解差分逻辑电平、单端逻辑电平的基础知识 地址:常见的逻辑电平_常用的逻辑电平-CSDN博客 注: ECL >> PECL >> LVPECL演变; ECL速度快,驱动能力强,噪声小,但是功耗大,使…

SpringBoot(数据库操作 + druid监控功能)

文章目录 1.JDBC HikariDataSource(SpringBoot2默认数据源)1.数据库表设计2.引入依赖 pom.xml3.配置数据源参数 application.yml4.编写一个bean,映射表5.编写测试类来完成测试1.引入依赖 pom.xml2.使用JdbcTemplate进行测试3.成功&#xff0…

并发编程CountDownLatch浅析

目录 一、CountDownLatch简介二、源码三、使用3.1 demo13.2 demo2 四、应用场景五、参考链接 一、CountDownLatch简介 CountDownLatch(倒计时锁存器)是Java并发包中的一个工具类,用于实现多个线程之间的同步。它通过一个计数器来实现线程之间的等待和唤醒操作&…

51单片机系列-单片机定时器

🌈个人主页:会编辑的果子君 💫个人格言:“成为自己未来的主人~” 软件延时的缺点 延时过程中,CPU时间被占用,无法进行其他任务,导致系统效率降低,延时时间越长,该缺点就越明显&…

esp8266调试记录

连接笔记本电脑 使用笔记本电脑的USB接口为NodeMCU开发板供电,你需要确保电压和电流在安全范围内。虽然NodeMCU的输入输出电压限制为3.3V,但是大多数开发板都内置了电压调节器,可以从5V的USB电源降压到3.3V。因此,通常情况下&…

通用的springboot web jar包执行脚本,释放端口并执行jar包

1、通用的springboot web jar包执行脚本,释放端口并执行jar包: #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/data/yitu-projects/yitu-xzhq/sftp # 服务名称。同时约定部署服务的 jar 包名字也为它。 SERVER_NAMEyitu-server # 环境…

【图论】拓补排序 - 邻接表

文章目录 题目:310. 最小高度树题目描述代码与注释 题目:310. 最小高度树 题目描述 代码与注释 func findMinHeightTrees(n int, edges [][]int) (ans []int) {if n 1 {return []int{0}}g : make([][]int, n)degree : make([]int, n) // 记录每个节点…

Android Studio字体大小调节

外观页面字体调节 settings->Appearance->User cunstom font 代码字体调节 Settings->Editor->Font此时logcat窗口、Build窗口和Ternimal窗口字体大小也会同步调节(2023.2.1版本上验证)

FFmpeg查看所有支持的编码/解码器/封装/解封装/媒体格式/滤镜

查看所有支持的编码器与解码器 ffmpeg -codecs 只查看所有编码器: ffmpeg -encoders 只查看所有解码器: ffmpeg -decoders 只查看H264编码器: ffmpeg -h encoderh264 只查看H264解码器: ffmpeg -h decoderh264 查看所有支持的封装: ffmpeg -muxers 查看所有支持的解封装…

【算法】数论(求质数)——蓝桥杯笔记、2.质数、7.质数、质数数目、纯质数、函数判断顺序的优化

文章目录 蓝桥杯2.质数7.质数质数数目纯质数 蓝桥杯 2.质数 求质数的几种方法&#xff1a; #include<iostream> #include<algorithm> using namespace std;bool is_primer1(int n) {if (n < 2) return n;//for (int i 2; i < n; i)for (int i 2; i < …

简历信息泄露?如何用图数据库技术解决简历泄露事件的反欺诈挑战

“金三银四”&#xff0c;又到了春招黄金期&#xff0c;但个人简历泄露的数据安全问题诸见报端&#xff0c;甚至在此前的3.15晚会报道中就揭露过招聘平台上的简历信息被泄露&#xff0c;不法分子通过各种渠道获取到简历&#xff0c;并用于欺诈活动&#xff0c;形成了一套庞大的…

ZK vs FHE

1. 引言 近期ZAMA获得7300万美金的投资&#xff0c;使得FHE获得更多关注。FHE仍处于萌芽阶段&#xff0c;是未来隐私游戏规则的改变者。FHE需与ZK和MPC一起结合&#xff0c;以发挥最大效用。如&#xff1a; Threshold FHE&#xff1a;将FHE与MPC结合&#xff0c;实现信任最小…

【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

c语言案例03-流程控制-if语句

c语言打卡-流程控制-if语句 一.在 C/C&#xff0c;if 函数或关键字具有判断功能&#xff0c;而判断这一操作必须基于给定条件&#xff0c;同样的&#xff0c;程序中使用 if 函数同样需要将判断条件作为参数传入&#xff0c;描述判断条件的代码语句简称为条件语句。如同现实生活…