今天跟大家聊一聊大模型在時間序列預(yù)測中的應(yīng)用。隨著大模型在NLP領(lǐng)域的發(fā)展,越來越多的工作嘗試將大模型應(yīng)用到時間序列預(yù)測領(lǐng)域中。這篇文章介紹了大模型應(yīng)用到時間序列預(yù)測的主要方法,并匯總了近期相關(guān)的一些工作,幫助大家理解大模型時代時間序列預(yù)測的研究方法。
1、大模型時間序列預(yù)測方法
最近三個月涌現(xiàn)了很多大模型做時間序列預(yù)測的工作,基本可以分為2種類型。
第一種是直接用NLP的大模型做時間序列預(yù)測。這類方法中,使用GPT、Llama等NLP大模型進行時間序列預(yù)測,重點是如何將時間序列數(shù)據(jù)轉(zhuǎn)換成適合大模型的輸入數(shù)據(jù)。
第二種是訓(xùn)練時間序列領(lǐng)域的大模型。這類方法中,使用大量的時間序列數(shù)據(jù)集,聯(lián)合訓(xùn)練一個時間序列領(lǐng)域的GPT或者Llama等大模型,并用于下游時間序列任務(wù)。
針對上述兩類方法,下面給大家分別介紹幾篇相關(guān)的經(jīng)典大模型時間序列代表工作。
2、NLP大模型應(yīng)用到時間序列
這類方法是最早出現(xiàn)的一批大模型時間序列預(yù)測工作。
紐約大學(xué)和卡內(nèi)基梅隆大學(xué)聯(lián)合發(fā)表的文章Large Language Models Are Zero-Shot Time Series Forecasters中,對時間序列的數(shù)字表示進行了tokenize的設(shè)計,以此轉(zhuǎn)換成GPT、LLaMa等大模型可以識別的輸入。由于不同大模型對于數(shù)字的tokenize方式不一樣,因此使用不同的大模型時,也需要個性化的進行處理。例如GPT會把一串?dāng)?shù)字分割成不同的子序列,影響模型學(xué)習(xí),因此本文將數(shù)字之間強行加入一個空格來適配GPT的輸入形式。而對于LLaMa等最近發(fā)布的大模型,一般對單獨的數(shù)字都進行分割,因此不再需要加空格操作。同時,為了避免時間序列數(shù)值太大,使輸入序列太長,文中進行了一些縮放操作,將原始時間序列的值限定在一個比較合理的范圍內(nèi)。
上述處理后的數(shù)字字符串,輸入到大模型中,讓大模型自回歸的預(yù)測下一個數(shù)字,最后再將預(yù)測出的數(shù)字轉(zhuǎn)換成相應(yīng)的時間序列數(shù)值。下圖中給出了一個示意圖,利用語言模型的條件概率建模數(shù)字,就是根據(jù)前面的數(shù)字預(yù)測下一位為各個數(shù)字的概率,是一種迭代的層次softmax結(jié)構(gòu),加上大模型的表征能力,可以適配各種各樣的分布類型,這也是大模型可以以這種方式用于時間序列預(yù)測的原因。同時,模型對于下一個數(shù)字預(yù)測的概率,也可以轉(zhuǎn)換成對不確定性的預(yù)測,實現(xiàn)時間序列的不確定性預(yù)估。
另一篇文章TIME-LLM: TIME SERIES FORECASTING BY REPROGRAMMING LARGE LANGUAGE MODELS提出了一種reprogramming方法,將時間序列映射到文本,實現(xiàn)時間序列和文本這兩種模態(tài)之間的對齊。
具體實現(xiàn)方法為,首先將時間序列分成多個patch,每個patch通過MLP得到一個embedding。然后,將patch embedding映射到語言模型中的詞向量上,實現(xiàn)時間序列片段和文本的映射和跨模態(tài)對齊。文中提出了一種text prototype的思路,將多個詞映射到一個prototype,以此來表示一段時間序列patch的語義。例如下圖例子中,shot和up兩個詞映射到紅色三角,對應(yīng)時間序列中短期上升形式子序列的patch。
3、時間序列大模型
另一個研究思路是,借鑒NLP領(lǐng)域大模型的思路,直接構(gòu)建一個時間序列預(yù)測領(lǐng)域的大模型。
Lag-Llama: Towards Foundation Models for Time Series Forecasting這篇文章搭建了時間序列中的Llama模型。核心包括特征層面和模型結(jié)構(gòu)層面的設(shè)計。
在特征方面,文中提取了多尺度多類型的lag feature,主要是原始時間序列不同時間窗口的歷史序列統(tǒng)計值。這些序列作為額外的特征輸入到模型中。在模型結(jié)構(gòu)方面,NLP中的LlaMA結(jié)構(gòu),核心是Transformer,對其中的normalization方式和position encoding部分做了優(yōu)化。最后的輸出層,使用多個head擬合概率分布的參數(shù),例如高斯分布就擬合均值方差,文中采用的是student-t分布,輸出freedom、mean、scale三個對應(yīng)參數(shù),最后得到每個時間點的預(yù)測概率分布結(jié)果。
另一篇類似的工作是TimeGPT-1,構(gòu)建了時間序列領(lǐng)域的GPT模型。在訓(xùn)練數(shù)據(jù)方面,TimeGPT應(yīng)用了海量的時間序列數(shù)據(jù),總計100billion的數(shù)據(jù)樣本點,涉及多種類型的domain數(shù)據(jù)。在訓(xùn)練過程中,使用更大的batch size和更小的學(xué)習(xí)率來提升訓(xùn)練的魯棒性。模型主體結(jié)構(gòu)為經(jīng)典的GPT模型。
通過下面的實驗結(jié)果也可以看出,在一些零樣本學(xué)習(xí)任務(wù)中,這種時間序列預(yù)訓(xùn)練大模型相比基礎(chǔ)的模型都取得了顯著的效果提升。
4、總結(jié)
這篇文章介紹了大模型浪潮下的時間序列預(yù)測研究思路,整體包括直接利用NLP大模型做時間序列預(yù)測,以及訓(xùn)練時間序列領(lǐng)域的大模型。無論哪種方法,都向我們展現(xiàn)了大模型+時間序列的潛力,是一個值得深入研究的方向。