type
status
date
slug
summary
tags
category
icon
password
💡
个人主观评分:4分,三份给代码开放 著名实验室出品,并没有给这篇论文的叙事能力加分。做了很多论点,但没有足够的实验作为论据支持。例如: - 从开头就开始定义TimeSeriesModel的特征是weak的,LLM的提取的特征是Strong的 - 各种Entangled和Disentangled的形容词缺少定义和实证。 总的来说,我认为论文没有太多conceptually new的创新。
 

 
 
 
notion image

基本信息

论文信息

  • 作者:Chenxi Liu, Qianxiong Xu, Hao Miao, Sun Yang, Lingzheng Zhang, Cheng Long, Ziyue Li, Rui Zhao
  • 机构:南洋理工大学 S-Lab、奥尔堡大学、北京大学、香港科技大学(广州)、科隆大学、商汤科技

研究背景

多变量时间序列预测(MTSF)的目标是从历史数据中挖掘变量之间的动态关系,以预测未来的序列值。传统的统计方法和深度学习方法由于参数有限、训练数据规模小,性能受限。近年来,结合时间序列和文本提示的大型语言模型(LLM)在MTSF任务中表现出色,但现有方法在学习解耦嵌入(disentangled embeddings)方面存在不足。

研究方法

TimeCMA框架

TimeCMA框架包含三个关键模块:双模态编码(Dual-Modality Encoding)跨模态对齐(Cross-Modality Alignment)时间序列预测(Time Series Forecasting)

时间序列编码分支

使用 逆嵌入(Inverted Embedding) 将每个变量的整个时间序列视为一个token,生成token嵌入,然后通过一个轻量级的Transformer编码器(Pre-LN Transformer)捕捉时间序列的复杂依赖关系。
TimeCMA 模型的 Dual-Modality Encoding 模块中,Time Series Encoding Branch 的主要任务是从历史时间序列数据中提取变量嵌入(variable embeddings),具体步骤如下:

逆嵌入(Inverted Embedding)

  • 将每个变量的整个时间序列视为一个token,通过逆嵌入层将时间序列数据转换为可学习的矩阵,捕捉变量的时间依赖性。
  • 具体操作是先对时间序列数据 进行可逆实例归一化(reversible instance normalization),使其均值为零、标准差为1,以减轻时间序列分布偏移的影响。
  • 然后通过线性变换 将归一化后的时间序列转换为变量嵌入(),其中 表示嵌入的时间序列的隐藏维度, 是可学习的参数。
 

时间序列编码器(Time Series Encoder)

  • 将变量嵌入 \(H_T\) 输入到一个轻量级的编码器 \(TSEncoder(\cdot)\) 中,该编码器基于预归一化Transformer(Pre-LN Transformer)结构,先进行层归一化(Layer Normalization),再进行多头自注意力机制(Multi-Head Self-Attention, MHSA)和前馈网络(Feed-Forward Network, FFN)的处理。
  • 层归一化的公式为: 其中, 是可学习的缩放和平移参数, 分别表示均值和标准差, 表示逐元素乘法。
  • 多头自注意力机制的输出与输入通过残差连接合并:
  • 接着进行第二次层归一化,然后通过前馈网络进一步处理嵌入,并再次通过残差连接与之前的输出合并:
  • 其中,前馈网络的公式为:
  • 最终,经过多层处理后,得到时间序列编码器的输出
以下是对应的伪代码:
说明:
  • 可逆实例归一化:确保时间序列数据的分布一致性,避免因数据分布变化导致的预测偏差。
  • 多头自注意力机制:捕捉时间序列中不同变量之间的复杂依赖关系。
  • 前馈网络:进一步处理和细化嵌入信息,增强模型的表达能力。
  • 残差连接:避免深层网络训练中的梯度消失问题,提高模型的训练稳定性和收敛速度。
 

LLM增强编码分支

将相同的时间序列数据包装成文本提示(prompts),通过预训练的LLM(如GPT-2)生成提示嵌入,这些嵌入包含丰富的语言知识,能够增强时间序列的表示。
 
TimeCMA 模型的 Dual-Modality Encoding 模块中,LLM-Empowered Encoding Branch 的主要任务是利用预训练的大型语言模型(LLM)从文本提示(prompts)中提取嵌入,以增强时间序列的表示。具体步骤如下:

LLM-Empowered Encoding Branch 的主要任务

  • 文本提示的生成:将时间序列数据包装成文本提示(prompts),每个变量的时间序列数据被转换为一个文本描述。
  • 预训练 LLM 的嵌入提取:使用预训练的 LLM(如 GPT-2)处理这些文本提示,生成包含丰富语言知识的嵌入。
  • 提示编码器的细化:通过一个提示编码器(Prompt Encoder)进一步处理 LLM 生成的嵌入,以适应后续的时间序列预测任务。
  • 最后 token 嵌入的存储:为了减少计算成本,只保留每个提示的最后一个 token 的嵌入,并将其存储起来以供后续使用。

具体实现步骤

(1)文本提示的生成

将时间序列数据 转换为文本提示
其中每个提示 包含时间信息(如时间戳和频率)和时间序列值。例如,一个提示可以是:
其中, 是时间序列的总趋势值,定义为:

(2)预训练 LLM 的嵌入提取

使用预训练的 LLM(如 GPT-2)处理这些文本提示,生成嵌入。具体步骤如下:
  • 使用 LLM 的分词器(Tokenizer)将文本提示转换为 token ID 序列。
  • 将 token ID 序列输入到 LLM 中,生成嵌入。

(3)提示编码器的细化

通过一个提示编码器(Prompt Encoder)进一步处理 LLM 生成的嵌入,以适应后续的时间序列预测任务。提示编码器的结构与时间序列编码器类似,基于预归一化 Transformer(Pre-LN Transformer)。

(4)最后 token 嵌入的存储

为了减少计算成本,只保留每个提示的最后一个 token 的嵌入,并将其存储起来以供后续使用。

伪代码实现

以下是 LLM-Empowered Encoding Branch 的伪代码实现:
说明
  • 文本提示的生成:将时间序列数据转换为自然语言描述,使 LLM 能够理解时间序列的特征。
  • 预训练 LLM 的嵌入提取:利用 LLM 的强大语言理解能力,生成包含丰富语义信息的嵌入。
  • 提示编码器的细化:通过 Transformer 结构进一步处理 LLM 的嵌入,以适应时间序列预测任务。
  • 最后 token 嵌入的存储:减少计算成本,提高推理速度,同时保留关键信息。
通过这些步骤,LLM-Empowered Encoding Branch 能够有效地将时间序列数据与 LLM 的语言知识结合起来,生成高质量的嵌入,为后续的时间序列预测任务提供支持。
 

跨模态对齐

  • 该模块基于通道相似性检索(Channel-wise Similarity Retrieval),从提示嵌入中提取与时间序列嵌入相似的部分,从而获得解耦且鲁棒的时间序列嵌入。具体来说,通过三个线性层将时间序列嵌入和提示嵌入转换为紧凑的嵌入,然后计算它们之间的通道相似性矩阵,并通过矩阵乘法进行特征聚合。
TimeCMA 模型中,跨模态对齐(Cross-Modality Alignment) 是一个关键模块,其目的是将时间序列编码分支(Time Series Encoding Branch)生成的嵌入与 LLM 增强编码分支(LLM-Empowered Encoding Branch)生成的嵌入进行对齐,从而提取出既解耦又鲁棒的时间序列嵌入。以下是跨模态对齐模块的详细说明和伪代码实现。

1. 跨模态对齐的主要任务

  • 解耦嵌入的提取:从时间序列编码分支获取解耦但较弱的时间序列嵌入
  • 鲁棒嵌入的提取:从 LLM 增强编码分支获取纠缠但鲁棒的提示嵌入
  • 基于通道相似性的检索:通过通道相似性检索,从提示嵌入中提取与时间序列嵌入相似的部分,从而获得解耦且鲁棒的时间序列嵌入

2. 具体实现步骤

(1)线性变换

将时间序列嵌入 和提示嵌入 分别通过三个线性层 转换为紧凑的嵌入:

(2)通道相似性矩阵的计算

计算通道相似性矩阵
其中, 表示矩阵乘法。

(3)特征聚合

通过矩阵乘法将 相乘,恢复通道维度,并将结果与 相加:
其中, 是一个线性层, 表示逐元素相加。

3. 伪代码实现

以下是跨模态对齐模块的伪代码实现:

4. 说明

  • 线性变换:通过三个线性层将时间序列嵌入和提示嵌入转换为紧凑的嵌入,以便后续的相似性计算。
  • 通道相似性矩阵:计算时间序列嵌入与提示嵌入之间的相似性,生成一个归一化的相似性矩阵。
  • 特征聚合:通过矩阵乘法将提示嵌入与相似性矩阵相乘,提取与时间序列嵌入相似的部分,并将结果与原始时间序列嵌入相加,生成最终的对齐嵌入。
通过跨模态对齐模块,TimeCMA 能够有效地结合时间序列编码分支和 LLM 增强编码分支的优势,生成高质量的时间序列嵌入,从而提高时间序列预测的性能。
 
 
 

时间序列预测

  • 使用一个多变量Transformer解码器来解码对齐后的时间序列嵌入,并通过一个投影函数进行最终的预测。该模块能够捕捉变量之间的依赖关系,生成准确的预测结果。
notion image
TimeCMA 模型中,时间序列预测(Time Series Forecasting) 模块是整个框架的最后一步,其目的是利用对齐后的时间序列嵌入 来预测未来的多变量时间序列。该模块包含一个多变量 Transformer 解码器和一个投影函数,用于捕捉变量之间的依赖关系并生成预测结果。

1. 时间序列预测的主要任务

  • 多变量 Transformer 解码器:解码对齐后的时间序列嵌入 ,捕捉变量之间的依赖关系。
  • 投影函数:将解码后的嵌入映射到未来的多变量时间序列。

2. 具体实现步骤

(1)多变量 Transformer 解码器

  • 输入对齐后的时间序列嵌入
  • 使用多变量 Transformer 解码器(MTDecoder)处理 ,捕捉变量之间的依赖关系。
  • 多变量 Transformer 解码器包含多头自注意力机制(MMSA)和多头交叉注意力机制(MHCA)。

(2)投影函数

  • 将解码后的嵌入 输入到投影函数中,生成未来的多变量时间序列

3. 相关公式

(1)多变量 Transformer 解码器

  • 层归一化
  • 多头自注意力机制 其中, 是线性投影的结果。
  • 多头交叉注意力机制

(2)投影函数

  • 投影 其中, 是可学习的参数。

4. 伪代码实现

以下是 时间序列预测 模块的伪代码实现:
 

5. 说明

  • 多变量 Transformer 解码器:通过多头自注意力机制和多头交叉注意力机制捕捉变量之间的依赖关系,增强模型的表达能力。
  • 投影函数:将解码后的嵌入映射到未来的多变量时间序列,生成最终的预测结果。
  • 层归一化和残差连接:提高模型的稳定性和收敛速度,避免梯度消失问题。
通过 时间序列预测 模块,TimeCMA 能够有效地利用对齐后的时间序列嵌入生成准确的预测结果,为多变量时间序列预测任务提供强大的支持。

2. 关键设计

  • 最后token嵌入存储
    • 为了减少计算成本,研究者设计了一种特殊的提示,使得LLM将关键的时间信息封装在最后一个token中。在预测时,只将最后一个token的嵌入传递给下游模块,从而显著降低了计算负担。此外,通过离线存储这些最后token的嵌入,避免了重复处理,进一步加速了推理速度。

是否支持变长输入:不支持

TimeCMA 框架在设计上主要针对固定长度的输入和输出进行优化,但通过一些调整和扩展,也可以支持变长输入和输出。以下是关于变长输入和输出的支持情况的详细分析:

1. 固定长度输入和输出

在论文中,TimeCMA 的输入和输出长度是固定的:
  • 输入长度:固定为 \( T \) 个时间步。
  • 输出长度:固定为 \( M \) 个时间步。
这种固定长度的设计使得模型在训练和推理过程中更加高效,尤其是在处理大规模数据集时。然而,这种设计限制了模型对不同长度时间序列的适应性。

2. 支持变长输入

为了支持变长输入,可以对 TimeCMA 框架进行以下调整:

(1)动态输入长度

  • 动态逆嵌入:在逆嵌入层中,可以根据输入时间序列的实际长度 \( T' \) 动态调整嵌入的大小。具体来说,逆嵌入层可以处理不同长度的时间序列,并生成相应大小的嵌入。
  • 动态时间序列编码器:时间序列编码器(TSEncoder)可以处理不同长度的输入。Transformer 架构本身支持变长输入,因此只需在输入时指定实际长度即可。

(2)伪代码调整

以下是支持变长输入的伪代码调整:

3. 支持变长输出

为了支持变长输出,可以对 时间序列预测 模块进行以下调整:

(1)动态输出长度

  • 动态投影函数:在投影函数中,可以根据目标输出长度 \( M' \) 动态调整输出的大小。具体来说,投影函数可以生成不同长度的预测结果。
  • 动态解码器:多变量 Transformer 解码器可以处理不同长度的输出。通过在解码器中引入位置编码(Positional Encoding),可以处理不同长度的输出序列。

(2)伪代码调整

以下是支持变长输出的伪代码调整:

4. 实际应用中的注意事项

  • 输入长度的动态处理:在实际应用中,可以通过填充(padding)或截断(truncation)将不同长度的输入统一为固定长度,但这种方法可能会引入噪声或丢失信息。动态处理输入长度可以避免这些问题。
  • 输出长度的动态处理:在预测时,可以根据实际需求动态调整输出长度。例如,在金融时间序列预测中,可以根据市场情况动态调整预测的时间范围。

5. 总结

虽然 TimeCMA 框架在设计上主要针对固定长度的输入和输出,但通过动态逆嵌入、动态时间序列编码器和动态投影函数,可以支持变长输入和输出。这些调整使得 TimeCMA 能够更好地适应不同长度的时间序列数据,提高模型的灵活性和适用性。
 

实验

1. 数据集

实验在八个真实世界的数据集上进行,包括ETTm1、ETTm2、ETTh1、ETTh2、ECL、FRED-MD、ILI和Weather。这些数据集涵盖了交通、环境、经济等多个领域。

2. 基线模型

研究者选择了八种基线模型进行比较,包括基于LLM的模型(如TimeLLM、UniTime、OFA)、基于Transformer的模型(如iTransformer、PatchTST、FEDformer)、基于线性的模型(Dlinear)和基于CNN的模型(TimesNet)。
notion image

3. 评估指标

使用均方误差(MSE)和平均绝对误差(MAE)作为评估指标。

4. 主要结果

TimeCMA在所有数据集上均优于所有基线模型。例如:
  • 在ETTm1数据集上,TimeCMA的MSE为0.312,MAE为0.351,显著优于其他方法。
  • 在FRED数据集上,TimeCMA的MSE为48.161,MAE为1.221,表现最佳。
此外,TimeCMA在计算效率方面也表现出色。与Time-LLM相比,TimeCMA的参数量更小,内存占用更低,推理速度更快。这主要得益于最后token嵌入存储的设计。

关键结论

TimeCMA通过跨模态对齐有效地结合了时间序列和LLM的优势,解决了现有LLM方法中存在的数据纠缠问题。通过精心设计的提示和最后token嵌入存储,TimeCMA不仅提高了预测性能,还显著降低了计算成本。实验结果表明,TimeCMA在多个真实世界的数据集上均优于现有的最先进方法,展示了其在多变量时间序列预测任务中的潜力。

研究贡献

  1. 提出了TimeCMA框架,通过跨模态对齐解决了LLM在时间序列预测中的数据纠缠问题。
  1. 设计了最后token嵌入存储机制,显著降低了计算成本并加速了推理速度。
  1. 在八个真实世界的数据集上进行了广泛的实验,证明了TimeCMA的优越性能。

研究意义

TimeCMA为利用LLM进行时间序列预测提供了一种新的思路,特别是在处理多变量时间序列数据时,能够有效地结合时间序列的动态特性和LLM的语言理解能力,为相关领域的研究和应用提供了新的方向。
 
 

吐槽

1. 标题和摘要的夸张

  • 标题:《TimeCMA: Towards LLM-Empowered Multivariate Time Series Forecasting via Cross-Modality Alignment》
    • 吐槽点:标题太长了!这种标题一看就是想把所有关键点都塞进去,生怕别人不知道他们用了什么技术。其实核心思想就是“用LLM做时间序列预测”,有必要这么绕吗?直接叫《基于LLM的时间序列预测》不香吗?
    • 摘要:摘要里吹得天花乱坠,说解决了现有LLM方法的“数据纠缠问题”,还提出了“跨模态对齐”这种高大上的概念。但仔细一读,不就是把时间序列和文本提示结合了一下吗?这种创新性真的值得这么宣传吗?

2. 方法部分的冗长和复杂

  • 双模态编码
    • 吐槽点:文章花了大量篇幅介绍“时间序列编码分支”和“LLM增强编码分支”,还用了“逆嵌入”“提示编码器”这些听起来很玄乎的概念。其实说白了,时间序列编码分支就是一个Transformer编码器,LLM增强编码分支就是把时间序列包装成文本提示然后扔到LLM里。这种设计真的有必要这么复杂吗?能不能简化一下,直接用LLM处理时间序列,而不是搞这么多中间步骤?
    • 最后token嵌入存储:这个设计听起来很巧妙,但实际操作起来是不是太麻烦了?每次都要提取最后一个token的嵌入,还要存储起来,这不就是在增加开发和维护的复杂度吗?而且,这种优化真的能带来多大的性能提升?

3. 跨模态对齐模块的“创新性”

  • 吐槽点:跨模态对齐模块听起来很厉害,但本质上不就是计算相似性矩阵然后做特征聚合吗?这种基于相似性的检索方法在很多领域都用烂了,怎么到这里就变成了“创新”了?而且,文章里提到的“通道相似性检索”听起来很玄乎,但实际操作起来不就是矩阵乘法和softmax吗?这种东西还值得专门写一个模块?
    • 公式:文章里公式一大堆,看起来很唬人,但其实很多公式都是Transformer和LLM的基本操作,换了个名字而已。比如多头自注意力机制,直接用Transformer的公式不就行了吗?非要重新定义一套符号,搞得读者一头雾水。

4. 实验部分的“选择性展示”

  • 吐槽点:实验部分虽然展示了TimeCMA在多个数据集上的优越性能,但有没有考虑过其他可能的基线模型?比如,有没有尝试过用更先进的深度学习模型(如chronos等)作为基线?文章里选的基线模型大多是比较老的,这种对比真的公平吗?
    • 数据集:用了八个数据集,听起来很全面,但这些数据集真的能代表所有时间序列预测场景吗?有没有考虑过更复杂、更动态的数据集?比如金融市场的高频数据,或者物联网设备的实时数据。这些数据集的特征和挑战可能完全不同,TimeCMA在这种场景下的表现如何?
    • 超参数调整:文章里有没有提到超参数的调整过程?这种复杂的模型肯定有很多超参数,作者是怎么确定这些参数的?有没有可能通过更好的超参数调整,其他基线模型也能取得类似甚至更好的性能?

4. 效率和可扩展性问题

  • 吐槽点:文章吹嘘TimeCMA通过最后token嵌入存储减少了计算成本,但有没有考虑过这种设计对硬件的要求?存储这些嵌入需要额外的内存,而且在大规模数据集上,这种存储成本可能会变得很高。文章里有没有提到如何优化存储和计算效率?
    • 可扩展性:文章里提到的模型设计在处理大规模数据集时会不会遇到瓶颈?比如,当时间序列的长度或变量数量增加时,模型的性能会不会下降?有没有考虑过如何扩展模型以适应更大的数据集?

5. 实际应用的局限性

  • 吐槽点:文章里吹嘘TimeCMA在多个数据集上表现优异,但这些数据集大多是实验室环境下的数据。在实际应用中,时间序列数据往往包含噪声、缺失值和异常值,这种情况下TimeCMA的表现如何?有没有考虑过如何处理这些实际问题?
    • 行业应用:文章里有没有提到TimeCMA在实际行业中的应用案例?比如金融、交通、医疗等领域。如果没有实际应用案例,这种模型真的有实用价值吗?会不会只是学术上的“空中楼阁”?

6. 论文的整体风格

  • 吐槽点:整篇论文写得就像在堆砌术语和技术细节,读起来很累。有没有考虑过简化语言,让非专业人士也能理解?这种写作风格真的能帮助读者更好地理解模型的核心思想吗?还是只是在展示作者的“学术肌肉”?
    • 图表和可视化:论文里有没有足够的图表和可视化来帮助读者理解模型的性能和优势?还是只是用表格堆砌数据?图表和可视化在论文中真的很重要,能帮助读者更直观地理解模型的效果。

Summary

这篇文章在技术上确实有一些亮点,比如利用LLM进行时间序列预测的想法很新颖。但从整体来看,文章存在很多问题:
  • 标题和摘要过于夸张,给人一种“过度包装”的感觉。
  • 方法部分过于复杂,很多设计看起来像是为了复杂而复杂。
  • 实验部分选择性展示,没有充分考虑其他可能的基线模型和数据集。
  • 效率和可扩展性问题没有得到充分讨论。
  • 实际应用的局限性没有得到充分考虑。
  • 论文的整体风格过于晦涩难懂,缺乏足够的图表和可视化。
总的来说,这篇文章更像是在展示技术的“花架子”,而不是真正解决实际问题。希望作者们在后续工作中能够更加注重实际应用和模型的可扩展性,而不是仅仅停留在理论和技术细节上。
时间序列论文阅读-ChatTime: A Unified Multimodal Time Series Foundation Model Bridging
Loading...
Yixin Huang
Yixin Huang
一个热爱生活的算法工程师
Latest posts
时间序列论文阅读 — TimeCMA(AAAI 2025)
2025-4-23
时间序列论文阅读-ChatTime: A Unified Multimodal Time Series Foundation Model Bridging
2025-4-23
VLM系列论文阅读-Mixed Preference Optimization (MPO)
2025-2-6
VLM系列论文阅读 — Flamingo
2025-2-6
认识你自己,才是这件事的最终乐趣 — 抄录
2025-2-5
用GPT4学量化投资 — Junior Level - Unit 1: Introduction to Stock Markets and Data Handling
2025-1-23
Announcement
🎉NotionNext 4.5已经上线🎉
-- 感谢您的支持 ---
👏欢迎更新体验👏