基于LLM的异常检测

大型语言模型 (LLM) 的最新进展被证明是许多领域的颠覆性力量(请参阅:通用人工智能的火花:GPT-4 的早期实验)。 和许多人一样,我们非常感兴趣地关注这些发展,并探索LLM影响数据科学和机器学习领域的工作流程和常见实践的潜力。

在我们之前的文章中,我们展示了LLM使用 Kaggle 竞赛中的表格数据提供预测的潜力。 只需很少的努力(即数据清理和/或功能开发),我们基于LLM的模型就可以在几个竞赛参赛作品中获得百分之八十左右的分数。 虽然这与最好的模型相比并不具有竞争力,但所涉及的很少的努力使其成为一个有趣的额外预测工具和一个很好的起点。

本文解决了数据科学和机器学习工作流程的另一个常见挑战:漂移(drift)和异常检测(anomaly detection)。 机器学习模型是使用历史数据和已知结果进行训练的。 有一个默认的假设,即数据在未来将保持静止(例如,其分布特征不变)。 在实践中,这通常是一个站不住脚的假设。 由于多种原因,复杂系统会随着时间的推移而发生变化。 数据可能会自然地改变为新的模式(通过漂移),或者可能由于训练数据后出现新的异常而发生变化。 负责模型的数据科学家通常负责监控数据、检测漂移或异常,并做出与重新训练模型相关的决策。 这不是一项简单的任务。 已经开发出许多文献、方法和最佳实践来检测漂移和异常。 许多解决方案采用昂贵且耗时的努力来检测和减轻生产系统中存在的异常情况。

我们想知道:LLM能否减少漂移和异常检测方面的工作量?

1、方法

本文提出了一种使用大型语言模型 (LLM) 嵌入、UMAP 降维、非参数聚类和数据可视化进行异常和漂移检测的新颖方法。 异常检测(有时也称为异常值检测或罕见事件检测)是使用统计、分析和机器学习技术来识别感兴趣的数据观察。

为了说明这种方法,我们使用 SciKit 学习包中提供的加州中型房屋价值数据集(© 2007-2023,scikit-learn 开发人员,BSD 许可证;原始数据源是 Pace、R. Kelley 和 Ronald Barry,“Sparse Spatial” 自回归”,《统计与概率快报》,第 33 卷,第 3 期,1997 年 5 月 5 日,第 291-297 页)。 我们通过采样和排列数据来合成小范围的异常数据。 然后,合成数据就很好地隐藏在原始(即“生产”)数据中。 我们进行了不同的实验,改变了异常点的比例以及“异常程度”——本质上就是我们期望找到异常的难度。 然后该程序试图识别那些异常值。 通常,这种内点检测具有挑战性,需要选择比较集、模型训练和/或启发式定义。

我们证明,LLM 模型方法可以检测包含少至 2% 数据的异常区域,准确度为 96.7%(误报率和漏报率大致相同)。 这种检测可以检测隐藏在现有分布内部的异常数据。 这种方法可以应用于生产数据,无需标记、手动分布比较,甚至不需要太多思考。 该过程完全不受参数和模型的影响,是异常值检测的有吸引力的第一步。

2、背景

模型可观察性的一个常见挑战是快速、直观地识别异常数据。 这些异常值可能是由于数据漂移(数据分布随时间的有机变化)或异常(覆盖预期分布的意外数据子集)而出现的。 异常可能由多种来源引起,但有两种非常常见。 第一个是(通常)对上游数据源的未经通知的更改。 数据消费者与数据生产者的联系越来越少。 计划内(和计划外)的更改不会传达给数据使用者。 第二个问题更加不诚实:对手在流程和系统中执行不良操作。 通常,数据科学家会对这些行为感兴趣。

一般来说,研究多变量数据的漂移方法存在许多限制其使用的挑战。 典型的方法是使用变分自编码器 (VAE)、降维或将原始未编码数据组合成向量。 这通常涉及对过去的异常进行建模、创建特征以及检查内部(内)一致性。 这些技术需要不断(重新)训练模型并拟合每个数据集。 此外,团队通常需要手动识别、设置和调整许多参数。 这种方法可能缓慢、耗时且昂贵。

在这里,我们将LLM应用于表格数据中的异常检测任务。 所演示的方法由于其易于使用而具有优势。 不需要额外的模型训练,降维使问题空间可以直观地表示,并且聚类产生异常聚类的候选者。 使用预先训练的LLM可以避免参数化、特征工程和专用模型训练的需求。 可插入性意味着LLM可以为数据科学团队开箱即用。

3、数据

在本示例中,我们使用 1990 年美国人口普查中的加州房屋价值(Pace 等人,1997 年),该数据可以在线找到,并包含在 SciKit-Learn Python 包中。 选择该数据集是因为其清洁度、连续/数字特征的使用以及一般可用性。 我们对类似的数据进行了实验。

注意:有关该过程的更完整示例,请参阅随附的笔记本

4、合成异常

与之前的研究一致,我们发现检测异常的能力受三个因素控制:异常观测值的数量、异常值的程度或这些观测值超出参考分布的数量,以及定义异常的维度数 。

第一个因素应该是显而易见的。 更多的异常信息可以使检测更快、更容易。 确定单个观察是否异常是一个挑战。 随着异常数量的增加,识别变得更加容易。

第二个因素,即离群程度,至关重要。 在极端情况下,异常可能会超出其变量的一个或多个允许范围。 在这种情况下,异常值检测是微不足道的。 更难的是那些隐藏在分布中间的异常(即“内点”)。 内点检测通常具有挑战性,因为许多建模工作都在尝试任何类型的系统检测。

最后一个因素是定义异常所使用的维度数。 换句话说,就是有多少变量参与了观察的异常性质。 在这里,维度的诅咒是我们的朋友。 在高维空间中,观察结果往往变得稀疏。 在多个维度上变化很小的异常集合可能会突然变得与参考分布中的观察结果相去甚远。 几何推理(以及任何各种多维距离计算)表明,受影响的维度越多,检测越容易,检测限越低。

在综合我们的异常数据时,我们影响了所有这三个变量。 我们进行了一项实验设计,其中:异常观测值的数量占总观测值的 1% 至 10%,异常集中在 0.50-0.75 分位数附近,受影响的变量数量为 1 至 4 个。

5、利用LLM进行异常和漂移检测

我们的方法使用提示让 LLM 提供有关每行数据的信息。 提示很简单。 对于每一行/观察,提示由以下内容组成:

“The <column name> is <cell value>. The <column name> is <cell value>. …”

对每一列执行此操作,为每一行创建一个连续提示。 有两点需要注意:

  • 无需为训练数据生成提示,只需针对进行异常检测的数据生成提示即可。
  • 严格来说没有必要询问观察结果是否异常(尽管这是需要进一步调查的主题领域)。
从表格数据创建的提示示例。 每行数据都被编码为单独的提示,并通过连接该行的每个单元格中的简单语句来制作。

一旦提供给LLM,模型的文本响应将被忽略。 我们只关心每个观察的嵌入(例如嵌入向量)。 嵌入向量至关重要,因为每个嵌入向量都提供了参考 LLM 训练的观察位置。 尽管神经网络模型的性质和复杂性掩盖了实际机制,但我们将LLM视为构建潜在响应面。 该表面包含了互联网规模的资源,包括了解房屋估价。 真实的观察结果——例如那些与学习内容相匹配的观察结果——位于响应表面上或附近; 异常值超出响应面。 虽然响应曲面在很大程度上是隐藏的伪影,但确定异常并不是学习曲面的问题,而只是识别相似值的集群。 真实的观察结果彼此接近。 异常观察结果彼此接近,但集合却截然不同。 确定异常只需分析这些嵌入向量即可。

LLM捕获数字和分类特征的结构。 上图显示了表格数据框的每一行以及映射到 LLM 生成的嵌入的模型预测。 LLM以一种根据之前接受的训练内容从特征创建拓扑表面的方式映射这些提示。 在上面的示例中,你可以看到数字字段 X/Y/Z 左侧为低值,右侧为高值。 

6、可视化:降维、聚类和异常识别

该欧几里德距离图粗略地指示了数据中是否存在异常。 图表右侧附近的凸起与数据中引入的合成异常一致。

UMAP 算法是一项重要的创新,因为它寻求保留几何形状,从而优化近距离观察保持近距离和远距离观察保持远处的情况。 降维后,我们应用聚类来查找密集、相似的聚类。 然后将它们与参考分布进行比较,参考分布可用于突出显示异常或漂移的簇。 大多数这些步骤都是无参数的。 最终目标是一组被识别为异常值的已识别数据点。

嵌入漂移:通过与参考分布进行比较来执行 UMAP 降维、聚类和自动(异常)聚类检测。 漂移或异常点会自动以红色突出显示,并可以排队进行进一步分析,包括利用人类反馈进行强化学习。

7、实验结果

我们探索了检测异常的各种条件,改变异常变量的数量、异常的比例和异常值的程度。 在这些实验中,我们能够检测到等于或超过数据 2% 的异常区域,即使值趋于接近分布中值(以中值的 +/- 5 个百分位数为中心)。 在所有五次重复实验中,该方法自动发现并识别了异常区域,并使其明显可见,如上一节所示。 在将单个点识别为异常簇的成员时,该方法的准确度为 97.6%,精确度为 84%,召回率为 89.4%。

7.1 结果总结

  • 异常分数:2%
  • Anom 分位数:0.55
  • 异常列:4
  • 准确率:97.6%
  • 精确率:84.0%
  • 召回率:89.4%

7.2 混淆矩阵

8、结束语

本文演示了如何使用预先训练的LLM来帮助从业者识别表格数据中的漂移和异常。 在对各种异常部分、异常位置和异常列进行测试期间,该方法在大多数情况下能够检测到集中在距变量值中位数 5 个百分位以内的数据中少至 2% 的异常区域。 我们并不声称这样的分辨率符合罕见事件检测的条件,但检测异常内点的能力令人印象深刻。 更令人印象深刻的是,这种检测方法是非参数的,快速且易于实施,并且基于视觉。

这种方法的实用性源自向LLM提供的基于表格的数据提示。 在训练期间,LLM在高维空间中绘制出可以用潜在嵌入表示的拓扑表面。 预测映射出的那些高维表面代表真实(训练)数据中的特征组合。 如果向LLM提供漂移或异常数据,这些数据会出现在流形上远离真实/真实数据的不同位置。

本博客中描述的方法可立即应用于对可观察性和数据治理进行建模,从而允许数据组织与组织制定服务级别协议(SLA)。 例如,只需很少的工作,组织就可以声称它将在首次发生的固定小时数内检测到包含 2% 数据量的所有异常。 虽然这看起来似乎不是一个很大的好处,但它限制了漂移/异常造成的损害程度,并且可能比许多组织今天取得的成果更好。 当这些数据集出现时,它可以安装在任何新的表格数据集上。 在此基础上,如果需要,组织可以努力提高灵敏度(降低检测限)并改进 SLA。


原文链接:Applying Large Language Models to Tabular Data to Identify Drift

BimAnt翻译整理,转载请标明出处