当前位置: 首页 > news >正文

[VLDB 2025]面向Flink集群巡检的交叉对比学习异常检测

01 开篇

近日,由阿里云计算平台大数据基础工程技术团队主导,华东师范大学数据科学与工程学院合作的论文《Noise Matters: Cross Contrastive Learning for Flink Anomaly Detection》被数据库领域顶会VLDB 2025接收。论文从新的视角分析Flink平台的热点机器问题。实现了基于神经网络的热点机器异常检测,与SOTA异常检测算法相比平均提升F1 score 12.1%。

02 背景

Flink 集群经常会遇到热点问题,此时被监控作业的延迟和 CPU 使用率不断升高并长期保持在高水平。这就需要检测异常时间序列,以定位出现热点的机器。然而,现有的无监督时间序列异常检测(UTAD)方法在这种场景下并不有效。我们发现有两个主要原因。首先,热点场景需要特别关注 Flink 特有的异常,比如缓慢上升型和高水平异常,而现有方法难以处理这类异常。其次,现有的异常检测方法通常假设训练数据集中不存在异常,但从实际运行的 Flink 集群中收集的数据往往含有噪声,这会导致这些方法把异常模式学习为正常模式。本文首先通过实验分析了现有方法在 Flink 场景下失败的原因。针对这些挑战,我们提出了一种跨对比方法提升异常检测性能。

03 挑战

尽管已有方法进行时间序列的异常检测,但仍然存在以下限制:限制一:除了检测已有的点级异常之外,我们的 Flink 场景还要求检测其特有的异常。例如,当某个节点上多个作业的延迟持续上升,或者上升后长期保持在高水平时,通常表明该节点出现了异常。然而,现有的最先进异常检测方法对这类异常并不敏感。基于重构的方法在 Flink 特有异常与正常数据之间往往只表现出较小的重构误差,因此无法识别出这类异常。基于关联的方法则是通过比较同一时间戳的不同视图来检测异常,但它们忽略了每个时间戳的上下文信息,这也使得发现 Flink 特有的异常变得困难。限制二:我们面对的是来自实际运行 Flink 集群的非常大规模的时间序列数据。这导致收集到的训练数据集中包含大量异常和噪声。大多数传统的无监督异常检测方法都基于训练数据集相对干净、无噪声的假设,忽略了实际存在的异常和噪声。因此,这些方法的有效性容易受到异常和噪声的影响,表现并不理想。

04 破局

我们不再像以前的方法那样在每个时间戳处计算重构误差,或者计算每个时间戳两种视图之间的差异,而是提出了一种新的跨对比学习方法,以更加关注 Flink 特有的异常。我们首先利用注意力机制从全局和局部两个角度学习表示,基于此进行跨对比学习。直观上看,正常时间序列中相邻时间戳的观测值彼此接近,因此它们的潜在表示应该相似。相比之下,当相邻时间戳中出现 Flink 特有异常(如缓慢上升趋势)时,我们希望学习到将它们的表示差异扩大。这带来了一个不同的异常检测机制,即通过测量相邻时间戳之间表示的距离,如果距离明显可区分,则检测为异常。

提出了一种新的损失函数,将先验知识引入到优化过程中,共同指导模型的训练,使模型即使在未知标签的情况下也能区分异常时间戳和正常时间戳。具体来说,我们为每个时间戳设定一个异常边界,该边界是其观测值的归一化分数,并将其用作先验知识,反映异常值与正常值之间的偏差。直观上,具有较小异常边界的正常时间戳,其观测值与归一化值偏差不大,因此可以尽可能优化其训练损失。而具有较大异常边界的异常时间戳,其训练损失不应被像正常时间戳那样充分优化,从而我们可以为这些异常时间戳分配更大的异常分数。因此,我们只将其训练损失优化到接近其异常边界的水平。通过这种方式,我们有效考虑了含有噪声的训练数据,减轻了异常和噪声对训练过程的影响,从而提高了异常检测的准确性。

05 应用

Noise Matters技术已经整合进了Flink集群智能巡检体系中,有效地帮助运维人员对集群运行健康状况进行评估,提前发现可能的风险隐患。

http://www.dtcms.com/a/302134.html

相关文章:

  • 数据驱动与智能重构:定制开发开源AI智能名片S2B2C商城小程序对数字营销话语权的重塑
  • Spring ai 调用大模型
  • 盲盒抽卡机小程序系统开发:连接线上线下娱乐新桥梁
  • uniapp 更新apk有缓存点不动,卸载安装apk没有问题。android
  • 小程序组件的生命周期,以及在小程序中进行接口请求的方法设置
  • 网络编程概述与UDP编程
  • 【esp32s3】7 - VSCode + PlatformIO + Arduino + 构建项目
  • 基于神经网络的手写数字识别系统
  • 【论文阅读53】-CNN-LSTM-滑坡风险随时间变化研究
  • 【论文阅读】Safety Alignment Should Be Made More Than Just a Few Tokens Deep
  • cacti的RCE
  • 计算机视觉---Halcon概览
  • 实用工具类分享:BeanCopyUtils 实现对象深浅拷贝高效处理
  • 墨者:SQL手工注入漏洞测试(MySQL数据库-字符型)
  • haproxy实列
  • 开源AI智能体-JoyAgent集成Deepseek
  • AI论文阅读方法+arixiv
  • 元宇宙工厂前端新形态:Three.js与WebGL实现3D产线交互的轻量化之路
  • 使用std::transform实现并发计算
  • Java 开发新人,入职后的环境搭建和配置
  • 安宝特方案丨AI算法能力开放平台:适用于人工装配质检、点检、实操培训
  • Netty中trySuccess和setSuccess的区别
  • python-内存管理
  • 【FAQ】MS Dynamics 365 Sales配置方法汇总
  • Linux中应用程序的安装于管理
  • Java面试宝典:Spring Boot
  • 基于BEKK-GARCH模型的参数估计、最大似然估计以及参数标准误估计的MATLAB实现
  • 【Linux学习】(12)环境变量
  • 自定义spring-boot-starter
  • STM32F4—电源管理器