1. 引言
时间序列预测在科学、政策制定、精算和销售等多个领域具有重要价值。其核心在于识别数据中的隐藏模式,无论是未来的还是隐藏的,这些模式通常可以从过去的观察中揭示出来。时间序列预测涉及对随时间收集的数据点进行分析和预测,为股票价格、天气状况或客户行为等变量提供洞察。
在时间序列预测领域,存在两个相互关联的领域:序列内相关建模和序列间相关建模。序列内相关建模基于特定时间序列内的模式预测未来值,而序列间相关建模则探讨多个时间序列之间的关系和依赖性。近年来,深度学习模型在时间序列预测中取得了突破性进展。一方面,循环神经网络(RNN)、时间卷积网络(TCN)和Transformer在捕捉单个序列中的时间动态方面表现出色。另一方面,当将多变量时间序列视为图信号时,图神经网络(GNN)为利用多个时间序列之间的复杂依赖性提供了有前途的途径。
然而,现有深度学习模型在捕捉不同时间尺度下多变量时间序列之间变化的互相关方面存在显著不足。例如,在金融领域,市场不稳定时期,各种资产价格(如股票、债券和商品)之间的相关性可能会因避险现象而增加。相反,在经济增长时期,资产相关性可能会降低,因为投资者分散投资组合以利用各种机会。同样,在生态系统中,物种种群和环境变量的动态揭示了在不同时间尺度上运作的复杂时间相关性。
针对现有模型的不足,本文提出了一种名为MSGNet的新型深度学习模型,该模型利用频域分析和自适应图卷积来捕捉多时间尺度下的互相关变化。通过频域分析,MSGNet有效地提取了显著的周期性模式,并将时间序列分解为不同的时间尺度。该模型结合了自注意力机制以捕捉序列内依赖性,同时引入了自适应混合跳图卷积层,以自主学习每个时间尺度内不同的互相关关系。
2. 相关工作
2.1 时间序列预测
时间序列预测有着悠久的历史,经典的VAR和Prophet方法假设序列内变化遵循预定义的模式。然而,现实世界中的时间序列通常表现出复杂的变异性,超出了这些预定义模式的范围,限制了经典方法的实际适用性。近年来,各种深度学习模型应运而生,包括MLP、TCN、RNN和基于Transformer的模型,这些模型专为时间序列分析而设计。然而,关于最适合建模序列内相关性的候选模型,无论是MLP还是基于Transformer的架构,仍然存在争议。一些方法将周期性视为时间序列分析中的关键特征,但这些方法都没有考虑到不同周期性尺度下存在的多样化的序列间相关性。
2.2 用于序列间相关性学习的GNN
最近,GNN在序列间相关性学习中的应用显著增加。最初引入GNN是为了解决交通预测和基于骨架的动作识别问题,GNN在短期时间序列预测方面比传统方法表现出显著改进。然而,值得注意的是,大多数现有的GNN都是为具有预定义图结构的情景而设计的。例如,在交通预测中,不同传感器之间的距离可用于定义图结构。然而,当处理一般多变量预测任务时,基于先验知识定义通用图结构可能具有挑战性。尽管一些方法探索了可学习的图结构,但它们通常考虑有限数量的图结构,并且没有将学习的图结构与不同的时间尺度联系起来。因此,这些方法可能无法完全捕捉复杂且不断演变的序列间相关性。
3. 方法论
3.1 问题表述
在多变量时间序列预测的背景下,考虑一个变量数为N的情景。给定输入数据 ,它代表一个回顾窗口的观测值,包括从 到 范围内每个变量 在第 个时间点的 值。这里, 表示回顾窗口的大小, 表示预测窗口的起始位置。时间序列预测任务的目标是预测未来 个时间步长内 个变量的未来值。预测值由 表示,它包括从 到 范围内所有变量的每个时间点 的 值。
我们假设能够识别不同时间尺度下 个时间序列之间变化的互相关,这些互相关可以用图表示。例如,给定一个时间尺度 ,我们可以从时间序列 中识别出一个图结构 。这里, 表示一组节点,, 表示加权边, 表示任意时间点。考虑到 个时间尺度的集合,表示为 ,我们可以识别 个邻接矩阵,表示为 ,其中每个 。这些邻接矩阵捕捉了不同时间尺度下变化的序列间相关性。
3.2 模型架构
MSGNet模型由多个ScaleGraph块组成,其核心在于能够无缝地交织各种组件。每个ScaleGraph块包含四个步骤:1)识别输入时间序列的尺度;2)使用自适应图卷积块揭示与尺度相关的序列间相关性;3)通过多头注意力捕捉序列内相关性;4)使用SoftMax函数自适应地聚合不同尺度的表示。
3.2.1 输入嵌入和残差连接
我们同时嵌入 个变量在同一个时间步长为一个大小为 的向量:,其中 。我们采用在 (Zhou et al. 2021) 中提出的统一输入表示来生成嵌入。具体来说, 使用以下公式计算:
在这里,我们首先对输入 进行归一化,得到 ,因为归一化策略已被证明在提高平稳性方面有效 (Liu et al. 2022)。然后我们使用1-D卷积滤波器(核宽度为3,步幅为1)将 投影到一个 维矩阵。参数 作为平衡因子,调整标量投影和局部/全局嵌入之间的幅度。 表示输入 的位置嵌入, 是一个可学习的全局时间戳嵌入,具有有限的词汇量大小(当以分钟为最细粒度时为60)。
我们在残差方式中实现MSGNet (He et al. 2016)。一开始,我们设置 ,其中 表示通过嵌入层将原始输入投影到深度特征。在MSGNet的第 层,输入是 ,过程可以正式表示如下:
在这里,ScaleGraphBlock表示构成MSGNet层核心功能的所有操作和计算。
3.2.2 尺度识别
我们的目标是利用不同时间尺度下的序列间相关性来提高预测准确性。尺度的选择是我们方法的一个关键方面,我们特别重视选择周期性作为尺度来源。这种选择的原因在于周期性在时间序列数据中的内在重要性。例如,在白天,当太阳能电池板暴露在阳光下时,能源消耗和太阳能电池板输出的时间序列往往表现出更强的相关性。如果我们选择不同的周期性,例如考虑一个月或一天的相关性,那么这种相关性模式将有所不同。
受TimesNet (Wu et al. 2023a) 的启发,我们采用快速傅里叶变换(FFT)来检测显著的周期性作为时间尺度:
在这里, 和 分别表示FFT和幅度值的计算。向量 表示每个频率的计算幅度,通过函数 在 维度上取平均。
在此背景下,值得注意的是,时间变化的输入可能表现出不同的周期性,从而使我们的模型能够检测不断演变的尺度。我们假设这种时间演变的周期性尺度所固有的相关性是稳定的。这种观点使我们观察到我们的模型学习到的序列间和序列内相关性的动态属性。
基于所选的时间尺度 ,我们可以通过以下公式将输入重塑为3D张量,从而得到对应不同时间尺度的多个表示:
其中 用于沿时间维度用零扩展时间序列,使其与 Reshape 兼容。注意 表示基于时间尺度 的第 个重塑的时间序列。我们使用 表示 ScaleGraph 块的输入矩阵。
3.2.3 多尺度自适应图卷积
我们提出了一种新颖的多尺度图卷积方法,以捕捉特定和全面的序列间依赖性。为了实现这一点,我们首先将对应于第 个尺度的张量投影回具有 个变量的张量,其中 代表时间序列的数量。这种投影是通过线性变换完成的,定义如下:
在这里,,而 是一个可学习的权重矩阵,针对第 个尺度张量。有人可能会担心,在应用线性映射和随后的线性映射回来之后,序列间相关性可能会受到损害。然而,我们的综合实验表明,所提出的方法通过图卷积方法很好地保持了序列间相关性。
在我们的方法中,图学习过程涉及生成两个可训练参数, 和 。随后,通过将这两个参数矩阵相乘获得自适应邻接矩阵,按照以下公式:
在这种公式中,我们使用 SoftMax 函数来规范化不同节点之间的权重,确保序列间关系的平衡和有意义的表示。
在获得第 个尺度的邻接矩阵 后,我们利用 Mixhop 图卷积方法 (Abu-ElHaija et al. 2019) 来捕捉序列间相关性,因为它已被证明能够表示其他模型可能无法捕捉的特征。
其中 代表在尺度 融合后的输出, 是激活函数,超参数 是一组整数邻接矩阵幂, 表示学习到的邻接矩阵 乘以自身 次,而 表示列级连接,将每次迭代中生成的中间变量连接起来。然后,我们继续使用多层感知器(MLP)将 Hiout 投影回 3D 张量 。
3.2.4 多头注意力与尺度聚合
在每个时间尺度中,我们采用多头注意力(MHA)来捕捉序列内相关性。具体来说,对于每个时间尺度张量 ,我们在张量的时间尺度维度上应用自 MHA:
在这里, 指的是在尺度维度上提出的多头注意力函数 (Vaswani et al. 2017)。在实现上,它涉及将大小为 的输入张量重塑为 张量, 是批量大小。尽管一些研究对 MHA 在捕捉时间序列中的长期时间相关性方面的有效性提出了质疑 (Zeng et al. 2023),但我们通过采用尺度变换将长时间跨度转换为周期性长度,成功地解决了这一限制。我们的结果,如附录中所示,即使输入时间增加,MSGNet 也始终保持其性能。
最后,为了进入下一层,我们需要整合 k 个不同的尺度张量 X o1ut X k。我们首先将每个尺度的张量重塑为 2 路矩阵 。然后,我们根据它们的幅度聚合不同的尺度:
在这个过程中, 是每个尺度的幅度,使用 FFT 计算。随后应用 SoftMax 函数计算幅度 。这种专家混合(MoE)(Jacobs et al. 1991) 策略使模型能够根据各自幅度强调来自不同尺度的信息,从而有效地将多尺度特征整合到下一层(附录)。
3.2.5 输出层
为了执行预测,我们的模型在时间维度和变量维度上都利用线性投影将 转换为 。这种转换可以表示为:
在这里,,,以及 是可学习的参数。 矩阵执行沿变量维度的线性投影,而 沿时间维度执行相同的操作。得到的 是预测的数据,其中 代表变量的数量, 表示输入序列长度, 表示预测范围。
4. 实验
4.1 数据集
为了评估MSGNet在时间序列预测中的先进能力,我们在8个数据集上进行了实验,分别是Flight、Weather、ETT (h1, h2, m1, m2) (Zhou et al. 2021)、Exchange-Rate (Lai et al. 2018) 和 Electricity。除了Flight数据集外,所有这些数据集在现有文献中都很常见。Flight数据集的原始数据来自OpenSky官方网站,它包含了与COVID-19疫情相关的航班数据。在附录中的图1和图2中,我们可视化了这一时期航班数据的变化。值得注意的是,航班受到疫情的显著影响,导致所有深度学习模型的样本分布不均(OOD)。这为我们提供了一个评估所提出模型对OOD样本的鲁棒性的机会。
4.2 基线
我们选择了六种时间序列预测方法进行比较,包括基于Transformer架构的模型,如Informer (Zhou et al. 2021) 和 Autoformer (Wu et al. 2021)。此外,我们还包括MTGnn (Wu et al. 2020),它依赖于图卷积,以及DLinear和NLinear (Zeng et al. 2023),它们是线性模型。最后,我们考虑了基于周期性分解的TimesNet (Wu et al. 2023a),它目前具有最先进的性能。
4.3 实验设置
实验使用NVIDIA GeForce RTX 3090 24GB GPU进行,使用均方误差(MSE)作为训练损失函数。所有模型的回顾窗口大小设置为 (为了公平比较),预测长度分别为 。值得注意的是,我们的模型在更长的回顾窗口下可以实现更好的性能(见附录)。这些设置适用于所有模型。初始学习率为 ,批量大小为 ,训练周期为 ,并在适用的情况下使用提前终止。有关我们模型的超参数设置的更多细节,请参见附录。(0.7, 0.1, 0.2) 或 (0.6, 0.2, 0.2) 的数据分别用作训练、验证和测试数据。至于基线,使用了论文 (Wu et al. 2023a) 或官方代码 (Wu et al. 2020) 中的相关数据。
4.4 结果与分析
表1总结了所有方法在8个数据集上的预测性能,展示了MSGNet的优秀结果。具体来说,对于不同预测长度的平均均方误差(MSE),它在5个数据集上取得了最佳性能,在2个数据集上取得了第二佳性能。在Flight数据集上,MSGNet优于TimesNet(当前SOTA),平均减少了 (从0.265降至0.208)和 (从0.372降至0.321)的MSE和MAE。尽管TimesNet使用了多尺度信息,但它采用了一种纯粹的计算机视觉模型来捕捉序列间和序列内相关性,这对时间序列数据并不是很有效。Autoformer在Flight数据集上表现出色,这可能归功于其建立的互相关机制。然而,即使使用基于GNN的序列间相关性建模,MTGnn仍然明显弱于我们的模型,因为它缺乏对不同尺度的关注。此外,我们通过计算所有数据集的平均排名来评估模型的泛化能力。值得注意的是,MSGNet在平均排名上优于其他模型。
MSGNet的优秀性在图3中显而易见,因为它紧密地反映了真实情况,而其他模型在特定时间段内表现出明显的性能下降。图3中描绘的峰值和低谷与关键的航班数据事件、趋势或周期性动态相一致。其他模型无法准确跟随这些变化的原因可能是架构限制,阻碍了它们捕捉多尺度模式、突然变化或复杂的序列间和序列内相关性的能力。
5. 结论
本文介绍了MSGNet,这是一种旨在解决现有深度学习模型在时间序列分析中的局限性的新框架。我们的方法利用周期性作为时间尺度来源,以捕捉不同时间尺度下的多样化序列间相关性。通过对各种现实世界数据集的广泛实验,我们证明了MSGNet在预测准确性方面优于现有模型,并捕捉到多个时间序列之间的复杂依赖性。我们的发现强调了在不同时间尺度下识别变化的序列间相关性在时间序列数据分析中的重要性。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。