首个全开源时序预测基础模型:Zero-shot预测能力比肩从零训练最优模型

781164d22c4d90c7d95f5a34105edbb5.gif

©PaperWeekly 原创 · 作者 | 石宇新

单位 | 浙江大学硕士生

研究方向 | 时序预测

首个全开源时间序列预测基础模型 Moirai 来了(“Moirai” 在古希腊神话中是命运女神的名字具有预知未来的能力)!来自 Salesforce AI research 的研究者提出了一种通用的预测范式,使得预训练模型有能力处理任意的时序预测任务。与当下最优的从零训练模型相比,Moirai 的 zero-shot 预测能力具有竞争力甚至表现出更优越的性能。

并且,研究者们发布并开源了预训练框 uni2ts,moirai 模型权重,以及 LOTSA,当下最大的开源时序预测预训练数据集。

4a9f7c64a63f95a9d6c6d221a15ff9cf.png

论文题目:

Unified Training of Universal Time Series Forecasting Transformers

论文链接:

https://arxiv.org/abs/2402.02592

预训练代码链接:

https://github.com/SalesforceAIResearch/uni2ts

预训练数据集:

https://huggingface.co/datasets/Salesforce/lotsa_data

时序数据广泛存在于零售、金融、制造业、医疗等多个领域,其中时序预测应用对于决策制定有着重要的意义。尽管深度学习方法在时序预测中取得了巨大进展,但其依旧遵循传统机器学习范式:针对特定数据集的特定预测任务(预测长度)训练相对应的模型。

然而,这种模式随着时序预测任务的增多,计算成本和人力成本会显著的增加。能否像视觉和语言领域一样,构造一个预训练大模型进行通用时序预测?该研究工作给出了肯定的回答。

16e790cf9cbb9add93c0d1c803f77f4e.png

通用时序预测基础模型面临的挑战:

与视觉和语言模态分别具有图像和文本的统一格式不同,时间序列数据具有高度异构性, 具体体现在频率,维度,数据分布上的不同:

  • 时序数据的频率(例如每分钟、每小时、每天的采样率)决定了时序数据的模式,由于 negative interference(负面干扰)对于跨频率学习带来的挑战,现有的方法通常为每个频率训练一个模型来解决多频率问题。

  • 维度上的异构性表现在多变量时序数据可能具有不同数量的变量,此外,每个变量通常在不同的数据集中测量的数量在语义上是不同的,一个通用的预测模型在理想情况下应该足够灵活,能够考虑变量之间的相互作用,并同时考虑外生协变量(exogenous covariates)。

  • 对于许多任务来说,概率预测是一个关键需求,然而,不同的数据集具有不同的分布特性。例如,使用对称分布(正态分布,student-t 分布)作为预测分布就可能不适合正值的时序数据。预先定义一个简单参数分布的标准方法可能缺乏有效捕捉多样化数据集范围所需的灵活性。

同时,开发一个能够进行通用预测的大型预训练模型需要一个涵盖多个领域的全面数据集。然而,现有的时间序列数据集往往在规模和多样性上有所欠缺,不足以支持这类模型的训练。

为了解决上述挑战,本文的研究者在传统的时序领域的 transformer 架构上进行了创新,以处理任意时间序列数据的异构性,具体贡献如下:

  • 本文通过学习多个输入和输出 projection layer(投影层)来解决时间序列数据中不同频率的挑战。这些层旨在处理不同频率的时间序列中存在的不同模式。并采用 patch-based(基于块)的 projection,较大的 patch size 对应高频数据,这样 projection layer 便能够学到不同频率的模式

  • 作者提出了 Any-variate(任意变量)的注意力机制来解决可变维度问题,这种方法同时将时间轴和变量轴视为单个序列,并利用 RoPE(Rotary Position Embedding,旋转位置嵌入)和可学习的二元注意力偏差来分别对时间轴和变量轴进行编码。特别地,Any-variate 注意力使得模型能够接受任意数量的变量作为输入

  • 作者引入了一种混合的参数分布来解决数据集具有不同概率分布的问题,并对分布的(negative log-likelihood)负对数似然进行优化。

最后,为了解决时序领域大规模数据集的欠缺,本文引入了 LOTSA,这是通过整理公开可用的时序数据集源而提供的最大的开放时间序列数据集合。该集合跨越 9 大数据领域,包含 27B 观测值,231B 数据点。其关键统计数据如下图所示

cb465be31bfc0ae4e1ac25b1766acf38.png

c0060902f64986263dc63a77123bbba7.png

Moirai架构细节

5e5a090bcfc84c52b96cff24aa2ba63d.png

如上图所示,Moirai 在 masked encoder(掩码编码器)架构的基础上采用了非重叠的 patch-based 方式。为了在 any-variate 的设置下拓展架构,作者采取的手段是将多变量时序数据“展平”,即将所有变量看作单一的序列。输入变量通过分块处理后,不同 patches 通过 multi-patch 的输入层投影到向量表示。

图中的 [mask] 表示可替换预测范围内的 patch 的一种可学习的 embedding(嵌入)。最终通过 multi-patch 输出层将输出 token 解码为混合分布的参数。在输入/输出中,作者还加入了 instance normalization(实例标准化)进行处理。

27018cb70638b849eec80fbae67db043.png

预训练阶段

在预训练任务中,本文制定了优化混合分布对数似然的目标,数据分布和任务分布的设计是预训练流水线最为关键的两方面。

在数据分布上,由于训练的数据集 LOTSA 是数据集构成的集合,作者在训练中引入 sub-dataset(子数据集)的概念,将数据分布分解成 sub-dataset 的分布和在每个 sub-dataset 上时序数据的分布。p(Y,Z|D)p(D),即首先通过 p(D) 采样 sub-dataset,然后在给定的 sub-dataset 上采样时序数据。

在任务分布的设计中,为了使得模型在不同的上下文和预测长度设置中都具有预测能力,作者从任务分布中采用 (t,l,h) ~ P(T|D) 其中分别指代时序数据,lookback window 和 forecasting horizon。

数据分布和任务分布的设计使得本文的大型时序模型能够适应一系列下游任务,与专门针对某一类特定的设置的预测模型形成了鲜明的对比。

8f291305d7fbbc64380f1705ddadc6f9.png

实验结果

作者训练了 small/base/large 三种不同规模的模型,分别有 14m/91m/331m 个参数,在通过 Monash 时序预测基准上进行 in-distribution 评估时,Moirai 模型击败了所有的基准模型。

0a683d0f8629d509939d23feb71f3821.png

在 out-of-distribution/zero-shot 预测评估中,Moirai 始终表现出有竞争力的性能,在一些实例中超过了当下最好的 full-shot 的模型性能。

7c36c411af911ccc9e5470a2e93e75eb.png

c83ff749f89575effcb424141420f056.png

b3d67cf3b90b2925cd810c0fa7785aa5.png

总结

Moirai 在跨越不同数据域和频率的各个时序数据内提供了强大的 zero-shot 预测性能。通过利用大规模数据预训练的力量,这个时间序列基础模型彻底改变了以往每个数据集一个模型的格局。它为下游预测任务中的用户提供了巨大的优势,消除了使用深度学习模型实现准确预测所需的额外数据、大量计算资源的需求。

研究者们开源了预训练数据,预训练代码以及模型权重为这一新兴研究领域的发展铺平了道路。

更多阅读

62c1c25e74d9db95ad429ee60756cdba.png

c711eb5715b93f1975143af705befbb1.png

ec5c445a7610421676089eb81bd3b61b.png

db3b20f1bc18ace135c4b7e796e13702.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

0291d99a9e6bcd95cfacde1454ab9d3f.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

5dc869c9806a96f8914183e135262172.jpeg

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值