Deep Anomaly Detection with Deviation Networks论文阅读

Deep Anomaly Detection with Deviation Networks

两阶段方法的弊端:

间接执行异常分数的优化,导致数据效率低下(因为现有的方法一般是无监督学习,无法利用已知的信息(如少量标签))和次优化的异常分数。
无监督异常检测的弊端:
模型认为的一些异常其实是数据噪声或者是一些不感兴趣的数据目标,由于缺少感兴趣异常的先验知识。而且一些异常情况是可以获得的,论文用有限的标注异常作为先验知识来学习异常信息的模型。

创新点(准备):

1)确定的是正常数据的异常分数的平均值作为参考分数引导后来的异常分数学习。
2)最后确定一个损失函数,被称为偏差损失。
3)利用的异常标注大约只占全部训练数据集的0.005%-1%,所有异常的0.08%-6%在每个数据集中。一个高斯先验来执行一个直接异常分数的直接优化,使用的是Z分数偏差损失。
Z分数:Z score又称为标准分数,为该组数据中各个原始数据点脱离该组数据均值的幅度,幅度以标准差为衡量单位,所以公式为:Z=(S-均值)/标准差
4)具有异常分数的可解释性,并且可以容纳不同种类的异常行为。

创新点:

1)介绍了一种新奇的框架来学习异常分数使用一种端到端的方式:利用有限的标注的异常数据来实现端到端的异常分数学习。
2)一种新的异常检测方法:偏差网络。这个网络将神经网络,高斯先验和Z Score 偏差损失结合起来。
结果:与四个先进的方法进行比较,后面将这四个方法进行补充。
与竞争对手相比,它可以减少75%-88%的标记异常,以达到与最佳竞争者相当或相当的准确性。

异常检测的方法:

传统异常检测:基于距离的方法,基于密度的方法、集成的方法(如iForest)
深度异常检测:基于自编码器的方法、基于生成对抗的方法、一阶段的方法:REPEN方法、SVDD方法。
带有有限数据的异常检测:小样本学习和PU(正例和未标注) learning

端到端异常分数学习

问题声明:端到端、N个未标记数据,K个异常数据(只标注了异常数据,没有对正常数据进行标注)标注且N>>K,学习一个异常分数函数:
,判断正常和异常的标准:
提出的框架:组合神经网络,异常分数的先验概率分布和一个新的损失函数使用端到端的方式来训练一个深度异常检测器。目的是对于异常数据赋予比正常数据更大的异常分数。

三个主要的模型:

1.首先使用一个异常分数神经网络,例如一个函数对于每一个输入都会产生一个标量异常分数
2.引导异常分数的学习,使用一个参考分数生成器来另一个标量分数,这个分数被称为参考分数,它被定义为随机选择的L个正常数据的子集的均值,被称为ur。这个分数是可能来自于模型也可能是来自与一个先验概率F。在论文中使用先验概率来做。
3. 最后异常分数,正常数据的平均异常分数和相关异常数据的相关偏差都输入到偏差损失函数L中引导优化。异常分数在统计学上显著偏离upper tail的平均异常分数,而正常数据的分数接近平均异常分数。

长尾分布:横轴为异常分数,纵轴为数据的数量。
如何处理正常数据的异常分数均值的获得这件事情。
1)解决异常种类可能会很多,不共享同一个流形的问题:正常数据关于先验概率F聚类而异常数据会远离这个聚类,也就是学习了正常数据更高水平的抽象表达。
2)标注问题:只需要标注少量的异常数据来训练检测器。

偏差网络

框架的实例化:偏差网络
假设:定义了一个高斯先验和一个基于Z分数的偏差损失带有端到端的神经异常分数学习器。
1.端到端异常分数网络:特征表达学习器+异常分数函数
2.基于高斯先验的参考分数:生成ur的方法1)数据驱动的方法,2)先验知识驱动的方法
实验表明高斯分布在一系列的数据集中非常适合异常分数。高斯分布的参考分数为:
另外发现对于高斯分布的均值和方差对于实验的影响并不大,只要方差不是很大就行。只要L比较大,L对于网络的影响也不大,原因是中心极限定理的影响。
3.基于Z分数的偏差网络
基于Z分数的偏差公式为:
下面的是标准差,也是基于先验知识L个样本求出来的。这个只是损失函数的一个部分。

损失函数:(contrastive loss 对比损失)

y=1是异常,y=0是正常。a是Z分数的置信区间参数
contrastive loss(对比损失):
这种损失可以有效的处理网络中的成对数据的关系。
基本准则:
1)近似样本之间的距离越小越好
2)不近似样本之间的距离如果小于一定值(在论文中为a),则通过互斥使其距离接近m。
在原始论文中

其中W是网络权重,Y是成对标签,如果X1,X2这对样本属于同一个x类,则Y=0,属于不同类则Y=1。Dw是X1和X2在潜变量空间的欧几里德距离。当Y=0,调整参数最小化X1,X2之间的距离。当Y=1,当X1与X2之间距离大于m,则不做优化(省时省力)当X1与 X2 之间的距离小于m, 则增大两者距离到m。
论文中的不同是基于偏差网络进行异常分数的直接生成。而且对于Y标签来说,论文中使用y=1表示异常,y=0表示正常。
将所有的未标记的样本都作为正常样本进行处理,输入到损失函数中进行优化。
这将被看作是训练带有噪音数据集的模型
4.偏差网络算法

5.异常分数的可解释性
测试时也是依靠一个异常分数进行数据目标的异常排序,在top-rank中的目标是异常。
如何确定划分的threshold?
按照假设的标准正态分布来划分,根据距离平均值u有多少个方差值来确定此异常分数是否为正常数据的概率。(之所以可以将threshold这样解释,因为论文一开始的假设就是假设数据符合标准正态分布)

实验

1.数据集:9个数据集,其中有五个数据集包括真实的异常:在捐赠者中令人激动的项目,信用卡欺诈交易,后门网络攻击,恶意网络链接,甲状腺功能低下的甲状腺患者。其他四个数据集包括语义真实异常。
数据集缺失的数据使用平均值进行代替,类型特征使用one-hot编码方式进行编码。
2.比较的方法:REPEN(有限数据),DSVDD(one-class),FSNet(小样本分类)和iForest(无监督学习)
DSVDD变形:利用标注异常数据,在目标函数上增加了一个附加项。
网络实现:DevNet、DSVDD、FSNet使用keras,REPEN使用以前作者的代码,也是使用的Keras。
iForest使用scikit-learn中的库调用。
3.参数设置:1.REPEN网络相同,隐藏层有20个神经单元;2.1000–>250–>20;ReLu激活函数和梯度传播;L2正则化。四个神经网络都使用这两种网络用到所有数据集上。优化器使用RMSprop优化器。50个epoch,20个min-batchs。对于iForest图片的采样大小为256和集成大小设置为100,另外此网络不能处理百万级别特征的数据,所以使用离散随机映射URL和news20到1000维特征空间。
4.AUC-ROC和AUC-PR
但是这两个方法都是会由于异常检测的数据的不平衡性而产生偏差。
5.模型在实际数据集中的有效性:
在每个训练集中添加训练集2%的异常:这些数据组成了未标注数据集U;然后从异常类中随机采样30个异常作为感兴趣异常的先验知识组成标记的异常数据集K。这个任务相当于带有少数附加可获得标注异常数据作为先验知识的无监督异常检测。
发现:通过端到端直接对标注的异常进行学习,能够提高模型的精确度。但是两阶段的模型效果并不明显。
6.数据效率:
DevNet和其他深度方法的数据效率怎么样?在标记异常不断增多的情况下,一般情况是模型会不断优化,但是在添加的标记异常具有冲突的情况下,模型的效果会有下降。但是DevNet不会出现这种情况。
深度学习方法可以从异常分数中提升多少相比较与无监督的iForest方法。
7.关于异常检测污染的鲁棒性。实验设置:DevNet对无标注训练数据集中异常水平率的鲁棒性研究。标注异常固定在30个数据。
深度方法异常检测器的鲁棒性怎么样:
对于不同的异常污染率深度方法和无监督方法的比较:
对于无标注数据集中添加异常,增大异常率会使模型的效果变差,但是对于DevNet来说,效果仍然比iForest要好。 8.消融实验:
实验设置:检查DevNet的关键部分通过他的三个变体。
1)def:default DevNet有一个20层隐层和在输出层的一个线性单元。
2)DevNet-Rep :移除输出层和使用偏差损失来学习表达,也就是有20维的向量输入损失函数中而不是一个标量。那损失函数怎么设置?看代码才会知道
3)DevNet-Linear:移除Def的非线性学习隐藏层,从原来的特征空间线性的映射到异常分数空间。
4)DevNet-3HL:3个隐藏层:1000—>250—>20加ReLu
三个变体改变的都是神经网络的结构,对于网络的框架没有做消融实验 结果:
Deep Anomaly Detection with Deviation Networks论文阅读_第1张图片

  网络结构要适应数据的复杂性才可以

9.可扩展性实验
实验设置:验证数据维度的尺寸对模型的影响。4个合成的1000维数据集和变化的数据的尺寸。
固定数据尺寸和变化维度。每个检测器在相同尺寸的数据集中训练和测试。
DevNet对于数据尺寸和维度与执行时间有线性的关系。
结论

你可能感兴趣的:(神经网络,python,机器学习,人工智能)