圖片
論文標題:Large language models can be zero-shot anomaly detectors for time series?
下載地址:https: //arxiv.org/pdf/2405.14755v1
MIT的這篇文章,基於LLM(如GPT-3.5-turbo、MISTRAL等)進行時間序列異常檢測。核心在於pipeline的設計,主要分為兩個部分。
時序資料處理:透過離散化等方法,將原始的時間序列轉換成LLM可理解的輸入;
基於LM的異常檢測Pipeline設計了兩種基於prompt的異樣檢測pipeline,一種是基於prompt的方法,問大模型異常位置,大模型給出異常位置的index;另一種是基於預測的方法,讓大模型進行時間序列預測,根據預測值和實際值的差距進行異常定位。
圖片
為了讓時間序列適應LLM輸入,文中將時間序列轉換成數字,由數字作為LLM的輸入。這裡的核心是如何用最短的長度來保留盡量多原始的時間序列資訊。
首先,將原始時間序列統一減去最小值,防止負值的出現,負值的索引會佔用一個token。同時,將數值的小數點統一後移,且每個數值都保留到固定位數(如小數點後3位)。由於GPT對輸入的最長長度有限制,因此文中採用了動態視窗的策略,將原始序列分成有重疊的子序列,以此輸入大模型中。
由於不同的LLM tokenizer,為了阻止數字被完全切分開,文中每個數字中間都加一個空格進行強行區分。後續的效果驗證中,也顯示加空格的方法要優於不加空格。以下範例為處理結果:
圖片
不同的資料處理方式,用於不同的大模型,會產生不同的結果,如下圖所示。
圖片
文中提出了兩種基於LLM的異常檢測pipeline,第一種是PROMPTER ,將異常檢測問題轉換成prompt輸入大模型,讓模型直接給出答案;另一種是DETECTOR,讓大模型進行時間序列預測,然後透過預測結果和真實值的差異來判斷異常點。
圖片
PROMPTER:下表是文中進行prompt迭代的過程,從最簡單的prompt開始,不斷發現LLM給出結果的問題,並且完善prompt,經過5個版本的迭代形成了最終的prompt。使用這個prompt,可以讓模型直接輸出異常位置的索引資訊。
圖片
DETECTOR:之前已經有許多工作用大模型進行時間序列預測。文中經過處理的時間序列,可以直接讓大模型產生預測結果。將不同視窗產生的多個結果,取中位數,然後根據預測結果和真實結果的差距,作為異常檢測的判別依據。
文中透過實驗對比發現,基於大模型的異常檢測方法,可以由於基於Transformer的異常檢測模型,效果提升12.5%。 AER(AER: Auto-Encoder with Regression for Time Series Anomaly Detection)是效果最好的基於深度學習的異常檢測方法目前仍然比基於LLM的方法效果好30%。此外,基於DIRECTOR這種pipeline的方法要優於基於PROMTER的方法。
圖片
此外,文中也視覺化了大模型的異常檢測過程,如下圖。
#圖片
以上是MIT最新力作:以GPT-3.5解決時間序列異常檢測問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!