前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SUFE AI Lab@KDD'23:一种基于异常得分分布的通用损失函数

SUFE AI Lab@KDD'23:一种基于异常得分分布的通用损失函数

作者头像
beyondGuo
发布2023-09-01 11:29:49
2570
发布2023-09-01 11:29:49
举报
文章被收录于专栏:SimpleAISimpleAI
  • Title: Anomaly Detection with Score Distribution Discrimination
  • Author: 上海财经大学 AI Lab—Minqi Jiang, Songqiao Han, Hailiang Huang
  • Conference: KDD 2023
  • 开源地址: https://github.com/Minqi824/Overlap
  • 论文视频讲解:https://www.youtube.com/watch?v=XM0tjp8lqtk

分享一个我们SUFE AI Lab最近刚被数据挖掘顶会KDD 2023录用的工作,欢迎去Long Beach参会的各路大佬来一起面基交流~(我们是Research Track的开场报告)。这是一篇我们认为比较有趣的paper,从异常检测的问题本质出发,提出了一种在各类网络框架、以及不同种类异常的检测上具有通用性的损失函数。

https://kdd.org/kdd2023/research-track-papers/

TL;DR—快速概括一下这篇工作

我们这篇文章的核心在于针对标签信息不完备的异常检测场景,提出了一种通用的损失函数Overlap loss,通过最小化正常与异常样本得分分布的重叠面积,使模型对于异常数据具有良好的检测能力。相较于以往工作,Overlap loss对于不同数据场景的适用性更好,而其天然有界的数学性质保证了基于Overlap loss模型训练的稳定性。

实验结果表明,Overlap loss能够高效嵌入在不同神经网络框架中,相较于其余模型或是异常检测损失函数而言显著更优,同时能保留特征空间中大量细粒度信息;对于不同种类的异常,基于Overlap loss的模型检测性能也明显更好。

我们也期待此篇工作能启发学术思考,赋能产业应用。学术层面本文抛砖引玉,可以引发对于异常检测方法本质的更多思考与讨论;同时对于企业中不同业务场景(包括但不限于无监督、弱监督以及有监督异常检测),本文方法可以方便高效地部署在不同模型框架中,或与现有方法有机结合,从而提升模型检测效果与业务可解释性。

研究问题与动机

✏️ 异常检测的问题其实用一句话就能很好的概括:你可以理解为是一个样本标签分布极不均衡下的二分类问题。因为异常往往占少数,正常占多数。

我们研究的问题只是在这基础上更近一步——异常样本很少,但我们甚至对于这些异常样本的标签信息掌握的都还是不完备的。这也很好理解,例如信用卡欺诈检测中100, 000个样本里可能只有100个欺诈案例,但即便这么少的欺诈案例,我们也只掌握了其中一部分样本标签信息,或者是通过业务专家平时案例调查的积累,又或者是通过受害者的案例反馈,而剩余的欺诈案例可能暂时没被发现,也可能具有高度伪装性而不易甄别。

说的学术一点,假设我们的训练集样本总数为k+m (其中m<<k)

D=\left\{ x_1^n,...,x_k^n,\left( x_{k+1}^a,y_{k+1}^a \right),...,\left( x_{k+m}^a, y_{k+m}^a \right) \right\}

,其中大部分的数据

D_n=\left\{ x_i^n \right\}_{i=1}^k

都是无标签的,而我们只知道一小部分的异常样本

D_a=\left\{ \left( x_j^a,y_j^a \right) \right\}_{j=1}^m

。现在的问题在于,我们如何利用这些数据,去学习一个比较好的异常检测模型——这个模型对于异常样本输出更高的异常得分,而对正常样本输出更低的异常得分。

实际上我们也不是第一个研究该问题的作者,以往也有许多非常经典、有启发性的工作对该问题展开探讨...

损失函数(loss function)是训练neural network的核心,为模型应该如何更新提供梯度大小与方向。因而以往的学术paper也是主要在这方面深挖下去,设计损失函数以更好训练模型。

我们这篇paper的研究动机其实很自然:以往Anomaly Detection (AD)设计的loss有什么问题?能否改进?我们罗列了以下三点,并主要从更加直观清晰的示意图出发,有兴趣的读者可以看下面以及论文中对于loss function具体公式的详细介绍:

❕ 以往的AD loss依赖于先验超参去引导异常得分的学习。例如下图中的(c) Hinge loss、(d) Deviation loss以及(e) Ordinal loss,你需要设定(超参大小)究竟把正常和异常样本的得分拉开多大的Margin,或者把他们的得分映射到哪个点上——实际上异常检测labeled data是很少的,因而即便是采用超参数优化也很难得到一个很好的超参选择结果,而默认的超参设置则会降低方法对于不同数据集的适用性;

❕ 以往的AD loss可能会有损失爆炸(exploding loss)的问题,需要设定bound超参去避免该问题。典型的有相减形式(正常样本得分-异常样本得分)的(a) Minus loss,如果不加限制,模型会使正常样本得分趋于负无穷,异常样本得分趋于正无穷,从而使得整体loss不断下降;

❕ 以往的AD loss即便loss本身有界,得到的异常得分也可能非常高,这可能会丢失掉输入数据在表征空间中的大量信息。典型的例如(b) Inverse loss,倒数的形式会使得异常样本的得分更新的非常大,因为这样能使得整体损失函数变小。

Loss function优化方向示意图

Loss function具体公式

聊完了一些经典的AD loss以及他们对应存在的问题,让我们来看看Overlap loss是如何做出改进的~

Overlap loss: 一种基于异常得分分布的通用损失函数

🤗 一句话来概括Overlap loss:对于正常与异常样本,我们通过神经网络分别得到他们的异常得分输出,计算对应的异常得分分布,并使得正常、异常样本得分分布之间的重叠面积最小化。

讲完了,是不是非常通俗易懂而且很简单?当然这里面还是存在几个challenges的,不然如果真的这么简单有效可能早就被propose出来了~

Overlap loss存在的挑战

第一个难点在于,对于神经网络输出的异常得分,估计的分布应该是什么样的?高斯分布似乎是个不错的选择,但是假设太强,在异常检测这个问题中异常样本的数量非常少(有标签的异常样本那就更少了),以至于不服从中心极限定理而呈现出任意分布的形态;

第二个难点随之而来,我们如何在最小化任意分布之间重叠面积的同时,保证异常得分的正确性(即异常样本的得分>正常样本的得分)?举个例子,上图(b)反映出正常样本得分分布(蓝色)和异常样本得分分布(红色)之间的重叠面积确实最小化了,但由于分布可以是任意的,双峰分布的异常样本得分分布左峰比正常样本还要小,这是我们不能接受的~!

如何实现?

讲方法避免不了一些理论和数学公式,但别担心~Overlap loss的原理整体上还是非常通俗易懂的。

我们把上述一句话概括Overlap loss进行拆分,可以分成两步:1.对异常得分分布的估计(Score Distribution Estimator);2.计算分布重叠面积。

Score Distribution Estimator的实现很容易,通过Kernel Density Estimation (KDE)方法 其实就能很好估计任意分布的概率密度函数PDF,并且由于KDE可以通过公式显式表达,对我们想实现end-to-end梯度更新网络参数其实非常友好。

s为output anomaly score,PDF可以通过累积经验函数ECDF的计算得到

如果将kernel function表示为K(s)=1/2*Indicator(s<=1),上述公式可以进一步简写

分别利用KDE估计正常、异常样本得分分布之后,下一步就是计算分布之间的重叠面积,我们的方法是先计算两个分布PDF之间的交点

c

,其中

c

是通过公式(7)判断两个分布PDF之间的差异的符号变化来计算得到的。

通过比较两个PDF之间的差异符号变化,交点即为d_k^s非零点对应的x轴点

得到交点之后,对照着图(c)可能更好理解,我们通过公式(6)求蓝色PDF,即正常样本得分分布大于

c

部分的阴影面积,以及红色PDF,即异常得分分布小于

c

部分的阴影面积,相加既是我们想求的分布重叠面积!~

这边需要考虑两种额外情况:

⚠️如果模型训练初期,学的不够好,比如红色PDF在蓝色左侧,会怎么样(例如你可以把下面图蓝色和红色PDF颜色对调一下)?由于PDF面积之和为1,这时

P(S_n>c)

以及

P(S_a<c)

都会趋近于1,整体loss趋近于2,相当于对于这种anomaly score的disorder天然有惩罚~

⚠️ 如果没有交点,或者多个交点,应该如何求重叠面积?实际上我们通过实验发现这两种情况(假定交点,以及多个交点结果取平均)对实验结果影响不大,可以详见论文中的结果。

Overlap loss天然会对得分的disorder做出惩罚

在知道了怎么求重叠面积之后,实际上我们Overlap loss只剩下需要怎么近似估计分布重叠面积,即PDF重叠面积这一步了,因为通过核密度估计KDE得到的PDF是没有显式公式的,这里我们通过trapezoidal rule去近似积分。

利用trapezoidal rule去近似估计积分

我们把上述公式定义写完整,Overlap loss最终的公式如下:

整体Overlap loss

✌️ 到这里,Overlap loss的基本逻辑和理论部分就讲述完了,是不是非常通俗易懂~!

何为通用?好在哪里?

说完了Overlap loss是怎么来的以及方法逻辑之后,我们来看看Overlap loss有哪些优点,以及它的通用性。首先Overlap loss有很多个比较好的性质,也暗示了基于Overlap loss的异常检测算法性能上可能会更好:

✔️Overlap loss不依赖先验超参去更新异常得分;

✔️Overlap loss无需对异常得分过多更新(重叠面积最小化即可);

✔️Overlap loss以PDF作为异常得分分布的估计,天然有界,下界为0(无重叠)上界为2(详见上部分讲解);

✔️Overlap loss从分布的角度优化异常检测模型参数;

✔️Overlap loss可以部署在多个网络框架中,包括Tabular AD中经常使用的MLP以及AutoEncoder,以及近段时间在表格数据上提出的ResNet以及FTTransformer方法。

Overlap loss能够有效嵌入在多个网络框架中,这点在以往AD学术文章中经常被忽略

除此之外,我们也通过在25个数据集上大量的实证研究表明Overlap loss:

⭐️对于不同网络框架而言,Overlap loss都会比其他baseline方法或者损失函数来的更好,甚至统计意义上显著的更好,这个结论对不同程度的异常标签信息(5%、10%以及20%)都基本成立

25个数据集上的模型性能比较结果(AUC-PR)

⭐️ Overlap loss相较于其他经典的AD loss而言,在四种不同种类的异常上,都明显更好

MLP+不同loss在各种异常类别中的表现(AUC-PR)

⭐️ Overlap loss由于只需要最小化分布间重叠面积,避免了对异常得分做出过多调整,因而模型参数变动相对较小(这对于潜在的灾难性遗忘问题可能是个好消息),并且保留了特征空间中的大部分信息,不会twist特征空间

对于MLP+不同loss,特征embedding随着训练过程的变化

MLP+不同loss的模型参数改变量 对于Overlap loss的介绍以及主要实验结论就介绍完毕了,更多的细节以及实验结果可以详见论文及附录。

写在最后

我们希望这篇paper起到一个抛砖引玉的作用,引发更多研究对于异常检测方法本质的思考。实际上Overlap loss这一想法和很多方法可能都有共性,例如KL散度、Wasserstein distance以及optimal transport问题,我们未来也准备在理论层面对该方法进一步深入研究,也欢迎学术界与工业界感兴趣的大佬们多多交流,提出宝贵意见与建议~!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SimpleAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TL;DR—快速概括一下这篇工作
  • 研究问题与动机
  • Overlap loss: 一种基于异常得分分布的通用损失函数
    • 如何实现?
      • 何为通用?好在哪里?
      • 写在最后
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档