TimesLM:时间序列预测基础模型

B站影视 2024-11-30 20:58 2

摘要:时间序列预测一直是金融、医疗保健和零售等行业决策的基石。从预测股票价格到优化能源消耗,挑战始终在于开发能够很好地适用于各种数据集和时间模式的模型。

时间序列预测一直是金融、医疗保健和零售等行业决策的基石。从预测股票价格到优化能源消耗,挑战始终在于开发能够很好地适用于各种数据集和时间模式的模型。

TimesLM 是一款用于时间序列预测的开创性大型语言模型 (LLM),其灵感来自基于 NLP 的基础模型的进步。TimesLM 具有零样本预测功能,无需特定任务的训练即可提供接近最先进监督模型的性能。

本文将解开 TimesLM 的架构、数学和实际实现,展示它如何在时间序列预测中树立新的标杆。

图 1:TimesFM 架构概览(

TimesLM 的架构是一个仅解码器的转换器,这种方法大量借鉴了基于 NLP 的 LLM。但是,它经过量身定制,以满足时间序列预测的独特需求。让我们来分析一下:

补丁解码器风格

在 NLP 中,模型处理连续的标记(例如单词或子单词)。TimesLM 类似地将时间序列数据划分为补丁——连续的数据点段。每个补丁都相当于一个标记,在处理长时间序列时大大减少了计算负担。

例如,1024 个数据点的时间序列可以分解为长度为 32 的补丁,从而得到 32 个补丁。

优点:

效率:减少输入到转换器层的标记数量,从而实现更快的训练和推理。稳健性:通过关注较小数据块中的模式,帮助模型更好地泛化。

代码示例:

def create_patches(time_series, patch_size):return [time_series[i:i+patch_size] for i in range(0, len(time_series), patch_size)]

灵活的输入和输出补丁长度

输入补丁用于捕获历史上下文,而输出补丁则预测未来值。与标准 LLM 不同,TimesLM 支持更长的输出补丁(例如,一次预测 128 个时间点),从而减少推理过程中所需的自回归步骤数。

为什么这很重要:

对于需要长期预测的任务,更少的步骤可以减少错误传播并提高效率。

掩蔽策略

为了增强泛化能力,TimesLM 在训练期间应用随机掩蔽。它掩蔽补丁的部分或整个补丁,迫使模型适应不同的上下文长度。此策略可确保模型学会使用不完整的数据进行有效预测——这对于实际应用至关重要。

数学表示:

对于输入补丁 yj 和掩码 mj

t_j = ResidualBlock(y_j * (1 - m_j)) + PositionalEncoding(j)

堆叠的 Transformer 层

TimesLM 架构的核心包括多层因果自注意力和前馈网络。与标准 Transformer 中的双向注意力不同,因果注意力确保对未来补丁的预测仅依赖于过去的数据。

公式:

o_j = SelfAttention(t_1, ..., t_j)

这里, o_j 是第 j 个补丁的输出标记,然后将其输入到残差块中进行预测。

训练通用时间序列基础模型绝非易事。 TimesLM 的训练策略取决于两个关键要素:数据多样性和高效处理。

多样化的预训练语料库

为了确保稳健性,TimesLM 在现实世界和合成数据集的混合上进行训练,捕获了各种各样的模式、粒度和领域。

数据来源:

Google Trends:涵盖 15 年的每小时、每日、每周和每月粒度的数据。Wiki 页面浏览量:提供数百万个跨小时、天和周聚合的时间序列。合成数据:包括 ARMA 过程、季节性模式和阶跃函数,允许模型从人工生成的趋势和异常中学习。

合成数据生成:

import numpy as npdef generate_seasonal_series(length, freq):return np.sin(np.linspace(0, freq * np.pi, length))def add_trend(series, trend_factor):return series + np.linspace(0, trend_factor, len(series))synthetic_series = add_trend(generate_seasonal_series(1024, 5), 10)

修补输入处理

时间序列被分割成不重叠的补丁,每个补丁都转换为嵌入。这种分割确保了可扩展性,即使对于海量数据集也是如此。

训练期间屏蔽

为了支持不同的上下文长度,模型在训练期间随机屏蔽部分输入。例如,如果最大上下文长度为 512,则可以应用掩码来模拟较短的上下文(例如 128 或 256 个时间点)。

损失函数

主要训练目标是最小化预测值和实际值之间的均方误差 (MSE)。

数学表示:

MSE = (1 / H) * sum((y[L + i] - y_hat[L + i]) ** 2 for i in range(1, H + 1))

其中:

H 是预测范围。y[L + i] 是步骤 L + i 处的实际值。y_hat[L + i] 是步骤 L + i 处的预测值。

该模型使用小批量梯度下降进行训练,确保跨时间序列批次进行高效处理。

数据集混合策略

为了避免过度拟合单一类型的数据集,TimesLM 在真实数据和合成数据之间使用 50-50 的分割。在真实数据中,权重在每小时、每日、每周和每月数据集之间平均分配。3、零样本能力

TimesLM 最令人印象深刻的功能之一是其零样本预测能力 — 能够在训练期间从未见过的数据集上表现良好。此功能根据三个基准组进行评估:

莫纳什档案

30 个数据集的多样化集合,包括财务、天气和需求预测。TimesLM 实现了具有竞争力的性能,通常超越 DeepAR 和 FFNN 等监督基线。关键结果:TimesLM 的缩放平均绝对误差 (MAE) 平均在最佳模型的 10% 以内

Darts 基准

专注于具有强烈季节性和趋势成分的数据集,例如每月牛奶产量和航空旅客数据。TimesLM 有效地捕捉了加法和乘法模式,其性能与 ARIMA 等最先进的统计方法相当。

Informer 数据集

这些长视界数据集测试模型预测延长时间间隔(例如 192 个时间步长)的能力。 TimesLM 凭借其补丁解码器架构脱颖而出,其表现通常优于 PatchTST 等专用长视界模型。

4、缩放定律TimesLM 等基础模型的性能通常受模型大小、数据量和训练计算之间的相互作用影响。受 NLP 中建立的缩放定律的启发,TimesLM 探索了参数数量与预测准确度之间的关系。模型缩放实验:TimesLM 在具有 17M、70M 和 200M 个参数的配置下进行训练。在这些实验中,增加参数数量可带来准确度的持续提升,验证了 Kaplan 等人的观察结果,即较大的模型在数据充足的情况下往往表现更好。计算优化训练:Hoffmann 等人引入了计算优化模型的概念,在参数大小和数据可用性之间取得平衡。TimesLM 采用了类似的理念,利用其预训练语料库来实现高精度,而无需过多的计算开销。经验见解:在莫纳什数据集上,TimesLM 的缩放平均绝对误差 (MAE) 随着模型尺寸的增加而单调下降。这些结果凸显了在实际计算限制内扩展的好处。可视化扩展影响:参数计数扩展MAE17M1.2570M1.10200M0.985、实际代码

要探索 TimesLM 的实际应用,请考虑使用 GitHub 实现预测电力需求的以下示例:

from timeslm import TimesModel# Load preprocessed datasetdata = load_dataset("electricity")# Initialize the modelmodel = TimesModel(input_patch_len=32, output_patch_len=128)# Generate predictionspredictions = model.predict(data["context"], horizon=96)# Evaluate performancemse = evaluate_metric(data["ground_truth"], predictions, metric="mse")print(f"Mean Squared Error: {mse}")

此示例演示了 TimesLM 如何轻松适应新数据集,以最小的努力提供可靠的预测。

效率:TimesLM 仅使用 2 亿个参数,在计算效率高的同时,实现了接近最先进的性能。可扩展性:无缝处理不同的历史和预测长度。领域无关:经过多样化数据训练,可很好地跨领域推广。

未来方向:

概率预测:结合不确定性估计进行关键决策。小样本学习:对特定领域的数据集进行微调以提高性能。可解释性:增强模型可解释性以在高风险应用中建立信任。

TimesLM 通过将大型语言模型的原理应用于时间数据,在时间序列预测方面取得了重大进展。凭借其仅解码器的架构、高效的基于补丁的处理和强大的零样本能力,TimesLM 成为应对各种预测挑战的实用而强大的解决方案。

探索 GitHub 存储库以获取实施细节,并通过阅读完整的 TimesLM 论文深入了解研究。

来源:奇趣科学圈

相关推荐