当前位置: 首页 > 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.xdnf.cn/news/1201591.html

相关文章:

  • mybatis-plus实体类主键生成策略
  • 设计模式(四)创建型:生成器模式详解
  • Java排序中(a).compareTo(b)与Integer.compare(a, b)区别
  • 推荐系统学习
  • 算法竞赛阶段二-数据结构(37)数据结构循环链表模拟实现
  • 【PCIe 总线及设备入门学习专栏 5.3.4 -- PCIe PHY Firmware 固件加载流程】
  • Android启动时间优化大全
  • 通信名词解释:I2C、USART、SPI、RS232、RS485、CAN、TCP/IP、SOCKET、modbus等
  • Window 部署 coze-stdio(coze 开发平台)
  • vue3.6更新哪些内容
  • 电子电路设计学习
  • MySQL - 索引(B+树)
  • Python Pandas.cut函数解析与实战教程
  • 力扣热题100----------41.缺少的第一个正数
  • C++算法竞赛篇(五)循环嵌套题型讲解
  • JavaScript手录07-数组
  • JavaScript核心概念全解析
  • 创建属于自己的github Page主页
  • 【Python系列】Flask 应用中的主动垃圾回收
  • 安装redis
  • 生成式召回-TIGER范式
  • Vim 编辑器工作模式及操作指南
  • 抗辐照芯片在低轨卫星星座CAN总线通讯及供电系统的应用探讨
  • 比特币运行机制全解析:区块链、共识算法与数字黄金的未来挑战
  • rapidocr v3.3.0发布了
  • OpenLayers 综合案例-轨迹回放
  • Torchv Unstrustured 文档解析库
  • C语言:函数
  • C/C++核心知识点详解
  • Qt C++ GUI 函数参数速查手册:基础与布局