《A DECODER-ONLY FOUNDATION MODEL FOR TIME-SERIES FORECASTING》阅读总结

2024-06-21 08:20

本文主要是介绍《A DECODER-ONLY FOUNDATION MODEL FOR TIME-SERIES FORECASTING》阅读总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍了一个名为TimeFM的新型时间序列预测基础模型,该模型受启发于自然语言处理领域的大语言模型,通过再大规模真实世界和合成时间序列数据集上的预训练,能够在多种不同的公共数据集上实现接近最先进监督模型的零样本预测性能。

该模型使用真实世界和合成数据集构建的大型时间序列语料库进行预训练,并展示了在不同领域、预测范围和时间粒度的未见数据集上的准确零样本预测能力。

1、引言

时间序列在零售、金融、制造业、医疗保健和自然科学等各个领域无处不在。近年来,深度学习模型已成为预测丰富多元时间序列的流行方法。

深度学习模型: 

1、David Salinas, V alentin Flunkert, Jan Gasthaus, and Tim Januschowski. Deepar: Probabilistic forecasting with autoregressive recurrent networks. International Journal of F orecasting, 36(3):1181–1191, 2020.

2、Boris N Oreshkin, Dmitri Carpov, Nicolas Chapados, and Y oshua Bengio. N-beats: Neural basis expansion analysis for interpretable time series forecasting. In International Conference on Learning Representations, 2019.

3、Rajat Sen, Hsiang-Fu Y u, and Inderjit S Dhillon. Think globally, act locally: A deep neural network approach to high-dimensional time series forecasting. Advances in neural information processing systems, 32, 2019.

4、Tian Zhou, Ziqing Ma, Qingsong Wen, Xue Wang, Liang Sun, and Rong Jin. Fedformer: Frequency enhanced decomposed transformer for long-term series forecasting. In International Conference on Machine Learning, pages 27268–27286. PMLR, 2022.

5、Si-An Chen, Chun-Liang Li, Nate Y oder, Sercan O Arik, and Tomas Pfister. Tsmixer: An all-mlp architecture for time series forecasting. arXiv preprint arXiv:2303.06053, 2023.

旨在设计一个通用的时间序列基础模型,以获得良好的开箱即用的零样本预测性能,在大量时间序列数据上训练的大型预训练模型学习时间模式,从而对以前未见过的数据集进行时间序列预测。

TimeFM是一个用于时间序列预测的单一基础模型,当用于不同领域的各种以前未见过的预测数据集时,可以获得接近最先进的零样本精度(与这些数据集单独训练的最佳监督模型相比),该模型可以很好的跨越不同的预测历史长度、预测长度和推断时间粒度。

基础模型的两个关键元素:①使用现实世界数据和合成数据构建的大规模时间序列语料库;②采用带有输入补丁的解码器风格注意力架构(输入补丁:将输入数据分割成小块或补丁,并将这些补丁作为模型的输入)

2、最近工作

预测模型可分为以下几类

1、局部单变量模型:分别针对数据集中的每个时间序列进行训练,以便预测相应的时间序列的未来。

2、全局单变量模型:在许多时间序列上进行全局训练,但在推理过程中,将时间序列的未来作为其自身过去和其他相关协变量的函数来预测。

3、全局多变量模型:采用数据集中所有时间序列的过去来预测所有时间序列的未来。

3、问题定义

建立一个通用的零样本预测器,接受时间序列的过去C个时间点作为上下文,并预测未来的H个时间点。定义预测的准性可以通过均方误差(MAE)等指标来衡量。

4、模型架构

本文提出:允许模型的预测输出patch的长度大于输入patch的长度,假设输入patch_len为32,输出patch_len为128

patch掩蔽:如果只使用patch,模型可能只学会预测上下文长度是输入patch长度的倍数。因此在训练中应小心使用掩蔽,patch的部分以及上下文窗口开始的整个补丁都可以在数据批处理中被屏蔽(随机屏蔽策略)。

输入层:将时间序列预处理成变换器层的输入token。首先,输入被分解成连续的非重叠的patches,然后,每个patch通过残差块(residual block)处理成模型维度大小的向量。同时,还提供了一个二进制填充掩码(padding mask),用于指示哪些输入应该被忽略,残差块本质上是一个多层感知器(MLP)块,带有一个隐藏层和跳跃连接。

堆叠变换器(stacked transformer):模型的大部分参数位于堆叠的变换器层中,每层都有标准的多头自注意力机制(multi-head self-attention, SA)后跟一个前馈网络(Feedforward Network,FFN)。使用因果注意力(causal attention),即每个输出token只能关注序列中它之前的输入token(包括相应的输入令牌),这种设计允许模型并行处理整个上下文窗口,并在看到不同数量的输入patches后自动预测未来的时间点。

输出层:任务是将输出token映射成预测。模型以解码器仅模型(decoder-only mode)训练,即每个输出token应该能够预测紧随其后输入patch的部分时间序列,与输入patch长度不同,输出patch长度可以更长,这意味着可以根据迄今为止看到的输入patch编号的信息预测更大的时间序列块。

损失函数:专注于点预测,因此使用了均方误差作为训练期间的损失函数。损失函数是在所有训练小批量上的预测误差的平均值。

训练:模型使用标准的微批量梯度下降进行解码器仅模式的训练,通过时间序列的所有窗口进行迭代。训练中唯一的非标准部分是训练期间掩码的采样方式。

        对于批次中的每个时间序列,对0—p-1之间的随机数r进行采样,然后设置1—r为1,其余为0,由此屏蔽输入patch的一小部分。

推理:训练好的网络可以使用自回归解码(类似于大语言模型)为任何预测范围生成预测。给定输入时间序列,模型首先预测下一个时间步的未来,然后使用生成的输出作为输入来生成下一个输出patch的预测,依此类推。

5、预训练细节

预训练语料库包含大量代表各种领域、趋势和季节性模式以及时间粒度的时间数据,从三个主要来源获取用于训练模型的大量数据来解决这个问题。主要数据来源是:

1、Google trends:该数据集捕获了从2007年到2022年数百万查询的搜索兴趣,作者选择了约22000个主要查询,并下载了这些查询在小时、日、周和月粒度上的搜索兴趣数据。

2、wiki pageviews:该数据集捕获了从2012年1月到2023年11月所有wikimdedia页面的小时级浏览量。作者清晰并聚合了这些数据,并过滤掉包含多零值的页面浏览时间序列。

3、合成数据:创建了合成时间序列生成器,包括ARMA过程、季节性模式(不同频率的正弦波和余弦波混合)、趋势(线性、指数带有一些变化点)和阶跃函数。合成时间序列可以是一个或多个这些过程的加性组合。

4、其他真实世界数据源:添加其他公开的数据集,包括M4数据集的所有粒度、小时和15min的电力数据集、小时交通数据集,以及用于评估的10min粒度的气象数据集。

未完成,待续......

这篇关于《A DECODER-ONLY FOUNDATION MODEL FOR TIME-SERIES FORECASTING》阅读总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080694

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在

Python利用qq邮箱发送通知邮件(已封装成model)

因为经常喜欢写一些脚本、爬虫之类的东西,有需要通知的时候,总是苦于没有太好的通知方式,虽然邮件相对于微信、短信来说,接收性差了一些,但毕竟免费,而且支持html直接渲染,所以,折腾了一个可以直接使用的sendemail模块。这里主要应用的是QQ发邮件,微信关注QQ邮箱后,也可以实时的接收到消息,肾好! 好了,废话不多说,直接上代码。 # encoding: utf-8import lo

七种排序方式总结

/*2018.01.23*A:YUAN*T:其中排序算法:冒泡排序,简单排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序*/#include <stdio.h>#include <math.h>#include <malloc.h>#define MAXSIZE 10000#define FALSE 0#define TRUE 1typedef struct {i

Java实现MD5加密总结

Java实现MD5加密总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 什么是MD5加密 MD5是一种常用的哈希算法,用于将任意长度的数据通过哈希运算转换为固定长度的数据串,通常为128位的二进制串,常用于对密码等敏感信息进行加密存储或传输。 2. Java实现MD5加密的方法 2.1 使用java.sec

Linux通配符总结

Linux通配符总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Linux系统中,通配符是一种用于匹配文件名或路径名的特殊字符。通过使用通配符,可以方便地匹配多个文件或目录,从而进行文件操作或查找。 2. 常用的通配符 在Linux系统中,常用的通配符包括以下几种: *:匹配任意长度的任意字符。?:匹配任意单个字符

【Linux文件系统】被打开的文件与文件系统的文件之间的关联刨析总结

操作系统管理物理内存以及与外设磁盘硬件进行数据的交换 操作系统如何管理物理内存呢? 其实操作系统内核先对内存先描述再组织的!操作系统管理内存的基本单位是4KB,操作系统会为每一个4KB大小的物理内存块创建一个描述该4KB内存块的struct page结构体,该结构体存储着这4KB内存块的属性信息,通过管理struct page来对内存进行管理,page结构体的大小比较小,OS通常将它们组成一个