一种用于粮食存储的实时异常检测系统的制作方法

文档序号:30581858发布日期:2022-06-29 12:42阅读:84来源:国知局
一种用于粮食存储的实时异常检测系统的制作方法

1.本发明涉及实时异常检测技术领域,主要涉及一种用于粮食存储的实时异常检测系 统。


背景技术:

2.鉴于粮食存储的规模和复杂性,随着时间的推移,用于推断正常和异常行为的传感 器数量急剧增加,使得传统的基于专家的监督方法变得缓慢或容易出错。
3.自动编码器架构使其能够以无监督的方式进行学习。对抗性训练的使用及其体系结 构允许它可以在提供快速训练的同时隔离异常。因此,本发明则在上述技术的基础上, 设计了一种基于粮食存储的实时异常检测系统。更好地对粮食存储环境可能出现的异常 进行预警。


技术实现要素:

4.发明目的:针对上述背景技术中存在的问题,本发明提供了一种用于粮食存储的实 时异常检测系统,实时地对粮食存储过程中收集到的传感器数据进行异常检测,来预防 和即使处理可能出现的存储问题。
5.技术方案:为实现上述目的,本发明采用的技术方案为:
6.一种用于粮食存储的实时异常检测系统,包括以下步骤:
7.步骤s1、收集粮食存储过程中各传感器收集的历史数据,并进行预处理;
8.步骤s2、搭建实时异常检测系统使用的神经网络模型;
9.选择生成对抗网络gan作为深度学习神经网络模型;采用自编码器ae构成gan的 生成器和判别器;所述生成器用于生成趋于真实且正常数据;所述判别器包括将真实 数据与生成器生成数据区分开来的判别器1和判别器2;所述判别器1和判别器2共用一 个生成器,构成自编码器ae1和ae2;
10.步骤s3、对所述神经网络模型进行自编码器训练,并实行对抗训练;
11.步骤s4、重复步骤s3,直至神经网络模型训练完毕,保存训练好的模型体系结构 及参数;
12.步骤s5、用户将预处理后的待检测数据投入神经网络模型,输出重构后的时间序 列,根据重构后的时间序列对异常得分进行区间调整;
13.步骤s6、对获取的异常得分进一步进行点调整,并对异常点进行标记,实时发出警 报。
14.进一步地,所述步骤s1中对历史数据进行预处理具体方法包括:
15.首先将获取的传感器历史数据进行时间戳对齐,并且进行缺失值填补;对填补后的 数据进行归一化处理,利用滑动窗口对数据进行分窗处理,预处理完毕。
16.进一步地,所述步骤s2中神经网络模型包括三个部分:编码器网络e、解码器网络 d1和解码器网络d2,所述d1和d2共用一个编码器网络e,具体表示如下:
alert均 为0时,将该异常段内所有的point-wise alert均调整为0;在异常段外,point-wise alert 不进行调整;由此获得调整后的报警结果adjuested alert。即为最终更新后的异常检测结 果。
38.有益效果:本发明可以对由传感器收集的数据进行实时检测;由于只需要在线下对 模型进行训练,在线上由训练好的模型进行实时异常检测,则检测速度比较快;在最后 异常得分阶段使用了区间调整和点调整的方法,可以较好的提高异常检测的效果,且也 符合实际应用场景的需求。
附图说明
39.图1是本发明提供的基于粮食存储的实时异常检测系统的总体流程图;
40.图2是本发明提供的神经网络模型训练过程图;
41.图3是本发明提供的实时异常检测过程图;
42.图4是本发明提供的实时异常检测结果图1;
43.图5是本发明提供的实时异常检测结果图2。
44.图6是本发明提供的对异常得分进一步点调整的方法示意图。
具体实施方式
45.下面结合附图对本发明作更进一步的说明。显然,所描述的实施例是本发明一部分 实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
46.本发明提供的用于粮食存储的实时异常检测系统选用基于由自编码器构成的生成 对抗网络对粮食存储过程中传感器传输的各种异常数据进行接收并检测,实时判断是否 存在异常,并及时发出报警信号。具体流程如图1所示。
47.步骤s1、收集粮食存储过程中各传感器收集的历史数据,并进行预处理。
48.首先将获取的传感器历史数据进行时间戳对齐,并且进行缺失值填补;对填补后的 数据进行归一化处理,利用滑动窗口对数据进行分窗处理。下面对分窗处理具体说明:
49.给定多元时序数据τ={x1,x2,

x
t
},其中然后定义在t时刻且长度为k的 时间窗口为w
t
={x
t-k+1
,

,x
t-1
,x
t
}。通过这种方式,可以将原始序列t分割为多个窗 口的集合w=w1,

,w
t
。当存在一个新的时间窗口时,需要通过窗口的异常 得分来对新的未知窗口进行分类,也就是0和1,其中1表示异常,0表示正常。
50.自动编码器(ae)是由编码器e和解码器d组成的无监督人工神经网络。编码器 部分获取输入w并将其映射到一组潜在空间z中,而解码器将潜在空间z映射回输 入空间作为重构r。
51.原始输入向量w与重构r之间的差异称为重构误差。因此,训练目标旨在最小 化误差。重构误差定义为:
52.l
ae
=||x-ae(x)||2,其中ae(x)=d(z),z=e(x),||
·
||2表示l2范数。
53.基于自编码器ae的异常检测系统是一种较为常用的系统,现有技术中一般使用重 构误差作为异常分数,因为通常训练数据中只有正常的数据,因此出现异常数据时,往 往具有较高的重构误差。但是,由于自编码器需要尽可能地重构输入数据,如果异常比 较接
近正常数据,则重构误差很小,无法有效检测到异常。理想的自编码器应该能够识 别异常输入数据中是否包含正常数据。
54.本发明提出一种基于生成对抗网络generative adversarial networks(gan)的实时 异常检测系统,传统gan中一个网络作为生成器g,旨在生成趋于真实且正常的数据, 另一个网络作为判别器d,旨在将真实数据与g生成的数据区分开来。
55.基于gan的异常检测使用正常数据进行训练。训练后的模型中,将判别器作为异 常检测器。如果输入数据与学习数据分布不同,则判别器将其视为来自生成器并将其分 类为假数据,即异常。然而,由于模式崩溃和不收敛等问题,gan训练存在生成器和判 别器之间的不平衡问题。
56.本发明提供的实时异常检测系统采用两阶段对抗性训练框架内形成的自编码器体 系结构,一方面,通过训练能够识别输入数据是否包含异常数据,克服自编码器的固有 限制,从而执行良好的重构。另一方面,ae架构体系在对抗训练期间具有获得稳定性, 解决了gan模型遇到的崩溃和非收敛模式问题。
57.本发明提供的基于ae体系结构的gan神经网络模型,采用自编码器ae构成gan 的生成器和判别器;所述生成器用于生成趋于真实且正常的数据;所述判别器包括将真 实数据与生成器生成数据区分开来的判别器1和判别器2;所述判别器1和判别器2共 用一个生成器,构成自编码器ae1和ae2。上述神经网络模型包括一个共用的编码器 网络e和两个独立解码器网络d1和d2,具体表示如下:
58.ae1(w)=d1(e(w)),ae2(w)=d2(e(w))
59.其中w代表一定时间窗口内的输入数据。
60.步骤s3、对所述神经网络模型进行自编码器训练,并实行对抗训练。
61.在确立神经网络框架后,对神经网络模型进行两段训练,具体步骤包括:
62.步骤s3.1、给定正常输入,训练自编码器ae1和ae2,重构输入w;自编码器输出 分别表示为ae1(w)和ae2(w);则输入w和自编码器输出之间的误差如下:
[0063][0064][0065]
步骤s3.2、对自编码器ae1和ae2进行对抗训练;
[0066]
将来自ae1的数据由编码器e压缩到潜在空间z,再由ae2重构,得到重构后的输 出为ae2(ae1(w)),如图2所示。在对抗训练策略下,目标是训练ae2以区分来自ae1 的重构数据,并训练ae1欺骗ae2,ae2的任务是判断数据是真实的(即数据来自于输 入窗口)或者虚假的(即数据来自于ae1的重构)。ae1期望最小化w和ae2(ae1(w)) 之间的差异,ae2期望最大化w和ae2(ae1(w))之间的差异。
[0067]
ae2的目的是为了识别ae1(w)是ae1重构之后的时间窗口,而不是真实的时间窗 口w,因此ae2需要最大化ae2(ae1(w))与真实w之间的差异,而ae1为了欺骗ae2, 则需要最小化ae2(ae1(w))与真实w之间的差异。如果ae2(ae1(w))与w非常相似, 那么可以认为ae1(w)来自与w,因为只有来自与w的数据才能获得较小的重构误差, 也就是将ae1(w)判定为真实的w,这其实是错误的,因为ae1(w)是经过ae1重构的数 据。具体目标函数表示如下:
[0068]
[0069]
步骤s3.3、在本发明的体系中,自编码器有双重用途,ae1使w(阶段1)的重构 误差最小化,并使w和ae2(阶段2)的重构输出之间的差异最小化。作为ae1,ae2 使w(阶段1)的重构误差最小化,但随后使由ae1(阶段2)重构的输入数据的重构误 差最大化。融合阶段1和阶段2,最终目标函数如下:
[0070][0071][0072]
其中n表示迭代次数。根据所述的目标函数,利用梯度下降算法对一个编码器网络 e以及两个解码器网络d1和d2的参数进行更新。
[0073]
步骤s4、重复步骤s3,直至神经网络模型训练完毕,将最终的模型体系结构及其 参数进行保存,用于之后的异常检测。
[0074]
步骤s5、用户将预处理后的待检测数据投入神经网络模型,输出重构后的时间序 列,根据重构后的时间序列对异常得分进行区间调整;
[0075]
异常得分(anomaly score)定义如下:
[0076][0077]
我们根据异常得分的定义,计算出相应的异常得分。
[0078]
其中α+β=1;如图3所示这两个参数决定了模型对异常的敏感度,在实际使用时 可以根据场景进行调节。较大的α对应于在异常评分中更重视ae1自编码器的重构,而 较大的β对应于更重视ae2自编码器的重构,通过增加α和减少β,可以降低假警报(fps, 即该数据点不是异常点,却被判断为异常的情况)的数量(从0.0到0.9时最多减少50%), 同时限制正确检测(tps)数量的下降(从0.0到0.9时减少3%),因此,α和β的调节 允许参数化usad的灵敏度,以满足生产环境的要求。通过一个模型,可以实现不同级 别的灵敏度调整。
[0079]
管理人员更喜欢较低的敏感度,限制误报的数量,但要在发生重要事件时向他们发 出警告,而技术人员更喜欢较高的敏感度,这样他们会错过最少的事件。当α增加,模 型逐渐退化为单一的自编码器,也就是仅仅能识别出比较明显的异常,识别的准确率上 升,但同时导致的后果是找出的异常数量下降。而增加β的值,会使模型变得更加敏感, 因此能找到更多的异常,但同时准确率会降低。ae2可以视为一个扰动器,为ae1提 供了一定的干扰效果。
[0080]
我们设定当α<β时设定为高检测灵敏度场景,当α>β时,设定为低检测灵敏度场 景。这种参数化方案具有极大的工业价值,可以使用单一训练模型,在推理过程中获得 一组不同的敏感性异常分数。
[0081]
在实际应用中,人工操作人员通常不关心逐点度量。如果延迟不太长,则算法可以 触发连续异常段中任何点的警报。在实践中,异常观测通常连续发生,形成连续的异常 段。标注数据(ground truth)使用第5百分位和第95百分位作为划分依据,在第5百 分位和第95百分位之间的数据点则标注0,代表正常,反之则标注1,代表异常。异常 段的任何子集内触发异常警报,都应被接受,即该异常被成功地检测出来。
[0082]
如果在标注数据(ground truth使用第5百分位和第95百分位作为划分依据,在第 5百分位和第95百分位之间的数据点则标注0为正常,反之标注1为异常)异常段的任 何子
集内触发异常警报,则可以接受,即这种触发异常警报的方式在具体的应用过程中 是比较合理的,说明该异常被成功地检测出来了。
[0083]
步骤s6、对获取的异常得分进一步进行点调整,并对异常点进行标记,实时发出警 报。
[0084]
具体的点调整方法,如图6所示。包含四行数据,第一行truth指的是标注数据,0 表示该数据点为正常,反之为异常,黑框标记的是异常段。第二行score指的是异常得 分,这里假设异常得分点的阈值为0.5,那么待检测点的异常得分超过0.5,该点就被判 断为异常,标记为1,反之为0。而第三行的point-wise alert(逐点报警)则是由第二行异 常得分判断而来的结果。最后一行adjusted alert(调整后的报警)则是第三行数据经过调 整过后的异常点检测结果。具体而言,就是在第三行point-wise alert数据的基础上,判 断其对应异常段位置的标记。在异常段的对应区间内,只要有一个点可以通过选择的阈 值检测到,我们就认为该异常段可以被正确的检测到。例如,第一个异常段对应的point
‑ꢀ
wise alert结果为0-1-1,该异常段包含两个异常点,则最终的调整后的结果为1-1-1,而 对于第二个异常段对应的point-wise alert结果为0-0-0,则最终调整后的结果仍为0-0
‑ꢀ
0。而对于异常段区域外的点,adjuested alert的结果与point-wise alert的结果相一致, 最终得到更新后的异常检测结果。
[0085]
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员 来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也 应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1