基础模型推动了计算语言学和计算机视觉领域的最新进展,并在人工智能领域取得了巨大成功。成功的基础模型的关键思想包括:
-
海量数据:庞大而多样的训练数据涵盖了广泛的分布,使模型能够近似任何潜在的测试分布。
-
可转移性:记忆和回忆所学信息的机制,例如提示和自我监督的预训练,使模型能够有效地适应新任务。
LTSM
LTSM 是 Large Time Series Foundation Model(大型时间序列基础模型)的缩写。
随着基础模型在计算语言学领域的成功,越来越多的研究工作旨在在另一种序列数据:时间序列中复制这种成功。
与大型语言模型 (LLM) 类似,大型时间序列基础模型 (LTSM) 旨在从大量不同的时间序列数据中学习以进行预测。然后可以针对各种任务(例如异常值检测或时间序列分类)对经过训练的基础模型进行微调。
虽然时间序列基础模型的概念已经存在了一段时间,并且已经探索了各种神经架构(MLP、RNN、CNN),但由于数据数量和质量问题,没有一个能够实现零样本预测。在 LLM 取得成功后,人们开始了更广泛的努力,旨在利用从自然语言数据中学习到的序列信息进行时间序列建模。
为什么 LLM 可以用于时间序列数据?
语言模型和时间序列模型之间的主要联系在于输入数据都是顺序数据,而主要区别在于模型对数据进行编码的方式,以适应它们想要捕获的模式和结构类型。
对于大型语言模型,输入句子中的单词通过标记化编码为整数序列:
然后通过嵌入查找过程转换为数值向量:
类似地,时间序列数据也可以被标记为一系列符号表示。下图说明了将具有 100 个时间戳的时间序列转换为长度为 5 的序列的示例,其中序列中的每个步骤都由 4 维特征向量表示。可以使用滑动窗口对时间序列进行分段,并进行离散化以提取统计值(例如平均值、标准差、最小值、最大值)来表示每个窗口。
简单符号表示示例:
利用 LLM 进行时间序列建模的图示:
这样,在综合语料库上训练的大型语言模型可以看作是从现实世界数据中发现的大量数值模式中学习的大型时间序列模型 (LTSM)。因此,时间序列预测问题可以定义为下一个单词预测问题。实现最佳性能和零次/少次预测的关键挑战在于协调时间序列标记和自然语言标记之间的语义信息。
如何重新编程 LLM 进行时间序列建模?
为了应对这一挑战,研究人员正在研究从训练大型语言模型的各个角度来协调时间序列和自然语言之间信息差距的方法。下表显示了两种数据类型的组件比较以及每个组件的代表性作品。
一般来说,重新编程 LLM 进行时间序列建模类似于针对特定领域对其进行微调。该过程涉及几个关键步骤:标记化、基础模型选择、提示工程和定义训练范式。
可以通过符号表示对 LLM 的时间序列数据进行标记化。无需依赖手动离散化和启发式特征提取,可以使用简单的线性层或预先训练的标记器将时间序列数据的片段映射到潜在嵌入空间内的标记中,从而使标记化的时间序列更好地适应 LLM。
可以通过对不同架构的目标进行类比来选择基础模型。例如,句子分类可以对应于时间序列分类或异常值检测,而下一个单词预测可以对应于时间序列预测。
提示时间序列数据可以依赖于有关数据的文本信息(例如数据集或任务描述),也可以依赖于从每个时间序列中提取全局统计特征以突出不同数据集之间的整体差异。
时间序列数据的训练范式通常遵循自然语言处理中使用的类似方法。这些包括使用相同的模型架构从头开始训练而不使用预训练权重、对预训练权重进行微调或训练并行适配器(例如 LoRA)以使 LLM 适应时间序列数据。每种方法都有不同的计算成本,这些成本不一定与性能结果呈正相关。
那么,考虑到每一步都有不同的选择,我们如何确定最佳选项以创建具有最佳性能的更通用的模型?
训练 LTSM 时的不同设计选择
为了了解每一步选择的利弊,我们最近的论文 LTSM-bundle 研究了开源基准数据集上不同选择的组合,并提供了一个开源基准框架,使公众能够在自己的时间序列数据上重新编程和对不同选择的 LLM 进行基准测试。
具体来说,我们深入研究了如何通过研究各种因素来训练 LTSM 模型,例如提示模型的不同方式、如何分解数据、训练方法、选择正确的基础模型、我们拥有的数据量以及数据集的多样性。除了研究当前的方法之外,我们还提出了一个名为“时间序列提示”的新想法。这种新方法通过从训练数据中提取关键特征来创建提示,从而为每个数据集提供可靠的统计概览。
我们根据预测误差(均方/绝对误差)评估不同的选择,数字越低,模型越好。研究的一些关键要点包括:
-
简单的统计提示(TS Prompt)在增强 LTSM 模型的训练方面优于文本提示,并且与不使用提示的情况相比,使用统计提示可获得更出色的性能。
-
与其他标记化方法相比,使用可学习线性层对时间序列进行标记更适合训练 LTSM 模型,尤其是在同时处理来自不同领域的数据时。
-
从头开始训练最初可能表现良好,但由于参数数量过多,存在过拟合的风险。完全微调通常可实现最佳性能,并且收敛速度是从头开始训练的两倍,从而确保高效有效的预测。
-
较小的模型在长期预测(336 和 720 步)中表现出高达 2% 的性能提升,而中型模型在短期预测(96 和 192 步)中的表现优于大型模型,这是由于大型模型中可能存在过度拟合问题。
-
增加数据量并不与模型性能的提高呈正相关,因为每个数据集的数据越多,训练时间序列的粒度就越大,这可能会降低模型的泛化能力。但增加数据集的多样性通常会提高性能。
-
将所有这些要点捆绑在一起创建一个 LSTM 模型(LSTM-Bundle),其性能优于所有现有的为时间序列和基于变压器的时间序列预测模型重新编程 LLM 的方法。
自己试试重新编程 LTSM
想要尝试重新编程自己的 LTSM 吗?以下是 LTSM 捆绑包的教程:
https://github.com/daochenzha/ltsm/blob/main/tutorial/README.md
步骤 1:创建虚拟环境。克隆仓库并安装依赖:
步骤 2:准备数据集。确保你的本地数据文件夹如下所示:
步骤 3:从训练、验证和测试数据集生成时间序列提示:
步骤 4:在 ‘./prompt_data_split’ 文件夹中找到生成的时间序列提示。然后运行以下命令来完成提示:
最后一步:在 gpt2-medium 上使用时间序列提示和线性标记化训练你自己的 LTSM: