论文标题:A DECODER - ONLY FOUNDATION MODEL FOR TIME - SERIES FORECASTING
论文链接:https://arxiv.org/abs/2310.10688
论文链接:https://github.com/google-research/timesfm
前言
谷歌这篇时间序列大模型很早之前就在关注,今天搜索了一下,对应的文章入选了ICML24,其开源的代码github已经有3.5K star。据论文中的描述,TimesFM模型在各种公共数据集上的即插即用零样本性能接近于每个单独数据集的最先进监督预测模型的准确性。TimesFM在参数数量(2亿)和预训练数据规模(约100B个时间点)上更为紧凑。
此外,模型基于预训练的解码器(Decoder Only),使用输入patch,利用包括真实世界和合成数据集在内的大型时间序列数据进行训练。TimesFM能够适应不同的预测历史长度、预测长度和时间粒度。模型的核心包括:1)一个大规模时间序列语料库,结合了真实数据和合成数据;2)解码器风格注意力架构。
本文模型
基本模型设计:
分块(Patching)。选择在训练期间将时间序列切分为patch。因为patch已被证明可以提高性能和推理速度。
仅解码器模型(Decoder-only model)。谷歌的架构与PatchTST的一个关键区别在于,谷歌的模型是仅解码器模式训练的。换句话说,给定一系列输入patch,模型被优化为根据所有过去的分块预测下一个分块。类似于大型语言模型(LLMs),这可以在整个上下文窗口上并行完成,并且自动使模型能够在看到不同数量的输入分块后预测未来。
更长的输出分块(Longer output patches)。有两种预测未来序列点的方式,一种是以自回归方式逐个token生成,另一种则是直接预测未来的token,而且直接预测往往比多步自回归解码更准确。但如果预测范围长度事先未知,那就没法直接预测了(也就是零样本预测的面临一个问题)。这里作者采用了一种折衷方法:直接预测和多步预测结合。
如图:TimesFM输入层负责将时间序列预处理成transformer的输入token。首先将输入分解为连续不重叠的patch,每个patch通过一个残差块(本质上是一个具有跳跃连接的多层感知器)处理成大小为model_dim的向量,加上位置编码,并输入到n_l层堆叠的transformer层中。其中,SA代表自注意力(注意谷歌使用的是多头因果注意力),FFN是变换器中的全连接层。输出token随后通过一个残差块映射到大小为output_patch_len的输出,这是模型迄今为止看到的最后一个输入分块之后的预测时间窗口的预测。
其实这里还涉及到数据混合和预训练的一些技巧,限于篇幅感兴趣的可以阅读原文。
论文实验和结论
文中进行了对比实验和消融实验,结论是本文模型TimesFM模型在各种公共数据集上的即插即用零样本性能接近于每个单独数据集的最先进监督预测模型的准确性。
未来工作
Prompt Tuning:在大型语言模型中,提示调整技术如思维链能显著提升模型性能。然而,对于时间序列模型,这些技术的应用尚不明确。
微调研究(finetuning studies):尤其是在协变量存在的情况下,将是未来工作的重点。
其他架构(Other architectures):未来可以尝试不同的架构,如MLP结构或高效的线性状态空间模型,这样的高效线性状态空间模型也会很有趣。
可解释性(Interpretability):通过特征重要性归因方法来提高模型的可解释性,并考虑开源模型以促进透明度和进一步研究。
大家可以关注我【科学最top】,第一时间follow时序高水平论文解读!!!