分享一个我们SUFE AI Lab最近刚被数据挖掘顶会KDD 2023录用的工作,欢迎去Long Beach参会的各路大佬来一起面基交流✋~(我们是Research Track的开场报告)。这是一篇我们认为比较有趣的paper,从异常检测的问题本质出发,提出了一种在各类网络框架、以及不同种类异常的检测上具有通用性的损失函数。
https://kdd.org/kdd2023/research-track-papers/
我们这篇文章的核心在于针对标签信息不完备的异常检测场景,提出了一种通用的损失函数Overlap loss,通过最小化正常与异常样本得分分布的重叠面积,使模型对于异常数据具有良好的检测能力。相较于以往工作,Overlap loss对于不同数据场景的适用性更好,而其天然有界的数学性质保证了基于Overlap loss模型训练的稳定性。
实验结果表明,Overlap loss能够高效嵌入在不同神经网络框架中,相较于其余模型或是异常检测损失函数而言显著更优,同时能保留特征空间中大量细粒度信息;对于不同种类的异常,基于Overlap loss的模型检测性能也明显更好。
我们也期待此篇工作能启发学术思考,赋能产业应用。学术层面本文抛砖引玉,可以引发对于异常检测方法本质的更多思考与讨论;同时对于企业中不同业务场景(包括但不限于无监督、弱监督以及有监督异常检测),本文方法可以方便高效地部署在不同模型框架中,或与现有方法有机结合,从而提升模型检测效果与业务可解释性。
✏️ 异常检测的问题其实用一句话就能很好的概括:你可以理解为是一个样本标签分布极不均衡下的二分类问题。因为异常往往占少数,正常占多数。
我们研究的问题只是在这基础上更近一步——异常样本很少,但我们甚至对于这些异常样本的标签信息掌握的都还是不完备的。这也很好理解,例如信用卡欺诈检测中100, 000个样本里可能只有100个欺诈案例,但即便这么少的欺诈案例,我们也只掌握了其中一部分样本标签信息,或者是通过业务专家平时案例调查的积累,又或者是通过受害者的案例反馈,而剩余的欺诈案例可能暂时没被发现,也可能具有高度伪装性而不易甄别。
说的学术一点,假设我们的训练集样本总数为k+m (其中m<<k)
,其中大部分的数据
都是无标签的,而我们只知道一小部分的异常样本
。现在的问题在于,我们如何利用这些数据,去学习一个比较好的异常检测模型——这个模型对于异常样本输出更高的异常得分,而对正常样本输出更低的异常得分。
实际上我们也不是第一个研究该问题的作者,以往也有许多非常经典、有启发性的工作对该问题展开探讨...
损失函数(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:对于正常与异常样本,我们通过神经网络分别得到他们的异常得分输出,计算对应的异常得分分布,并使得正常、异常样本得分分布之间的重叠面积最小化。
讲完了,是不是非常通俗易懂而且很简单?当然这里面还是存在几个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之间的交点
,其中
是通过公式(7)判断两个分布PDF之间的差异的符号变化来计算得到的。
通过比较两个PDF之间的差异符号变化,交点即为d_k^s非零点对应的x轴点
得到交点之后,对照着图(c)可能更好理解,我们通过公式(6)求蓝色PDF,即正常样本得分分布大于
部分的阴影面积,以及红色PDF,即异常得分分布小于
部分的阴影面积,相加既是我们想求的分布重叠面积!~
这边需要考虑两种额外情况:
⚠️如果模型训练初期,学的不够好,比如红色PDF在蓝色左侧,会怎么样(例如你可以把下面图蓝色和红色PDF颜色对调一下)?由于PDF面积之和为1,这时
以及
都会趋近于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问题,我们未来也准备在理论层面对该方法进一步深入研究,也欢迎学术界与工业界感兴趣的大佬们多多交流,提出宝贵意见与建议~!