本文主要是介绍Robust Neural Network for Novelty Detection on Data Streams,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本信息
题目:Robust Neural Network for Novelty Detection on Data Streams.
会议: International Conference on Artificial Intelligence and Soft Computing.
出版社: Springer-Verlag, 2012:178-186.
作者:Andrzej Rusiecki.
隶属机构:波兰弗罗茨瓦夫理工大学
中心思想
本文基于健壮的神经网络提出一种异常检测(novelty detection)的方法,通过比较两种神经网络输出的结果来检测异常值。其中第一种神经网络用来LMLS(Least Mean Log Squares)方法来训练,目的是消除离群点的影响;而第二种神经网络以传统的最小二乘方误差来训练。在一段固定的长度训练中,对于每一次输入,求两个网络的输出值的差值,然后求出所有差值的标准差s,取阈值Tr = k*s,然后对于测试集每个输入,两个神经网络的输出值如果大于Tr,则将该输入值标记为异常值,否则为正常值。
两种神经网络介绍
第一种神经网络
训练该神经网络采用Levenberg-Marquardt method(列文伯格-马夸尔特法)来进行优化,该方法是收敛速度最快的一种优化方法。采用的损失函数为Least Mean Log Squares(最小平均对数平方):
ρ(ri)=log(1+12ri2),2020(1)
其中ri 是第i次预测的误差值,对于损失函数来说,其影响函数如下.影响函数描述了异常点对于神经网络训练中潜在的影响力。
ψ(ri)=ri1+12ri2,202020(2)
根据损失函数,我们得到每个训练周期中的错误之和为:
E(w)=∑k=1N∑i=1mlog(1+12rki2(w)),2020(3)
其中第k次训练中,第i个输出值和实际目标值的误差表示如下。w是权重,m是神经网络输出单元的个数。
。
rki=(yki(w)−tki))
第二种神经网络
第二种神经网络训练方法为传统的神经网方法,其误差函数为:
E(w)=∑k=1N∑i=1mrki2(w),2020(4)
在公式(3)中定义的log方法,减少甚至消除了最大残差对训练过程的影响。
算法步骤
因为每收到一个输入之后对权重进行一次更新的计算复杂度太过巨大,因此,文中选择经过一段定长周期的输入数据之后对权重进行更新,即定长时间窗口方法。至于时间窗口长度的选择,过短就不能达到很好的训练效果,过长则会导致训练时间过长。当一个时间窗口的权重更新完毕之后就可以对接下来的数据流进行检测。对于一个输入,如果传统ANN的输出结果和健壮ANN的输出结果的插值超过阈值Tr,则将其归为异常值。输出之差绝对值计算方法为:
D(xi)=|ymse(xi)−ylmls(xi)|,2020(5)
现在问题来了,如何确定阈值Tr,文中提出基于训练数据中传统ANN和健壮ANN的结果之差的标准差来确定阈值。对于给定窗口大小的训练数据,其阈值Tr的计算方式为:
Tr=k∗Std(|ymse(xi)−ylmls(xi)|),
其中k值是一个常数,K值得确定取决于ROC曲线。于是算法步骤如下:
1. 从数据流中累积数据,数据大小取决于参数窗口长度
2. 在累积的数据上训练ANN,同时累积下一次训练的数据
3. 对于每一个数据流,根据公式(5)计算两种ANN的输出差值,根据差值是否超过阈值Tr来划分是否为异常值。
论文中对于K值得确定和窗口大小的确定方法不是很明确,需要根据实际情况来确定。
这篇关于Robust Neural Network for Novelty Detection on Data Streams的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!