题目:Time-LLM: Time Series Forecasting by Reprogramming Large Language Models
作者:Ming Jin(金明), Shiyu Wang(王世宇), Lintao Ma, Zhixuan Chu, James Y. Zhang, Xiaoming Shi, Pin-Yu Chen(陳品諭), Yuxuan Liang(梁宇轩), Yuan-Fang Li(李元放), Shirui Pan(潘世瑞), Qingsong Wen(文青松)
机构:莫纳什大学(Monash),蚂蚁集团,IBM,格里菲斯大学(Griffith),阿里巴巴(Or松鼠AI),香港科技大学(广州)
arXiv网址:https://arxiv.org/abs/2310.01728
YouTube一作talk:https://www.youtube.com/watch?v=6sFiNExS3nI
OpenReview网址:https://openreview.net/forum?id=Unb5CVPtae
项目地址:https://github.com/KimMeen/Time-LLM
关键词:时间序列预测,大语言模型,模型重编程
TL; DR: 本文提出了 Time-LLM,一个重编程框架,将 LLM 重新用于通用时间序列预测,同时保持主干语言模型不变。
这篇论文应该火了有半年了,目前Google scholar上引用有61个。
也有很多好的解读: 机器之心:谁说大象不能起舞! 重编程大语言模型实现跨模态交互的时序预测 | ICLR 2024 量子位:大模型做时序预测也很强!华人团队激活LLM新能力,超越一众传统模型实现SOTA 当交通遇上机器学习:TIME-LLM:通过重新编程大型语言模型进行时间序列预测 时序人:ICLR 2024 | TIME-LLM:将时序数据重新编码为更自然的文本表示
时间序列预测在许多现实世界的动态系统中具有重要意义,并且已被广泛研究。与自然语言处理 (NLP) 和计算机视觉 (CV) 中单个大模型可以处理多个任务不同,时间序列预测模型通常是专门化的,需要针对不同的任务和应用程序进行不同的设计。虽然预训练的基础模型在 NLP 和 CV 领域取得了令人印象深刻的进步,但它们在时间序列领域的发展却受到数据稀疏性的限制。最近的研究表明,大语言模型(LLM)对复杂的标记序列具有强大的模式识别和推理能力。然而,如何有效地调整时间序列数据和自然语言的模式以利用这些功能仍然是一个挑战。在这项工作中提出了 Time-LLM,这是一个重编程框架,可将 LLM 重新用于通用时间序列预测,同时保持主干语言模型不变。首先使用文本原型对输入时间序列进行重编程,然后将其输入到冻结的LLM中以对齐两种模式。为了增强LLM利用时间序列数据进行推理的能力,提出了提示作为前缀(Prompt-as-Prefix, PaP),它丰富了输入上下文并指导重编程的输入patch的转换。最后对 LLM 转换后的时间序列patch进行投影以获得预测。综合评估表明,Time-LLM 是一个强大的时间序列学习器,其性能优于最先进的专业预测模型。此外,Time-LLM 在少样本和零样本学习场景中都表现出色。
时间序列数据广泛存在于各种动态系统中,如气候模型、交通流量预测和能源负荷预测等。传统的时间序列预测方法如 ARIMA、LSTM 等,虽然在特定领域内有效,但普遍存在模型泛化能力弱和对数据需求量大的问题。而现有的大语言模型如 GPT-3 和 GPT-4 虽展示出了处理复杂序列的强大能力,但直接应用于时间序列数据还面临两大挑战:一是模态不匹配,即语言模型处理的是离散文本数据,而时间序列数据通常是连续的;二是缺乏任务相关的先验知识,如时间依赖性和周期变化等,这些都不是语言模型预训练中涵盖的。
为了克服上述挑战,论文提出了 TIME-LLM 框架,通过两个主要技术手段解决问题:
研究者们首先将时间序列数据转换成文本原型(Text Prototypes),这一过程类似于将连续的数值数据通过特定的文本描述(如"短期上升"、"长期下降"等)编码,使其能够被语言模型理解。这一步骤不仅解决了模态不匹配的问题,而且通过精心设计的文本原型,可以间接引入时间序列分析中常见的统计特性和趋势变化。
重编程示例图
将转换后的时间序列块(Patches)与特定的提示信息一起输入到语言模型中。这些提示信息包括任务指令、数据集描述和统计特性等,旨在提供更丰富的上下文信息,帮助语言模型更好地理解和预测时间序列。通过这种方式,模型可以在没有额外训练的情况下,直接应用于时间序列预测任务。
PAP
综上所述,论文的主要工作总结如下:
模型框架
论文首先将输入的时间序列数据通过可逆实例归一化(RevIN)处理,保证数据在不同尺度上具有可比性。然后将处理后的数据被切分成多个小段,每段数据称为一个“patch”。这些数据块随后通过一个嵌入层转换为隐空间中的表示,即文本原型。文本原型是预训练的词嵌入,用于将时间序列数据的数值特征转换为大语言模型能够理解的语言表征形式。
patch重编程
通过使用文本原型,将每个数据块的数值特征映射到语言模型的输入空间中。这一步骤是通过cross-attention机制实现,使得时间序列的每个部分都能找到与之语义相关的文本表征。为了进一步增强模型对时间序列特定任务的理解,Time-LLM引入了“前缀作为提示”的策略。这一策略通过在处理的数据块前添加相关的上下文信息和任务指令,形成一种丰富的输入表示,帮助模型更好地理解和预测时间序列数据。
提示示例
处理后的数据通过语言模型的主体进行处理,最终的输出再通过一个线性投影层转换为最终的时间序列预测结果。这一步确保了从语言模型输出到时间序列预测的平滑转换。
长时预测
短时预测
少样本预测(10%)
少样本预测(5%)
零样本
消融实验和efficiency
本文的附录还有更多实验结果,阅读原文跳转本文的OpenReview链接。
如果觉得有帮助还请分享,在看,点赞