MIT最新力作:用GPT-3.5解決時(shí)間序列異常檢測問題
圖片
論文標(biāo)題:Large language models can be zero-shot anomaly detectors for time series?
下載地址:https://arxiv.org/pdf/2405.14755v1
1.整體介紹
MIT的這篇文章,基于LLM(如GPT-3.5-turbo、MISTRAL等)進(jìn)行時(shí)間序列異常檢測。核心在于pipeline的設(shè)計(jì),主要分為兩個(gè)部分。
時(shí)序數(shù)據(jù)處理:通過離散化等方法,將原始的時(shí)間序列轉(zhuǎn)換成LLM可理解的輸入;
異常檢測Pipeline:設(shè)計(jì)了兩種基于LLM的異常檢測pipeline,一種是基于prompt的方法,問大模型異常位置,大模型給出異常位置的index;另一種是基于預(yù)測的方法,讓大模型進(jìn)行時(shí)間序列預(yù)測,根據(jù)預(yù)測值和真實(shí)值的差距進(jìn)行異常定位。
圖片
2.時(shí)序數(shù)據(jù)處理
為了讓時(shí)間序列適配LLM輸入,文中將時(shí)間序列轉(zhuǎn)換成數(shù)字,由數(shù)字作為LLM的輸入。這里的核心是如何用最短的長度來保留盡量多原始的時(shí)間序列信息。
首先,將原始時(shí)間序列統(tǒng)一減去最小值,防止負(fù)值的出現(xiàn),負(fù)值的-號(hào)會(huì)占用一個(gè)token。同時(shí),將數(shù)值的小數(shù)點(diǎn)統(tǒng)一后移,并且每個(gè)數(shù)值都保留到固定位數(shù)(如小數(shù)點(diǎn)后3位)。由于GPT對輸入的最長長度有限制,因此文中采用了一種動(dòng)態(tài)窗口的策略,將原始序列分成有重疊的子序列,以此輸入大模型中。
此外,由于不同LLM的tokenizer不同,為了防止數(shù)字沒有被完全切分開,文中在每個(gè)數(shù)字中間都加一個(gè)空格進(jìn)行強(qiáng)行區(qū)分。后續(xù)的效果驗(yàn)證中,也表明加空格的方法要優(yōu)于不加空格的。下面例子為處理結(jié)果:
圖片
不同的數(shù)據(jù)處理方式,用于不同的大模型,會(huì)產(chǎn)生不同的結(jié)果,如下圖所示。
圖片
3.異常檢測Pipeline
文中提出了兩種基于LLM的異常檢測pipeline,第一種是PROMPTER,將異常檢測問題轉(zhuǎn)換成prompt輸入大模型,讓模型直接給出答案;另一種是DETECTOR,讓大模型進(jìn)行時(shí)間序列預(yù)測,然后通過預(yù)測結(jié)果和真實(shí)值的差異判斷異常點(diǎn)。
圖片
PROMPTER:下表是文中進(jìn)行prompt迭代的過程,從最簡單的prompt開始,不斷發(fā)現(xiàn)LLM給出結(jié)果的問題,并完善prompt,經(jīng)過5個(gè)版本的迭代形成了最終的prompt。使用這個(gè)prompt,可以讓模型直接輸出異常位置的索引信息。
圖片
DETECTOR:之前已經(jīng)有很多工作用大模型進(jìn)行時(shí)間序列預(yù)測。文中經(jīng)過處理的時(shí)間序列,可以直接讓大模型生成預(yù)測結(jié)果。將不同窗口生成的多個(gè)結(jié)果,取中位數(shù),然后根據(jù)預(yù)測結(jié)果和真實(shí)結(jié)果的差距,作為異常檢測的判別依據(jù)。
4.實(shí)驗(yàn)結(jié)果
文中通過實(shí)驗(yàn)對比發(fā)現(xiàn),基于大模型的異常檢測方法,可以由于基于Transformer的異常檢測模型,效果提升12.5%。AER(AER: Auto-Encoder with Regression for Time Series Anomaly Detection)是效果最好的基于深度學(xué)習(xí)的異常檢測方法目前仍然比基于LLM的方法效果好30%。此外,基于DIRECTOR這種pipeline的方法要優(yōu)于基于PROMTER的方法。
圖片
此外,文中也可視化了大模型的異常檢測過程,如下圖。