发明内容
本发明的目的在于提供一种可以具体定位设备故障点位的方法,并且能最大程度减少误差,提供一种用于飞机系统传感器故障的诊断方法。
为了实现上述发明目的,本发明实施例提供了以下技术方案:
一种用于飞机系统传感器故障的诊断方法,包括以下步骤:
对获取的传感器数据进行样本及特征处理,作为训练故障诊断模型的训练集;
根据所述训练集,使用决策树、随机森林或深度神经网络的方法对故障诊断模型进行训练,以构建故障诊断模型;
使用未进行样本及特征处理的传感器数据作为测试集,对构建的故障诊断模型进行验证;
对故障诊断模型完成验证后,将新采集的传感器数据输入故障诊断模型,得到诊断结果。
在上述方案中,将传感器真实的数据作为训练集,在构建故障诊断模型时,通过决策树、随机森林或者深度神经网络的方法,可以适用庞大数据量的训练集,同时减轻人工标注的困难;在构建故障诊断模型后,使用测试集对其进行评估,以验证构建的故障诊断模型是否能准确输出故障结果。
所述对获取的传感器数据进行样本及特征处理,作为训练故障诊断模型的训练集的步骤,包括:
对传感器所采集数据的设备注入不同性能的故障,使用传感器采集该设备分别在每一种性能故障时的数据作为训练集C,每一种性能故障下的数据作为一个训练子集,则有C1、C2、...CN,N为设备性能故障的数量;
其中每一种性能故障时的数据还包括若干条条件数据,则一个训练子集为Ci={a1 i,a2 i,...aM i},Ci为第i个训练子集,a为条件数据,M为条件数据的数量。
根据所述训练集,使用深度神经网络的方法对故障诊断模型进行训练时的步骤,包括:
通过深度神经网络层进行DNN前向传播计算和进行DNN反向传播计算;
所述深度神经网络层包括输入层、隐藏层、输出层,所述隐藏层为中间层,且有若干层;
进行DNN前向传播计算:
其中,
为线性关系系数,表示第i-1层的第k个神经元到第i层的第j个神经元的线性系数;
为偏倚,表示第i层第j个神经元的偏倚;
为激活函数;
为前向传播计算的输出值,表示第i-1层共有m个神经元,则对于第i层的第j个神经元的输出值;
使用矩阵方法表示第i层的输出值:
其中,第i-1层共有m个神经元,而第i层共有n个神经元,则第i层的线性系数w组成了一个n×m的矩阵
,第i层的偏倚b组成了一个n×1的向量
,第i-1层的输出a组成了一个m×1的向量
,第i层的未激活前线性输出z组成了一个n×1的向量
,第i层的输出a组成了一个n×1的向量
;
进行DNN反向传播计算:
输入:总层数L,以及各隐藏层与输出层的神经元个数,激活函数,损失函数,迭代步长
,最大迭代次数MAX与停止迭代阈值
,输入的m个训练子集C
1、C
2、...C
m;
输出:各隐藏层与输出层的线性关系系数矩阵W和偏倚向量b。
使用未进行样本及特征处理的传感器数据作为测试集,对构建的故障诊断模型进行验证的步骤,包括:
所述未进行样本及特征处理的传感器数据为:使用传感器采集该设备在任意情况时的数据作为测试集,所采集的测试集为未知设备性能是否有故障,或者未知设备性能为何种故障的数据,则有Z={b1、b2、...bn},b为传感器采集的设备在任意情况时的数据,n为传感器采集的数据数量;
将测试集的数据输入故障诊断模型,判断故障诊断模型输出的结果与数据原有的设备性能故障是否一致。
与现有技术相比,本发明的有益效果:
(1)本发明的训练集中包含设备多种性能下的数据,训练出来的故障诊断模型能够得知设备具体是什么性能发生了故障,能够完全定位到故障点位。
(2)本发明将传感器真实的数据作为训练集,在构建故障诊断模型时,通过决策树、随机森林或者深度神经网络的方法,可以适用庞大数据量的训练集,同时减轻人工标注的困难;在构建故障诊断模型后,使用测试集对其进行评估,以验证构建的故障诊断模型是否能准确输出故障结果。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本发明通过下述技术方案实现,如图1所示,一种用于飞机系统传感器故障的诊断方法,包括以下步骤:
步骤S1:对获取的传感器数据进行样本及特征处理,作为训练故障诊断模型的训练集。
通常飞机上的一个传感器用于固定采集一个设备的数据,比如速率陀螺仪用来采集运载器的角速率,加速度组件用来采集运载器的加速度,燃油传感器用来采集燃油箱内的燃油量,俯仰杆传感器用来采集俯仰杆运作数据。
然而一个设备通常会产生不同的性能故障,比如燃油箱内可能燃油量不足,也可能燃油箱泄漏,还有可能燃油传感器供电故障;再比如,俯仰杆运作故障可能是俯仰杆断线故障,也有可能是俯仰杆断裂故障,还有可能是俯仰杆传感器供电故障等。
因此,对于一个设备来说,其会发生不同的性能故障,大致可以分为电气性能故障和机械性能故障,电气性能故障包括电压、电流、功率、温度等,机械性能故障包括断裂、卡壳等。但传感器在采集数据时,即使采集的数据异常,也不能直接得出该设备具体是发生了什么性能的故障。
本方案,首先对传感器所采集数据的设备主动注入不同性能的故障,使用传感器对该设备分别在每一种性能故障时的数据进行采集,每一种性能故障下的数据作为一个训练子集,则有C1、C2、...CN,N为设备性能故障的数量。
作为举例,C余度俯仰杆发生故障时,可能是C余度俯仰杆断线故障或者C余度俯仰杆对应的传感器供电故障引起的(暂且讨论这两种情况),先对C余度俯仰杆注入C余度俯仰杆断线的故障,使用传感器采集C余度俯仰杆断线的性能故障时的数据作为训练子集C1。重新对C余度俯仰杆注入传感器供电的故障,使用传感器采集传感器供电的性能故障时的数据作为训练子集C2。
并且分别对训练子集C1和训练子集C2打上性能故障标签,比如对训练子集C1打上“C余度俯仰杆断线故障”的标签,对训练子集C2打上“C余度俯仰杆传感器供电故障”的标签。
在采集训练子集的数据时,需采集多条设备在不同状态时的数据,采集的多条数据称为条件数据。比如在采集C余度俯仰杆断线的性能故障的数据时,将俯仰杆分别调至9组不同的档位值:-20、-15、-10、-5、0、5、10、15、20,从而获取传感器所采集的9组数据,C1={a1 1(-20),a2 1(-15),a3 1(-10),a4 1(-5),a5 1(0),a6 1(5),a7 1(10),a8 1(15),a9 1(20)}。
同样,在采集传感器供电的性能故障的数据时,也将俯仰杆分别调至这9组不同的档位值,从而获取传感器所采集的9组数据,C2={a1 2(-20),a2 2(-15),a3 2(-10),a4 2(-5),a5 2(0),a6 2(5),a7 2(10),a8 2(15),a9 2(20)}。
其中,训练子集C1和训练子集C2中的每条数据即是条件数据,将两个训练子集作为训练集,则一共有18条条件数据。并且分别对每条条件数据打上条件标签,比如对条件数据a1 1(-20)打上“-20”的条件标签。因此作为训练集中的数据,是已知了其具体的性能故障和设备当前状态的。
步骤S2:根据所述训练集,使用决策树、随机森林或深度神经网络的方法对故障诊断模型进行训练,以构建故障诊断模型。
作为一种可实施方式,使用决策树来训练和构建故障诊断模型,将训练集C(包括训练子集C1、训练子集C2)中的条件数据作为决策树的叶节点,将训练子集C1作为根节点,将训练子集C2作为根节点。通过递归的最优特征选择方式,对训练集进行分割,使得每个条件数据都有一个最优的分类结果。
由于每个条件数据都被打上了条件标签,因此进入决策树训练后,每个条件数据都能被正确分类到其对应的训练子集中。如此递归下去,直到训练集中的所有条件数据都被正确分类,即最终都被分割到相应的根节点中,这就生成了一颗决策树,即完成对故障诊断模型的训练。再将测试集输入决策树,即可完成对故障诊断模型的构建。在本实施方式中,使用的是条件标签对条件数据进行分类,因此条件标签就是选择的特征。
但当训练集的数据量非常庞大时,再对其中的条件数据一一进行标签处理,则会非常增加工作量。因此在选择特征进行分类时,选择的准则可通过信息增益、信息增益比或基尼指数的方式进行选择。
(一)使用信息增益的方式选择特征时,条件数据作为随机变量X,其概率分布为:
其中
为第i条条件数据,n为条件数据的数量,
为第i条条件数据的概率分布。
则随机变量X的熵为:
熵作为随机变量不确定性的度量,熵值越大,随机变量的不确定性就越大。根据每个随机变量X的熵,可以得到多个随机变量的联合熵。比如随机变量X和随机变量Y的联合熵表达为:
得到联合熵后,又可以得到条件熵的表达:
条件熵度量了随机变量X在知道随机变量Y后剩下的不确定性,因此信息增益表示得知了特征Y的信息而使特征X的不确定性减少的程度。假设A为训练集C中的某一特征,则特征A对训练集C的信息增益表达为:
H(C)表示对训练集C进行分类的不确定性,H(C|A)表示在特征A给定的条件下对训练集C进行分类的不确定性,那么它们的差即是信息增益g(C|A),表示由于特征A给定而使对训练集C的分类不确定性减少的程度。因此信息增益越大,表示该特征具有越强的分类能力,所以可以选择信息增益大的特征作为分类特征。
根据信息增益的准则选择特征的方法是计算每个特征的信息增益,选择信息增益最大的特征进行分类。假设训练集为C,|C|为训练集的样本容量,有K个类为Dk,k=1,2,...K,|Dk|为属于类Dk的样本个数。
特征A有n个不同的取值{a1,a2,...an},则根据特征A可将训练集C划分为n个训练子集C1、C2、...Ci、...Cn,|Ci|为特征A的第i个取值的样本数量;设训练子集Ci中属于类Dk的样本的集合为Cik,即Cik=Ci∩Ck,|Cik|为Cik的样本个数,则信息增益算法如下:
1,输入训练集C和特征A,计算熵H(C):
2,计算条件熵H(C|A):
3,计算信息增益g(C,A):
(二)选择信息增益比的方式选择特征时,可以避免信息增益作为划分依据时,会偏向于取值较多的特征所带来的不利影响。
特征A对训练集C的信息增益比gR(C,A),定义为其信息增益g(C,A)与训练集C关于特征A的熵HA(C)之比,表达为:
关于特征熵HA(C)的表达为:
其中,n为特征A取值的个数,|Ci|为特征A的第i个取值对应的样本数,|C|为样本容量。
(三)使用基尼系数的方式选择特征时,假设有K个类别,第K个类别的概率为pk,则基尼系数的表达为:
基尼系数越大,训练集的不确定性越大,对于训练集C,如果根据特征A的某个值a,把训练集C划分为训练子集C1和训练子集C2两部分,则在特征A的条件下,训练集C的基尼系数表达为:
综上通过信息增益、信息增益比或基尼系数的方式对特征进行选择,从而生成决策树的分类方法,适合处理有缺失属性的样本,比如当训练集C中的数据有属性缺失时;适合处理海量数据,比如当训练集C中的数据量庞大,能在相对较短的时间内对大型数据源做出可行且可靠的结果;适合分类细节需要直观展示的案例,具有很强的可解释性。
作为另一种可实施方式,使用随机森林来训练和构建故障诊断模型,随机森林是一种集成算法,通过组合若干个弱分类器,最终结果通过投票,使得整体故障诊断模型的结果具有较高的精确度和泛化能力。
随机森林使用基尼系数选择特征生成的决策树作为弱分类器,在使用决策树的基础上,随机森林对决策树的建立做了改进,对于普通的决策树,在所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分。
但是随机森林通过选择一部分样本特征nsub(nsub<n)来选择一个最优的特征来做决策树的左右树划分,这样进一步增强了故障诊断模型构建的泛化能力,并且nsub越小,则故障诊断模型越健壮,则随机森林的算法如下:
1,输入训练集C、分类器的迭代次数T,t=1,2,...T,对训练集C进行第t次随机采样,共采样m次,得到包含m个样本的采样机Ct。
2,用采样集Ct训练训练第t个决策树模型Gt(x),在训练决策树模型的节点时,在节点上所有的样本特征中选择一部分样本特征,在选择的一部分样本特征中选择一个最优的特征来做决策树的左右子树划分。
3,T次迭代投出最多票数的类别作为训练集中数据的最终类别,若票数最多的有两个或以上的类别,则选择其中一个座位训练集中数据的最终类别即可。
随机森林可以实现数据的分类,它的适用情况不仅包含决策树的适用情况,还适用于不做特征选择的情况,也适用于不做泛化处理的情况,也适用于需要并行处理弱分类器的情况。
无论是使用决策树还是随机森林,都可以根据预先准备的训练集和测试集构建出故障诊断模型,但构建故障诊断模型后,为保障故障诊断模型使用的准确性,还需要对故障诊断模型进行评估,以确保故障诊断模型在构建过程中是否出现了差错。
作为另一种可实施方式,使用深度神经网络的方法对故障诊断模型进行训练,若故障诊断模型输出有误差,则对故障诊断模型进行反复学习,以减少或排除误差。
深度神经网络DNN是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。评估故障诊断模型过程由信号正向传播与误差的反向回传两个部分组成。
DNN正向传播时,输入样本从故障诊断模型的输入层传入,经各隐藏层依次逐层处理,传向输出层,若输出层输出与期望不符,则将误差作为调整信号逐层反向回传,对神经元之间的连接权矩阵做出处理,使误差减小。经反复学习,最终使误差减小到可接受的范围。
深度神经网络层可以分为三类,分别为输入层、隐藏层、输出层。请参见图2,第一层是输入层,中间层数都是隐藏层,最后一层是输出层,层与层之间是全连接的,第i层的任意一个神经元与第i+1层的任意一个神经元相连。
在定义线性关系系数
时,请参见图3,比如
表示第二层的第4个神经元到第三层的第2个神经元的线性系数,上标代表线性系数
所在的层数,而下表对应的是输出的第三层索引2和输入的第二层索引4。第i-1层的第k个神经元到第i层的第j个神经元的线性系数定义为
。
在定义偏倚b时,请参见图4,比如
表示第二层的第三个神经元对应的偏倚,上标2代表所在的层数,下标3代表偏倚所在的神经的索引。同样第三层的第一个神经元的偏倚应该表示为
。第i层的第j个神经元的偏倚定义为
。
在进行DNN前向传播算法时,激活函数是
,隐藏层和输出层的输出值为a,利用上一层的输出计算下一层的输出。请参见图5,比如对于第二层的输出
、
、
,有(a的上标代表所在层数,下标代表神经的索引,x代表输入层的神经元):
假设第i-1层共有m个神经元,则对于第i层的第j个神经元的输出
,有:
如果使用代数法一个个的表示输出比较复杂,单使用矩阵法就比较简洁。假设第i-1层共有m个神经元,而第i层共有n个神经元,则第i层的线性系数w组成了一个n×m的矩阵
,第i层的偏移b组成了一个n×1的向量
,第i-1层的输出a组成了一个m×1的向量
。则用矩阵法表示第i层的输出为:
DNN的前向传播就是利用若干个权重系数矩阵W、偏倚向量b和输入值向量x进行一系列线性运算和激活运算,从输入层开始,一层层的向后计算,直到运算到输出层,得到输出结果为止。
因此,DNN前向传播可以总结为:
输入:总层数L,所有隐藏层和输出层对应的矩阵W、偏倚向量b、输入值向量x;
在步骤中体现:
2,for i=2 to L,计算:
DNN反向传播时,若有误差,将误差作为调整信号逐层反向回传,对神经元之间的连接权矩阵做出处理,反向传播可以总结为:
输入:总层数L,以及各隐藏层与输出层的神经元个数,激活函数,损失函数,迭代步长β,最大迭代次数MAX与停止迭代阈值з,输入的m个训练子集C1、C2、...Cm;
输出:各隐藏层与输出层的线性关系系数矩阵W和偏倚向量b。
在步骤中体现:
1,初始化各隐藏层与输出层的线性关系系数矩阵W和偏倚向量b的值为一个随机值;
2,for iter to 1 to MAX:
2-1,for i=1 to m;
2-1b,for i=2 to L,进行前向传播算法计算
;
2-1d,for i=L-1 to 2,进行反向传播算法计算
;
2-2,for i=2 to L,更新第i层的线性关系系数矩阵
、偏倚向量
:
2-3,如果所有W、b的变化值都小于停止迭代阈值з,则跳出迭代循环到下一步骤;
3,输出各隐藏层与输出层的线性关系系数矩阵W和偏倚向量b。
深度神经网络DNN可以实现数据分类,特别适用于发现模型输入和输出的非线性关系的情况,能学习和存贮大量的输入-输出模式映射关系,而无需事前描述这种映射关系的数学方程,因此用来对训练故障诊断模型是非常不错的选择。
步骤S3:使用未进行样本及特征处理的传感器数据作为测试集,对构建的故障诊断模型进行验证。
使用传感器采集该设备在任意情况时的数据作为测试集,所采集的测试集为未知设备性能是否有故障,或者未知设备性能为何种故障的数据,则有Z={b1、b2、...bn},b为传感器采集的设备在任意情况时的数据,n为传感器采集的数据数量。
比如,现在C余度俯仰杆处于任意情况,并且C余度俯仰杆的性能是否有故障,或者具体是何种故障都是未知的。也将俯仰杆调至上述9组不同的档位值,从而获取传感器所采集的9组数据作为测试集,Z={b1(-20)、b2(-15)、b3(-10)、b4(-5)、b5(0)、b6(5)、b7(10)、b8(15)、b9(20)}。
由于测试集中的数据是未知设备是否具有性能故障,也未知设备发生了何种具体的性能故障,因此作为随机数据,不对测试集中的数据加标签。
将测试集的数据输入故障诊断模型,判断故障诊断模型输出的结果与数据原有的设备性能故障是否一致。
步骤S4:对故障诊断模型完成验证后,将新采集的传感器数据输入故障诊断模型,得到诊断结果。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。