法律状态公告日
法律状态信息
法律状态
2022-08-19
实质审查的生效 IPC(主分类):G06K 9/62 专利申请号:2022102824119 申请日:20220322
实质审查的生效
2022-08-02
公开
发明专利申请公布
技术领域
本发明属于航空发动机故障检测领域,尤其涉及一种基于支持向量数据描述和迁移学习的航空发动机故障检测方法。
背景技术
航空发动机故障检测是指根据发动机的实时运行数据判断发动机所处状态,故障状态或者正常状态。故障检测是航空发动机健康管理的重要组成部分,对保障飞机与发动机的健康运行具有重要意义。由于90%的航空发动机故障都是气路部件故障,因此非常有必要对气路部件进行故障检测。流量与效率的改变能够直接反映发动机部件的健康状态,但是它们不能被直接观测到。而发动机上一些可以测量的参数,比如温度、压力、转速等等,并不能直接反映航空发动机部件的健康状态。这给航空发动机的故障检测带来了一定的困难。
当前故障检测方法可以粗略的分为基于模型的方法以及数据驱动的方法。基于模型的方法需要根据气动热力学原理建立精确的发动机机理模型。故障检测的准确度高度依赖于所建立的模型的精度。数据驱动的方法依靠发动机历史运行数据,利用机器学习算法建立数据和发动机状态之间的映射关系。
数据驱动的方法通常将发动机历史运行过程中的带标签的数据作为训练数据,将当前运行状态下收集的数据作为测试数据。这些方法都假定训练集和测试集中的数据服从同一分布,换句话说,就是训练数据和测试数据从同一个条件下收集。然而,由于发动机状态不同、运行工况不同、发动机存在安装误差等情况,训练数据和测试数据很难服从同一分布。
比如,在航空发动机的寿命周期内,随着使用次数的增加,发动机的整体性能会下降。当这种下降到了一定的程度,就到了发动机寿命的终点。在不同程度的退化状态下,航空发动机的性能会不同,因此,在不同程度的退化状态下收集的数据会服从于不同的分布。所以,利用在不同状态下收集的数据来训练同一个故障诊断模型会导致模型的性能较低甚至不可用。另外,从同一个状态下收集到足够的数据来训练故障检测模型也是不可行的。因为故障数据的获取非常困难,并且通常都会花费非常大的代价。
迁移学习旨在解决机器学习领域的数据缺乏问题,其主要的思想就是提取其他领域(源域)的信息,并且运用到目标领域。源域与目标域具有一定的相似性,并且源域的数据丰富,包含了大量的有用信息。然而由于源域与目标域之间存在差异,包含在源域中的信息不能被直接利用。庆幸的是,可以通过迁移学习将该信息迁移到目标域中,从而解决目标域中数据不充分的情况。对于航空发动机故障诊断,可以利用迁移学习将从其他状态下收集的数据中包含的信息提取,并将其用来训练当前发动机的故障诊断模型。特别地,对于退化状态下的发动机故障诊断,可以将发动机在当前退化状态下收集的数据作为目标域数据,将未退化或者其他程度的退化状态下收集的数据作为源域数据,利用迁移学习解决当前状态下数据不足以训练故障诊断模型的问题。
SVDD是一种常见的单分类算法,其主要目标是在特征空间中寻找一个超球体,球体里面是正类,球体外面是负类,位于球面上的样本称为支持向量,超球体的体积应该尽量小。对于待判断的样本,计算该样本与球心的距离,如果大于球体的半径,则被认为是故障样本,小于球体半径则被认为是正常样本。SVDD经常被用在航空发动机的故障检测中,具有较好的分类效果,因此本发明在SVDD的基础上结合迁移学习来进行航空发动机的故障检测。
发明内容
发明目的:为了解决航空发动机退化到某一阶段时,由于故障数据不足而不能训练出性能良好的故障检测模型的问题,本发明采用了迁移学习的思想,利用未退化时收集的数据作为源域数据,利用当前退化状态下收集的数据作为目标域数据,设计了基于SVDD的航空发动机故障检测模型,提高发动机故障检测的有效性。
技术方案:本发明的一种基于支持向量数据描述和迁移学习的航空发动机故障检测方法,即SVDD-TL,包括以下步骤:
步骤1:在发动机标称状态下收集历史飞行数据作为源域数据;
步骤2:在发动机当前退化程度下收集飞行数据作为目标域数据;
步骤3:给定模型以及算法训练过程的所有参数,包括核函数参数、算法精度容忍值、源域及目标域的松弛参数、源域与目标域之间的平衡参数;
步骤4:初始化源域SVDD模型的参数;
步骤5:利用源域数据,采用SMO算法训练源域SVDD模型,得到相关的参数;
步骤6;初始化目标域模型的参数;
步骤7:利用目标域数据以及源域SVDD模型,采用SMO算法训练SVDD-TL模型;
步骤8:将实时飞行数据输入故障检测模型,检测发动机处于正常状态还是故障状态。
有益效果:该基于支持向量数据描述和迁移学习的航空发动机故障检测方法能够在航空发动机故障数据较少时获得较好的故障检测效果,解决了航空发动机故障数据不足的问题,提高了航空发动机故障检测的有效性。
附图说明
图1为本发明的流程图;
图2为双转子涡扇发动机结构示意图;
图3为在工况1下分别采用四种典型故障时各个算法的故障检测精度对比图;
图4为在工况2下分别采用四种典型故障时各个算法的故障检测精度对比图;
图5为在工况3下分别采用四种典型故障时各个算法的故障检测精度对比图;
图6为在工况4下分别采用四种典型故障时各个算法的故障检测精度对比图;
图7为在工况1下分别采用四种典型故障时各个算法的故障检测G-mean对比图;
图8为在工况2下分别采用四种典型故障时各个算法的故障检测G-mean对比图;
图9为在工况3下分别采用四种典型故障时各个算法的故障检测G-mean对比图;
图10为在工况4下分别采用四种典型故障时各个算法的故障检测G-mean对比图;
图11为在工况1下采用混合故障时各个算法的故障检测精度对比图;
图12为在工况1下采用混合故障时各个算法的故障检测G-mean对比图。
具体实施方式
本发明的一种基于支持向量数据描述和迁移学习的航空发动机故障检测方法,如图1所示,包括以下步骤:
步骤1:在发动机标称状态下收集历史飞行数据作为源域数据;
所述飞行数据包括多组,每组飞行数据来自10个传感器,包括:高压转子转速N
收集的标称状态历史运行数据包括了故障数据和非故障数据,其中,故障数据类型包括风扇故障数据、压气机故障数据、高压涡轮故障数据和低压涡轮故障数据,故障数据包括其中一类或者多类数据,非故障数据在1000个以上,故障数据在500个以上。
步骤2:在发动机当前退化程度下收集飞行数据作为目标域数据;
收集当前退化程度下的飞行数据,包括非故障数据和故障数据,非故障数据在500个以上,非故障数据较少,数据为0到50个
步骤3:给定模型以及算法训练过程的所有参数,包括核函数参数、算法精度容忍值、源域及目标域的松弛参数、源域与目标域之间的平衡参数;
其中,采用常见的高斯核函数进行映射,其定义如式所示,
核函数参数选择σ=0.3。
算法精度容忍值:算法容忍值选择ε=1e-4。
源域及目标域的松弛参数:源域与目标域的松弛参数
源域与目标域之间的平衡参数:平衡参数λ利用目标域数据进行5折交叉验证确定,其搜索范围为{0.05,0.10,…,1.00},共20个候选值。
步骤4:初始化源域SVDD模型的参数;
初始化SVDD模型的参数α
步骤5:利用源域数据,采用SMO算法训练源域SVDD模型,得到相关的参数;
SVDD模型为一个超球体,通过球心和半径确定。考虑只包含正类样本的训练集{x
其中,变量a为SVDD的球心,R为SVDD的半径。C为松弛参数,用于控制离群点的数量。SVDD需要最小化球体的半径,因此SVDD模型的数学描述为:
采用拉格朗日乘子法将约束代入损失函数,得到拉格朗日函数:
其中,α
根据式(6)可以进一步推出约束:
0≤α
将式(4)(5)(6)代入拉格朗日函数(3),得到问题(2)的对偶问题:
s.t.0≤α
上述过程满足KKT(Karush-Kuhn-Tucker)条件:
于是有,对任意的训练样本x
将样本映射到高维空间,并通过核函数来实现高维空间中的内积运算。假设映射为φ(x),核函数的为k(·,·)。本发明选择高斯核函数进行实现,其具体形式为:
其中,σ>0是高斯核的带宽。
于是,原始问题变为:
s.t.‖φ(x)-a‖
对偶问题变为:
s.t.0≤α
求解该问题即可d得到球体球心和半径:
其中,x
对测试样本x
对比公式(14)和(15),可以看到最后一部分是相同的,因此可以定义:
因此测试样本x
其中sign(·)为符号函数,其定义为:
有时候训练集中还可能包含负类的样本,正类样本应尽量在超球体内部,而负类样本尽量在超球体外部。考虑训练集{(x
s.t.‖φ(x
‖φ(x
ξ
其对偶问题为:
s.t.0≤α
0≤α
对于测试样本x
样本的预测标签为:
采用序贯最小优化(Sequential Minimal Optimization,简称SMO)算法求解问题(21),该算法基本思路是选择两个待优化的变量,然后固定其余的参数,因此可以将问题转化为单变量的二次规划问题,从而容易求解。一直重复这个步骤直到收敛。因此SMO的算法可以描述为如下两个步骤:
1.选取需要更新的两个参数
2.固定选中参数之外的所有参数,求解该二次规划问题
首先考虑两个变量的解析解,不妨设选择的两个变量为α
将除α
记
将r=y
记缓存向量:
因此,α
则α
很容易求出α
若y
α
α
若y
α
α
值得注意的是,缓存向量也需要更新,根据其定义,容易得到其更新公式:
对于更新参数的选择,本发明采用一种启发式的选择,具体选择方式为:
首先选择支持向量中半径差最大的两个参数进行优化,直到所有的支持向量的半径一致。选择两个半径不一致的支持向量,其中必定有一个违反了KKT条件,选择支持向量半径差最大的两个参数是为了让优化的幅度更大。观察公式(22)和(28),两个向量的半径差就等于缓存向量E的差值。
如果支持向量的半径都一致,则将该半径作为判断依据,遍历所有的非支持向量,寻找违反KKT条件的作为优化的第一点,在支持向量里寻找第二点。为了使优化的幅度尽量大,观察式(30),优化的幅度主要与E的差值有关,因此选择与第一点的值的差最大的支持向量作为第二点。
在具体判断半径是否相等和是否满足KKT条件时,并不要求严格相等,通常可以给定一个容忍值ε,该值越大,算法的精确度较低,算法收敛较快,该值越小,算法精确度较高,算法收敛较慢。
于是SVDD算法可以总结如下:
输入:训练集{(x
训练:
1)选择半径差最大的两个支持向量;
2)若差值小于等于ε,计算支持向量的半径,转到步骤3;否则将这两个支持向量作为待优化的点,转到步骤5;
3)循环遍历非支持向量,如果违反KKT条件,将其作为优化的第一点,跳出循环转到步骤4;如果未发现违反KKT条件的点,转到步骤6;
4)循环遍历支持向量,寻找与第一点的E差值最大的点,作为优化的第二点;
5)根据公式(29)-(33)对选出的参数进行优化,转到步骤1;
6)结束训练。
步骤6;初始化目标域模型的参数;
初始化目标域参数
步骤7:利用目标域数据以及源域SVDD模型,采用SMO算法训练SVDD-TL模型;
根据源域数据
目标域数据为:
ξ
其中,a
该问题的拉格朗日函数为:
分别对R
代入(36),得到对偶问题:
求解该问题得到球心和半径:
对于测试样本x
样本的预测标签为:
采用SMO算法求解式(40),参考步骤(25)-(33),得到优化更新公式:
上式中缓存向量的定义为:
α
若y
α
α
若y
α
α
缓存向量更新公式方式为:
于是,SVDD-TL算法的流程总结如下:
输入:源域数据
训练:
1)初始化源域参数;
2)利用源域数据,计算得到源域SVDD模型参数
3)初始化目标域参数;
4)寻找目标域中半径差最大的两个支持向量;
5)若差值小于等于ε,转到步骤6;否则将这两个支持向量作为待优化的点,转到步骤8;
6)循环遍历非支持向量,如果违反KKT条件,将其作为优化的第一点,跳出循环转到步骤7;如果未发现违反KKT条件的点,转到步骤9;
7)循环遍历支持向量,寻找与第一点的E差值最大的点,作为优化的第二点;
8)根据公式(46)-(51),对参数进行更新,转到步骤4;
9)训练结束。
步骤8:将实时飞行数据输入故障检测模型,检测发动机处于正常状态还是故障状态,具体为;
首先根据公式(43)(44)计算半径和距离,然后根据公式(45)计算预测标签。
针对本发明内容进行了仿真实验,实验中使用的发动机模型为涡扇发动机模型。主要部件包括了风扇、压气机HPC、燃烧室、高压涡轮HPT、低压涡轮LPT和微喷管。其示意图如图2所示,为了明确发动机内部参数的意义,对图中的部分截面进行了编号,包括风扇进口截面2、风扇出口截面22、压气机出口截面3、高压涡轮出口截面42和低压涡轮出口截面46。
在航空发动机性能退化或者发生故障时,发动机的健康参数会发生变化,因此,本发明通过改变发动机的健康参数来模拟发动机的性能退化和故障的发生。性能退化是发动机整体性能都发生了下降,因此将发动机部件的健康参数都下降(部分参数是增加)了1%来模拟发动机的性能退化。而发动机的故障是通过改变单个部件的健康参数来进行模拟。本次实验共设置了四种故障,分别为风扇故障、压气机故障、高压涡轮故障、低压涡轮故障。收集的数据包括:高压转子转速N
为了测试模型的泛化能力,实验使用了从不同工况下收集的数据。通过改变高度和飞行马赫数来改变工况,实验中的四种工况如表1所示。
表1四种工况详情
为了验证SVDD-TL的有效性,本文采用了三种基础方法作为对比:
Baseline1:采用源域的数据训练SVDD模型
Baseline2:采用目标域的数据训练SVDD模型
Baseline3:采用源域和目标域的数据混合在一起训练SVDD模型
首先,分别采用风扇故障、压气机故障、高压涡轮故障、低压涡轮故障等四类故障数据进行实验。将发动机标称状态下收集的数据作为源域数据,退化状态下的数据作为目标域数据。实验中源域的正常样本1000个,故障样本500个,考虑到实际场景中目标域的正常样本充足,但是故障样本稀缺,因此目标域中选择了正常样本1000个,故障样本25个,源域与目标域故障样本比值为。实验测试样本为目标域的数据,其中正常样本100个,故障样本100个,测试集中的样本均未在训练集中出现过。表1和表2为各个类别故障检测的测试精度和G-mean值。
表2各个算法的测试精度
表3各个算法的G-mean值
为了更加直观地对比这几种方法地故障检测效果,将上述表格中地结果用直方图展示,结果如图3到图10所示。从测试精度的角度来看,在工况1、工况2以及工况4,对于四类故障数据,SVDD-TL的检测精度是四种算法中最高的,另外三种基础算法中,Baseline2比SVDD-TL略低,但是最接近,Baseline1算法的检测精度最低,Baseline3略高,但是不够稳定。在工况3中,采用风扇故障数据实验、高压涡轮故障数据实验的结果中,SVDD-TL算法的测试精度略高于Baseline2,明显高于其余两种算法;在低压涡轮故障数据实验的结果中,SVDD-TL的测试精度明显高于其它三种算法;在压气机故障数据实验中,Baseline3算法的精度最高,SVDD-TL与Baseline2次之。从G-mean角度来看,其大致趋势与测试精度类似。
整体看来,SVDD-TL算法的故障检测性能最好,Baseline2其次,Baseline1最低,Baseline3最不稳定。SVDD算法是单分类算法,可以仅用正类数据进行训练,也可以加入负类数据进行训练。Baseline2算法直接使用的是目标域的数据,尽管目标域中的故障数据稀少,但是正常数据非常多,因此,Baseline2算法在目标域测试中表现出的性能很好。而Baseline1算法仅使用了源域的数据,虽然源域不管是正常数据还是故障数据都比较丰富,但是由于源域与目标域之间存在差异,因此用源域数据训练出的模型在目标域中的测试结果不好,在大多数的工况下测试精度都只有50%-70%。而Baseline3算法将目标域和源域的数据混合在一起进行训练,可以获取最多的信息,因此该方法可以有非常高的测试精度,但是,由于目标域与源域之间可能会存在较大的差异,因此源域的数据也可能对模型的性能造成负面影响,所以Baseline3方法的检测性能表现非常不稳定。SVDD-TL算法同样使用了源域和目标域的数据,然而,这两个域的数据并没有被简单的混合,而是将源域的数据放在了辅助的位置,目标域的数据放在主要位置。因此,该方法可以较好地避免由于域差异带来的负面效应,还可以通过源域的信息来增强模型的检测性能。因此,SVDD-TL模型在实验结果中表现出了最好的性能。
在实际的航空发动机故障检测中,故障不会只有一类,所有的故障都有可能发生。因此接下来,使用混合类别的故障数据进行实验。实验结果如表4和表5所示,图11和图12为对应的直方图。
表4各个算法的测试精度
表5各个算法的G-mean
从直方图中可以明显看出,SVDD-TL算法的故障检测性能要优于其余3中算法。从测试精度和G-mean两个角度来看都有相同的结论。在工况1、工况3、工况4下,SVDD-TL算法的测试结果要明显好于其余算法,在工况2下,SVDD-TL算法与Baseline2算法的测试精度以及G-mean在同一水平,并且明显高于其余两种算法。在3.4.1小节的单类别航空发动机故障检测实验中,Baseline3算法的检测结果具有较大的起伏,有的情况下结果比较好,有的情况下结果比较差,但是在本小节的混合类故障检测实验中,检测结果并不理想,其检测精度和G-mean值都远低于SVDD-TL算法,这是由于实验采用了混合类的故障数据,源域和目标域的数据分布更加全面,也导致了源域与目标域之间的域差异更加明显,所以直接利用源域数据进行训练的方式对模型的负面影响也更明显。因此,尽管Baseline3算法同时使用了源域和目标域的数据,其检测结果并不尽人意。而SVDD-TL算法也同时使用了源域和目标域的数据,但是该算法将源域数据训练出的模型参数放在了辅助的位置,并将其再和目标域数据进行训练,因此得到的模型在目标域中的测试结果较好。综合看来,本发明所采用的方案比较适合进行航空发动机故障检测。
机译: 基于支持向量数据描述的特征提取与分类方法及其系统
机译: 基于支持向量数据描述的特征提取与分类方法及其系统
机译: 基于支持向量数据描述的特征提取与分类方法及其系统