当前位置: 首页 > article >正文

论文笔记:TimesFM 用于时间序列预测的仅解码器基础模型

整理了ICLR2024 A DECODER-ONLY FOUNDATION MODEL FOR TIME-SERIES FORECASTING 论文的阅读笔记

  • 背景
  • 问题定义
  • 模型
    • 指导原则
    • 模型
  • 预训练
  • 实验

背景

  受LLM最新进展的激励,本文设计了一个时间序列基础模型TimesFM,其在各种公共数据集上的开箱即用(zero-shot)性能接近于每个单独数据集的最先进的监督预测模型的精度。TimesFM基于预训练带有输入补丁的解码器风格的注意力模型,使用包含真实世界和合成数据集的大型时间序列语料库。可以在不同的领域、预测范围和时间粒度上产生准确的零样本预测。

问题定义

  该任务需要建立一个通用的zero-shot预测器,它以时间序列中过去的C个时间点为背景,预测未来的H个时间点。让上下文表示为 y 1 : L : = y 1 , . . . , y L y_{1:L}:={y_1,...,y_L} y1:L:=y1,...,yL,相似的,未来的序列真值表示为 y L + 1 : L + H y_{L+1:L+H} yL+1:L+H。请注意,由于我们正在构建一个单独的预训练模型,因此在训练期间我们不能拥有特定于数据集的动态或静态协变量。接下来的任务是学习一个基础模型,它可以将任何时间序列背景映射到未来: f : ( y 1 : L ) → y ^ L + 1 : L + H f:(y_{1:L})\to \hat y_{L+1:L+H} f:(y1:L)y^L+1:L+H

模型

指导原则

  一个用于时间序列预测的基础模型应能够适应不同的上下文和预测范围,同时具备足够的能力来编码大量预训练数据集中的所有模式。在自然语言处理领域,Transformer已被证明能够适应不同的上下文长度。然而,针对时间序列,我们还需要考虑一些特定的设计选择。TimesFM的主要指导原则包括:
  分块处理:受近期长时预测工作中基于分块建模成功的启发,TimesFM也选择在训练期间将时间序列分解为分块。分块已被证明可以提高性能。此外,这还能提高推理速度,因为输入到Transformer的标记数量会因分块长度而减少。然而,将分块长度增加到上下文长度会让我们牺牲仅解码器训练模式及其带来的效率。
  仅解码器模型:TimesFM是在仅解码器模式下训练的。换句话说,给定一系列输入分块,模型被优化为根据所有过去的分块来预测下一个分块。与大型语言模型类似,这可以在整个上下文窗口上并行完成,并且自动使模型能够在看到不同数量的输入分块后预测未来。
  更长的输出补丁:在llm中,输出总是以自动回归的方式生成,每次生成一个令牌。然而,在长视界预测中,已经观察到直接预测全视界比多步自回归解码具有更好的准确性。但是,当视界长度不是先验已知时,这是不可能的,就像我们的主要目标—zero-shot预测一样。
  TimesFM提出了一个折中方案,允许预测输出分块比输入分块更长。在训练过程中,假设输入分块长度为32,输出分块长度为128。在训练过程中,模型同时被训练使用前32个时间点来预测接下来的128个时间步,使用前64个时间点来预测65到192个时间步,使用前96个时间点来预测97到224个时间步,以此类推。在推理过程中,假设模型被赋予一个长度为256的时间序列,并被要求预测接下来的256个时间步。模型将首先生成257到384个时间步的预测,然后基于最初的256个长度输入加上生成的输出来生成385到512个时间步。如果模型的输出分块长度固定为输入分块长度32,那么对于同样的任务,我们将不得不经历8个自回归生成步骤,而不是上述的2个。
  分块掩码技术:如果我们简单地使用分块,模型可能只会在上下文长度是输入分块长度的倍数时预测得很好。因此,在训练过程中我们谨慎地使用掩码技术。在数据批次中,分块的部分区域甚至整个分块,如果位于上下文窗口的开始部分,都可以被掩码。我们采用了一种特定的随机掩码策略,这有助于模型识别从1到最大上下文长度的所有可能的上下文长度。

模型

  接下来我们描述模型体系结构的每个组件,TimesFM的结构如图所示:
在这里插入图片描述
  输入层:输入层负责将时间序列数据预处理成适合Transformer模型的格式。数据首先被分成不重叠的小段,称为分块。每个分块通过一个残差块转换成向量,同时使用一个掩码来标记哪些数据是有效的。每个分块还会附加一个位置编码,以保持数据的时间顺序。这些处理后的分块作为输入标记,被送入Transformer层进行分析。最终,根据原始数据的长度和分块大小,我们会得到一定数量的输入标记。
  堆叠Transformer层:TimesFM的大部分参数集中在多个堆叠的Transformer层中。每一层都包含标准的多头自注意力机制,随后是一个前馈网络。主要的超参数包括模型维度(model_dim),它等同于输入标记的维度,以及头的数量(num_heads)。FFN的隐藏层大小也被设置为与模型维度相同。TimesFM使用的是因果注意力机制,这意味着每个输出标记只能关注序列中它之前的输入标记(包括对应的输入标记)。此外,每个标记都有一个掩码指示器,它决定了哪些数据点在当前的注意力计算中是可见的。如果分块中的任何时间点没有被掩码,那么相应的标记就不会被掩码。完全被掩码的分块在自注意力计算中将被忽略,以确保模型只关注有效数据。
  输出层:模型的下一步任务是将输出标记转换为预测结果。我们采用仅解码器模式进行训练,这与流行的大型语言模型相似。然而,时间序列基础模型的一个关键区别在于,输入分块长度不必等于输出分块长度,这意味着我们可以根据迄今为止看到的输入分块编码的信息,预测时间序列的更大一部分。我们使用另一个残差块将输出标记映射到预测结果。
  损失函数:在这项工作中,我们专注于点预测。因此,我们可以使用点预测损失,如均方误差(MSE)来进行训练。如果对概率预测感兴趣,那么可以为每个输出分块设置多个输出头,每个头分别最小化一个分位数损失。另一种方法是输出概率分布族的logits,并最小化概率预测的最大似然损失。

预训练

  我们希望预训练语料库包含大量时间序列数据,能够代表多个领域、趋势和季节性模式以及时间粒度,理想情况下能够捕捉到我们部署模型所服务的预测用例。找到一个满足我们基础模型训练所需的数据量和多样性的大型时间序列数据集是具有挑战性的。为了解决这个问题,我们从三个主要来源获取用于训练模型的大部分数据:
  Google趋势:Google趋势捕捉了数百万查询随时间变化的搜索兴趣。我们根据2007年至2022年15年间的搜索兴趣选择了大约22k个头部查询。除此之外,时间序列的稀疏度超过50%。我们下载了这些查询在小时、日、周和月粒度上的搜索兴趣,形成了我们的数据集。数据时间范围是2018年1月至2019年12月的小时数据,以及2007年1月至2021年12月的其他粒度数据。趋势数据集大约包含50亿个时间点。
  维基页面浏览量:维基页面浏览量捕捉了所有维基媒体页面的每小时浏览量。我们下载了2012年1月至2023年11月的所有页面浏览数据,按页面清洗并汇总浏览量到小时、日、周和月粒度,并过滤掉浏览量时间序列中零值过多的数据。最终的语料库包含大约3000亿个时间点。
  合成数据:预训练数据的另一个主要组成部分是合成数据。我们为ARMA过程、季节性模式(不同频率的正弦波和余弦波的混合)、趋势(线性、指数带有少数变化点)和阶跃函数创建了生成器。合成时间序列可以是一个或多个这些过程的加性组合。我们创建了300万个合成时间序列,每个长度为2048个时间点。
  其他现实世界数据源:除了维基和趋势数据外,我们还向预训练语料库中添加了其他公开可用数据集的时间序列。我们添加了M4数据集的所有粒度,以及小时和15分钟电力和小时交通数据集。我们还添加了用于评估的10分钟粒度天气数据集【Beyond efficient transformer for long sequence time-series forecasting】。M4有大约10万个时间序列,具有很好的粒度混合。交通和电力是大型长期预测数据集,分别拥有超过800和300个时间序列,每个都有成千上万的时间点。此外,我们还添加了[A unified library and performance benchmark]中的所有15分钟粒度交通时间序列。
  TimesFM在训练中采用了一种混合数据集的分布策略,目的是为所有时间粒度和数据集提供充分的权重。训练加载器按比例抽取80%的真实数据和20%的合成数据。在真实数据的混合中,小时级、亚小时级、日度、周度和月度数据集被赋予了相等的权重。只要时间序列的长度允许,我们就使用最大上下文长度512进行训练。对于周度粒度,由于我们没有足够长的时间序列,因此使用最大上下文长度256。同样,对于月度及以上粒度的数据,出于相同的原因,我们使用最大上下文长度64进行训练。我们还仅使用了可逆实例归一化(一个标准归一化步骤和一个可逆的缩放和平移步骤)的标准归一化,即每个时间序列的上下文通过上下文中第一个输入分块的上下文均值和标准差进行缩放。

实验

  我们通过流行的时间序列基准测试,对TimesFM模型进行了未在训练中见过数据的零样本评估。我们观察到,TimesFM的表现优于大多数统计方法,如ARIMA、ETS,并且能够匹敌或超越经过目标时间序列显式训练的强大深度学习模型,如DeepAR和PatchTST。
  为了评估TimesFM的即用型性能,我们使用了Monash预测档案。该档案包含了来自不同领域,如交通、天气和需求预测的数万条时间序列,覆盖了从几分钟到年数据的频率范围。遵循现有文献,我们检查了适当缩放的均方绝对误差(MAE),以便它可以跨数据集平均。我们发现零样本(ZS)TimesFM的表现优于大多数监督方法,包括最近的深度学习模型。我们还使用llmtime(ZS)提出的特定提示技术,将TimesFM与GPT-3.5进行了预测性能比较。我们证明了TimesFM虽然规模远小于GPT-3.5,但其性能却更优。
  在Monash数据集中,大多数时间序列的预测范围属于短或中等,即预测长度并不长。我们还让TimesFM在长期预测的流行基准上进行了测试,与最新的先进基线PatchTST(以及其他长期预测基线)进行了比较。在下图中,我们绘制了ETT数据集上预测未来96和192个时间点的任务的MAE(平均绝对误差)。该指标是在每个数据集的最后一个测试窗口上计算的(正如llmtime论文所做的)。我们发现,TimesFM不仅超越了llmtime(ZS)的性能,而且与针对各自数据集显式训练的监督PatchTST模型的表现相当。
  TimesFM模型在不同领域的预测性能表现出了较高的泛化能力和适应性,无论是在金融、需求预测、天气、交通还是其他领域。通过消融研究和微调研究,我们可以了解到TimesFM模型的设计和调整如何影响其在不同领域的表现。
在这里插入图片描述


http://www.kler.cn/news/365417.html

相关文章:

  • 设计模式(二)工厂模式详解
  • 笔记本电脑充不进去电怎么回事 笔记本电脑充不上电解决
  • 批量修改YOLO格式的标注类别
  • WPF的UpdateSourceTrigger属性
  • h5页面与小程序页面互相跳转
  • leetCode算法题爬楼梯递归写法
  • vscode使用正则表达式一键删除文件中所有注释
  • 短剧AI突围战,百度跑偏了
  • logback 如何将日志输出到文件
  • 面试题框架篇
  • JavaWeb——Maven(6/8):依赖管理-依赖传递 (介绍、直接依赖与间接依赖、演示、排除依赖)
  • 题解 力扣 LeetCode 739 每日温度 C++
  • 海外云手机怎样助力亚马逊店铺运营?
  • 合约门合同全生命周期管理系统:从合同创建到归档的全流程管理解决方案
  • Spring MVC 原理与源码
  • 六个方向比较分析:ChatGPT-o1-preview与 ChatGPT-4o在论文写作辅助上的差异
  • 富格林:察觉欺诈有效追损措施
  • 解决运行jar错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序
  • webRTC搭建:STUN 和 TURN 服务器 链接google的有点慢,是不是可以自己搭建
  • 当遇到 502 错误(Bad Gateway)怎么办
  • 【Python】实战:猜数游戏
  • 如何在 Ubuntu 18.04 上使用 Let‘s Encrypt 保护 Apache
  • 挖矿病毒的处理
  • 用STM32硬件思维学JAVA--23种设计模式
  • 分布式解决方案---分布式ID
  • 自动化测试工具Appium介绍