一种基于深度迁移学习的无监督工业系统异常检测方法与流程

文档序号:17586960发布日期:2019-05-03 21:24阅读:183来源:国知局
一种基于深度迁移学习的无监督工业系统异常检测方法与流程
本发明涉及数据挖掘、深度学习和神经网络等领域,特别涉及一种基于深度迁移学习的无监督工业系统异常检测方法。
背景技术
:近年来,随着深度学习技术的迅速发展,深度学习在各行各业遍地开花,在工业系统方面其中的一个应用是异常检测。例如在发电厂中,通过收集锅炉上的温度,气压等传感器的数据,通过异常判别模型判别是否有异常;在中央空调系统中通过收集中部署在系统各处的传感器数据,通过异常判别模型判别是否有异常;在电信营销系统中,通过收集服务器硬件负载和网络流量数据,通过异常判别模型判别是否有异常。以上提到的这些例子都是使用工业传感器来接收数据的,其中我们将带有标注的数据叫做迁移源传感器数据,没有标注的数据叫做迁移目标传感器数据。在数据科学家和工程师使用传统的机器学习方法针对异常检测问题对工业系统进行建模的时候,往往会依赖于大量的有标记的数据来估计逼近一个目标函数。因为没有足够的数据,训练出来的模型往往是过拟合的。然而实际上,获取这些数据是很困难的。首先,在异常检测问题中,异常的情况并不是经常发生,所以需要长时间的等待才能够收集到足够的异常样本;然而从不同的机器上采集的数据表现不一样,例如周期,振幅等。这导致了使用一台机器的数据训练的模型在另外一台机器的上并不适用,这种现象在机器学习中称为数据偏移。因此,使用传统的深度学习技术去解决异常检测问题受到了比较大的限制。考虑到不同的机器数据虽然有着不同的表现,但是数据之间的变化的原理一致的,是遵循一样的物理原理的。以发电厂锅炉为例子,温度升高,锅炉内的气压必定升高;锅炉漏水,锅炉内部的气压必定下降;当锅炉出现了温度升高并且气压上升不明显的情况,就很有可能出现了异常甚至故障,这是模型能够学习到的规律,而且这种规律在不同的机器之间是适用的。假设迁移源和迁移目标两个领域中的数据是有相似性的,迁移学习就是利用迁移源数据和迁移目标数据之间的关系以及迁移源中有标注的数据中学习到的规律知识通过某种方式分享给新的模型,从而使得新的模型在目标数据中获取良好的效果。迁移学习一直是深度学习领域的一个难题,近年来迁移学习在计算机视觉方面取得很大的进步,但是在时间序列数据上的迁移学习相关工作却很少,而工业系统上采集的传感器数据便是一种时间序列数据。因此如何选取合适的技术去处理时序数据,如何挖掘迁移源和迁移目标数据之间的关系,如何利用迁移源数据的规律去预测迁移目标的机器是否出现异常,建立一个适用于多台机器异常判别的模型具有一定的研究意义。技术实现要素:本发明的目的在于提供一种基于深度迁移学习的无监督工业系统异常检测方法。本发明利用工业系统中的迁移源有标注的传感器数据和没有标注的迁移目标传感器数据,可以使用比较少的机器数据训练出模型,并且可用在所有的机器上。为了实现上述目的,本发明的基于深度迁移学习的无监督工业系统异常检测方法,包括如下步骤:1)收集传感器数据;2)数据预处理;3)划分数据集,4)模型搭建;5)模型训练;6)模型测试;7)判断是否有故障,如果有故障则停止机器运行。本发明基于深度迁移学习的无监督工业系统异常检测方法具有如下优点和效果:因为工业系统中故障数据比较难采集,而且采集故障数据的代价非常大,所以在实际工业系统中只能采集一部分机器的有标注数据,而另外一部分机器不能采到。用普通的非迁移工业系统异常检测方法中,仅仅使用有标注数据训练的模型用在采集不到标注数据的机器上性能很差,因此普通的非迁移工业系统异常检测方法不能用于工业系统的所有机器。而基于深度迁移学习的无监督工业系统异常检测方法可以使用比较少的机器数据训练出模型,并且可用在所有的机器上。附图说明图1为本发明方法的流程图;图2为本发明的模型搭建原理图。具体实施方式本发明基于深度迁移学习的无监督工业系统异常检测方法,包括如下步骤:1)收集传感器数据;2)数据预处理;3)划分数据集,4)模型搭建;5)模型训练;6)模型测试;7)判断是否有故障。当工业系统中增加了新的机器,重复步骤1)到6)得到新的模型,然后重新部署模型。上述步骤2)数据预处理把传感器数据分为三类,第一类有一定变化范围的数据;第二类是随着时间不断增加的数据;第三类是只有固定状态量的数据;上述有一定变化范围的数据采用归一化处理,归一化处理是将训练集数据的范围压缩到[0,1]之间;随着时间不断增加的数据采用差分处理,差分处理是使用该时间步的数据减去上一个时间步的数据;只有固定状态量的数据不作处理,最后将预处理后的数据保存到数据库中。上述有一定变化范围的数据是温度,气压;随着时间不断增加的数据是注水量;只有固定状态量的数据是阀门的开关,开记为1,关记为0。上述步骤1)收集迁移源传感器序列数据和迁移目标传感器序列数据分为两个过程:11)将一个工业系统中的机器的分为两组:迁移源机器和迁移目标机器;12)从迁移源机器收集的传感器序列数据称为迁移源传感器序列数据,从迁移目标机器收集的传感器序列数据称为迁移目标传感器数据。收集数据的时候同时收集传感器数据和机器是否发生故障的记录;13)其中是机器的否故障数据由人工监督记录,其余特征数据由传感器记录。上述步骤3)划分数据集分为两个过程:31)划分子序列数据集;32)划分训练数据集及测试数据集;其中,划分子序列数据集的过程如下:获取有标注的迁移源传感器序列数据<xs,ys>和迁移目标传感器序列数据<xt,yt>,分别有m个和n按时间先后顺序排列好的样本,将数据划分为m-t+1个和n-t+1个长度为t的序列样本。划分方式如下:从迁移源机器传感器数据<xs,ys>中的xs取出第m个样本到第m+t个样本的子序列作为一个迁移源序列样本对应的标注为对于标注如果是异常样本则标记为向量[1,0],否则为[0,1]。另外对于迁移源和迁移目标应该设置不同的标记ydomain,如果是迁移源样本则标记为[1,0],否则为[0,1]。因此获得迁移源传感器序列数据集同理,获得迁移目标传感器序列数据集其中划分训练数据集及测试数据集的步骤如下:将工业系统机器分成两类,迁移源机器和迁移目标机器,特征数据采集都从工业系统的机器的传感器记录的数据中获得,标注的故障数据则由人工观察记录。然后分别将迁移源传感器序列数据和迁移目标传感器序列数据分为训练集和测试集两个部分,最后有4种数据:迁移源训练集数据,迁移源测试集数据,迁移目标训练集数据,迁移目标测试集数据。迁移源训练集数据和迁移源测试集数据成为迁移源数据;迁移目标训练集数据和迁移目标测试集数据称为迁移目标数据;迁移源训练集数据和迁移目标训练集数据称为训练集数据;迁移源测试集数据和迁移目标测试集数据称为测试集数据。其中训练集和测试集的方法是按照时间顺序来分割,按照时间顺序前面80%的数据作为训练集,后面20%的数据作为测试集,其中将迁移目标的训练集中的标注去掉,最后迁移源传感器序列数据集的训练数据集和测试数据集分别是和迁移目标的训练数据集和测试数据集分别是和上述步骤4)模型搭建中所述的模型分为五个组成部分:迁移源特征提取层,迁移目标特征提取层,基于长短时间记忆单元的时间序列信息提取层,异常判别器,领域判别器,模型搭建的方法如下:41)首先将数据按照采集的机器分为迁移源数据和迁移目标数据,迁移源数据输入到迁移源特征提取层,迁移目标数据输入到迁移目标特征提取层;42)迁移源特征提取层的输出作为基于长短时间记忆单元的时间序列信息提取层的输入,基于长短时间记忆单元的时间序列信息提取层(由软件实现)有两个输出,一个输出是隐状态输出,这个作为故障判别器的输入,故障判别器由一个多层感知器和一个softmax层两部分组成,用于判断输入的数据对应的工业系统是否出现故障;另外一个输出是细胞状态输出,这个作为领域判别器的输入,领域判别器同样是由一个多层感知器和一个softmax层组合而成,它是用于判别输入数据是迁移源传感器序列数据还是迁移目标传感器序列数据。上述步骤5)模型训练包括以下步骤:51)分别从迁移源训练集和迁移目标训练集中取出一批数据,批量大小都为b,输入一个批量大小为b的数据,异常判别器输出b个预测值ylabel_pre,领域判别器输出b个预测值ydomain_pre,其中异常判别器是由一个多层感知器和一个softmax层组成的,对于一个样本的输入,输出一个ylabel_pre;领域判别器异常判别器由一个多层感知器和一个softmax层组成的,如对于一个样本的输入,输出一个ydomain_pre;其中ylabel_pre和ydomain_pre都是一个2维向量;然后根据实际结果计算出异常判别器的损失值和领域判别器的损失值,异常预测器和领域预测器的计算方法如下:最后总的损失函数为:total_loss=losslabel+λ·lossdomain其中λ是一个用作调整的超参数,默认设置为0.005;52)计算出总的损失值后就算梯度利用梯度反向传播算法更新模型参数;重复步骤51)到步骤52)直到模型的收敛,收敛的标准是模型总的损失值基本不变。因为随着模型的训练,total_loss不断降低,模型收敛的条件是total_loss不再降低。上述步骤6)模型测试包括如下步骤:在测试的时候迁移源测试集和迁移目标测试集全部输入到模型,异常判别器的输出为预测结果,然后和机器实际的异常情况,即正确的标注,进行比较,计算准确率。例如输入两个样本,样本特征值分别为:[1,2,3]和[4,5,6],输出为0,1,其中0表示没有故障,1表示出现故障。这组样本的标注是1,1。所以有一个样本预测正确,通过测试,一个错误,没有通过测试。于是:测试的正确率=预测正确样本数/总样本数即1/2=0.5。上述步骤7)的判断工业系统中的机器是否故障。将工业系统中的所有机器采集的传感器序列数据输入到模型中,如果模型的故障判别器判断为故障,则停止机器运行进行检修。当工业系统中增加了新的机器,重复步骤1)到6)得到新的模型,然后重新部署模型。模型更新的方法如下:重新采集数据并且训练模型,将训练好的模型重新部署到异常检测系统的模型模块中用于实时判断机器异常(训练好的模型为测试正确率最高的模型);当工业系统中出现新的机器,可以将新的机器作为迁移目标机器,重新收集新机器的传感器数据用作训练并更新模型,即只收集传感器数据,但是没有人工记录故障数据。因为得到的模型是一个文件,所以更新方法是直接将文件替换。当工业系统中添加新的机器(例如当扩大生产规模的时候工业系统就会添加新的机器,如发电厂添加新的锅炉),就应该将新的机器作为迁移目标机器来收集数据,重新训练模型。本发明使用迁移学习的思路搭建和训练一个迁移学习模型,在模型通过测试集合样本的测试之后,通过将从工业系统传感器中收集传感器数据输入到模型,模型输出该机器是否故障。本发明在提取序列信息的长短时间记忆单元之前添加了由全连接网络组成的迁移源特征提取层和迁移目标特征提取层,迁移源特征提取层专门用于提取迁移源数据特征,迁移目标特征提取层专门用于提取迁移目标数据特征;使用长短时记忆单元中的单元状态来输入到领域判别器。为了方便本领域技术人员更好地理解本发明的技术方案,下面以发电厂锅炉数据为例子结合图1和具体的示例对本发明的方法进行进一步详细的描述,具体如下:步骤1:收集传感器数据,首先从发电厂锅炉的传感器中收集数据,我们选择两个不同的锅炉收集数据,每个锅炉有20个传感器,步骤2:数据预处理,不同的传感器数据采用不同的预处理方法,如下表:因为不同的传感器数据有着不同的处理方法,接下来选择其中三种传感器数据(主集管蒸汽压力,注水量,操作状态),生成5个样本(每个样本是两个时间步)数据作预处理展示例子:未处理迁移源的数据如下:首先对主集管蒸汽压力这个传感器数据进行归一化处理,计算公式如下:通过观察数据可以知道主集管蒸汽压力数据中最大值为0.7272,最小值为0.6704,然后当主集管蒸汽压力的值为0.6818的时候,代入公式中的x得到归一化结果约等于0.2007。再来看注水量这个传感器数据,这组数据使用差分的方法来进行预处理,即使用下一个时间步的值和当前时间步相减。例如:第二个时间步和第一个时间步相减,结果为0.8543-0.8542=0.0001,是预处理后的第一个时间步的值,经过差分处理后,数据集的总量会少一个样本。操作状态这个传感器数据不做任何修改。预处理后的数据如下:编号主集管蒸汽压力注水量操作状态是否异常10.20070.00011[0,1]20.39960.00011[0,1]30.200700[1,0]41.000[0,1]50.20070.00011[0,1]60.200701[0,1]步骤3:划分数据集,划分数据集分为划分子序列和划分训练集测试集两个过程。首先是划分子序列,子序列长度为2,预处理后的数据集有6个样本,则可以划分5个子序列样本,子序列长度为2指的是处理后每一个样本的子序列的长度,例如下表有5个样本,样本编号分别为a,b,c,d,e;以样本a为例子,样本a由数据编号为1,2的两个数据组成的一个子序列,所以长度为2,数据b,c,d,e同理:预处理后的数据集有4个样本,则可以划分3个子序列样本:样本编号数据编号是否异常(标注)a1,2[0,1]b2,3[1,0]c3,4[0,1]d4,5[0,1]e5,6[0,1]以前80%的数据作为训练集,后20的数据集作为测试集,那么训练集和测试集的结果如下:迁移目标传感器序列数据处理过程和迁移源传感器序列数据处理方式相同。步骤4:模型搭建步骤。模型一共有五个组成部分:迁移源特征提取层,迁移目标特征提取层,基于长短时间记忆单元的时间序列信息提取层,异常判别器,领域判别器,具体如图2。其中迁移源特征提取层,迁移目标特征提取层各使用一层100维的全链接神经网络来实现。基于长短时间记忆单元的时间序列信息提取层则使用一层150维的长短时间记忆单元圣经网络来实现。异常判别器和领域判别器分别两层全连接神经网络来实现,第一层为20维,第二层2维。步骤5:模型的训练,训练过程分为以下几个步骤a.将迁移源训练集和迁移目标训练集打乱。b.分别从迁移源训练集和迁移目标训练集中取出一批数据,批量大小都为b,本发明中批量大小b的取值为128,输入到模型中。在训练的时候设定训练模型为使用训练模式和迁移模式。输入一个批量的数据,异常判别器输出一个预测值ylabel_pre,领域判别器输出一个预测值ydomain_pre,其中ylabel_pre和ydomain_pre都是一个b×2的张量。然后根据实际结果计算出异常判别器的损失值和领域判别器的损失值。异常预测器和领域预测器的计算方法如下:最后总的损失函数为:total_loss=losslabel+λ·lossdomain其中λ是一个用作调整的超参数,在本发明中设置为0.005。c.计算出总的损失值后就算梯度利用梯度反向传播算法更新模型参数。d.重复b到c直到模型的收敛,收敛的标准是模型总的损失值基本不变。模型训练过程可以通过下面程序实现。步骤6:模型测试。在测试的时候不再使用训练模式和迁移模式将迁移目标测试集全部输入到模型,得到预测结果,然后将预测结果和标注结果进行比较,计算准确率,利用本发明计算出的准确率为98%。步骤7:判断是否有故障,在工业系统中实时收集传感器序列数据,将收集的传感器数据输入到模型中,如果模型判断机器故障,则及时停止机器运作并且检修,如果机器没有损害则不作任何处理。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1