MIT最新力作:用GPT-3.5解决时间序列异常检测问题

人工智能
设计了两种基于LLM的异常检测pipeline,一种是基于prompt的方法,问大模型异常位置,大模型给出异常位置的index;另一种是基于预测的方法,让大模型进行时间序列预测,根据预测值和真实值的差距进行异常定位。
今天给大家介绍一篇MIT上周发表的文章,使用GPT-3.5-turbo解决时间序列异常检测问题,初步验证了LLM在时间序列异常检测中的有效性。整个过程没有进行finetune,直接使用GPT-3.5-turbo进行异常检测,文中的核心是如何将时间序列转换成GPT-3.5-turbo可识别的输入,以及如何设计prompt或者pipeline让LLM解决异常检测任务。下面给大家详细介绍一下这篇工作。

图片图片

论文标题: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等)进行时间序列异常检测。核心在于pipeline的设计,主要分为两个部分。

时序数据处理:通过离散化等方法,将原始的时间序列转换成LLM可理解的输入;

异常检测Pipeline:设计了两种基于LLM的异常检测pipeline,一种是基于prompt的方法,问大模型异常位置,大模型给出异常位置的index;另一种是基于预测的方法,让大模型进行时间序列预测,根据预测值和真实值的差距进行异常定位。

图片图片

2.时序数据处理

为了让时间序列适配LLM输入,文中将时间序列转换成数字,由数字作为LLM的输入。这里的核心是如何用最短的长度来保留尽量多原始的时间序列信息。

首先,将原始时间序列统一减去最小值,防止负值的出现,负值的-号会占用一个token。同时,将数值的小数点统一后移,并且每个数值都保留到固定位数(如小数点后3位)。由于GPT对输入的最长长度有限制,因此文中采用了一种动态窗口的策略,将原始序列分成有重叠的子序列,以此输入大模型中。

此外,由于不同LLM的tokenizer不同,为了防止数字没有被完全切分开,文中在每个数字中间都加一个空格进行强行区分。后续的效果验证中,也表明加空格的方法要优于不加空格的。下面例子为处理结果:

图片图片

不同的数据处理方式,用于不同的大模型,会产生不同的结果,如下图所示。

图片图片

3.异常检测Pipeline

文中提出了两种基于LLM的异常检测pipeline,第一种是PROMPTER,将异常检测问题转换成prompt输入大模型,让模型直接给出答案;另一种是DETECTOR,让大模型进行时间序列预测,然后通过预测结果和真实值的差异判断异常点。

图片图片

PROMPTER:下表是文中进行prompt迭代的过程,从最简单的prompt开始,不断发现LLM给出结果的问题,并完善prompt,经过5个版本的迭代形成了最终的prompt。使用这个prompt,可以让模型直接输出异常位置的索引信息。

图片图片

DETECTOR:之前已经有很多工作用大模型进行时间序列预测。文中经过处理的时间序列,可以直接让大模型生成预测结果。将不同窗口生成的多个结果,取中位数,然后根据预测结果和真实结果的差距,作为异常检测的判别依据。

4.实验结果

文中通过实验对比发现,基于大模型的异常检测方法,可以由于基于Transformer的异常检测模型,效果提升12.5%。AER(AER: Auto-Encoder with Regression for Time Series Anomaly Detection)是效果最好的基于深度学习的异常检测方法目前仍然比基于LLM的方法效果好30%。此外,基于DIRECTOR这种pipeline的方法要优于基于PROMTER的方法。

图片图片

此外,文中也可视化了大模型的异常检测过程,如下图。

图片 图片

责任编辑:武晓燕 来源: 圆圆的算法笔记
相关推荐

2023-06-21 13:37:41

模型研究

2023-07-04 14:01:26

GPT-4模型

2021-03-31 11:20:57

PythonADTK异常检测

2023-04-28 09:07:28

2023-08-06 08:06:30

OpenAIChatGPTGPT-4

2024-02-05 09:00:00

2023-09-06 16:44:03

2023-05-05 09:42:12

2024-01-26 08:36:07

OpenAIGPT-4​人工智能

2023-10-31 15:26:02

阿里云通义千问

2019-05-22 11:45:29

人工智能机器学习技术

2023-07-10 15:22:29

OpenAIGPT-3.5

2023-08-23 12:17:26

OpenAIChatGPT

2024-07-19 09:26:12

2023-08-23 12:02:49

数据OpenAIGPT-3.5

2023-12-20 22:17:19

GeminiGPT-3.5谷歌

2024-04-23 13:10:41

数据训练

2024-10-09 13:22:10

2022-09-21 23:41:40

机器学习开源数据

2023-06-14 12:35:57

点赞
收藏

51CTO技术栈公众号