基于集成KPCA的非线性工业过程状态监测
2023-07-07童楚东
郑 丹 陈 路 童楚东
(宁波大学信息科学与工程学院 浙江 宁波 315211)
0 引 言
随着复杂工业系统及智能传感技术的快速发展,故障检测在确保过程安全中起到了重要的作用并得到广泛研究[1-3]。多元统计过程监测(MSPM)是最为典型的一种数据驱动方法[4-6],其中主成分分析(PCA)、偏最小二乘(PLS)和独立成分分析(ICA)是较为常用的[7-11]。上述这些方法多用于处理线性过程,当处理复杂的非线性数据过程时往往表现不佳[12-13]。
为了克服这个缺点,人们引入了核函数来解决,如KPCA[14],KPCA是一种进行非线性降维的有力工具,其主要思想是将输入数据通过隐式非线性映射映射到高维特征空间中,然后在此空间中对数据进行分析,通过计算T2和SPE统计量来监测过程的运行状态。与其他的线性方法相比,KPCA较好地解决了非线性数据监测问题,但是其性能很大程度上受核函数及核函数参数宽度的影响,截至目前依然没有较好的标准来确定核函数及其参数宽度。而不同的核函数及参数可能只对某些特定的故障有较好的监测性能,对另一部分的故障则不能很好地监测。也就是说不同的故障需要不同的核函数及其参数来最大化其故障监测效果。
为了能有效地监测故障,本文提出一种基于集成学习的KPCA非线性工业过程状态监测方法(IKPCA)。集成学习的基本思想是将多个解组合成一个整体解,而这个整体解的性能总是能明显优于单个解的结果[15]。基于这个启发,我们发现选择不同核函数及参数可以很容易地获得KPCA模型的多样性,然后通过贝叶斯推理,将不同子模型的监测结果进行组合,产生新的集成结果。这种方法不仅对核函数及参数的选取不敏感,而且也大大提高监控性能。
1 基本方法
KPCA能有效提取非线性特征。KPCA首先是将非线性数据映射到特征空间中,然后在特征空间中进行主成分分析,以提取主要成分。假设原始数据为X=[x1,x2,…xn]∈Rm×n,其中:m为数据量;n为变量数。首先通过映射函数φ将数据映射到特征空间。那么特征空间数据的协方差矩阵可以表示如下:
(1)
式(1)的特征值λ和特征向量V一定满足:
λV=CV
(2)
由于C是未知的,所以式(2)中的特征值与特征值向量并不能直接求出,这时可以通过引入非线性变换来解决,在式(2)的左右两边同时乘以φ(xj),如下:
λφ(xj)V=φ(xj)CV
(3)
式中:V为所有λ≠0的特征向量,且都存在于特征空间中。因此一定存在系数ai(i=1,2,…,n),使得:
(4)
我们知道核矩阵可表示为:
Kij=K(xi,xj)=φ(xi)φ(xj)
(5)
式中:K(xi,xj)为核函数。将式(1)与式(4)代入式(3),然后就将求C的特征值和特征向量转换为求取核矩阵的特征值与特征向量,如式(6)所示。
nλa=Ka
(6)
式中:a为特征向量。经过计算最后我们需要的特征空间数据映射结果如下:
(7)
式中:p为选取的特征值个数,可根据贡献率确定p的值。在监测工业过程时根据指标的不同变化判断过程是否有故障发生。常用的监测指标是基于距离的监测指标,T2统计量与SPE统计量,具体计算过程如下:
T2=tTΛ-1t
(8)
式中:t为特征向量;Λ为根据排序选出特征值构成的矩阵。
(9)
式中:n0为非零特征值的个数,通过判断T2统计量与SPE统计量是否超过控制限来监测过程是否正常。传统KPCA过程监测中使用频率较高的核函数有如下几种。
Gaussian Kernel:
(10)
Ploynomial Kernel:
k(x,y)=(1+
(11)
Cauchy Kernel:
(12)
式中:c、d和e为各个核函数的参数。基于传统KPCA故障监测的一般步骤如下,过程一般分为离线建模部分和在线监测部分。
离线部分:
步骤1获取训练数据并将训练数据标准化,统一量纲。
步骤2选取合适的核函数以及其参数构建KPCA模型。
步骤3将训练数据通过非线性映射,映射到特征空间并计算主成分。
步骤4通过步骤3得到主成分后计算T2与SPE控制线。
在线部分:
步骤5收集在线数据,并进行标准化。
步骤6根据离线训练好的模型计算T2统计量与SPE统计量。
步骤7将T2统计量与SPE统计量与控制限进行比较,如果T2统计量与SPE统计量都低于控制限为正常,否则为发生故障。
传统的基于KPCA故障监测方法很好地解决了在实际生活中遇到非线性数据的问题,但核函数及参数的选取是否合适对最终监测效果有很大的影响,单一的KPCA模型并不能保证对每种故障都有好的监测效果。因此,为了能更有效地进行过程监测,应该根据特定的故障信息选择特定的核函数及参数,建立模型。然而,大多数情况下故障信息是不可知的。在这种情况下仅凭经验确定也显得极其盲目,目前依然没有较为理想的选取方法,如果不幸选择了一个差的模型,监测性能会大大降低。
2 改进非线性故障检测的IKPCA
2.1 IKPCA监测方法
基于KPCA的故障检测模型检测效果不稳定,对核函数与核函数参数选取敏感。为了克服基于单一KPCA模型的缺点,将集成学习应用到KPCA模型中。在监测过程时不是选择单一的核函数及参数,而是选择一系列具有不同宽度的核函数。IKPCA通过将不同子模型的结果进行组合,构成最终决策。由集成学习的特征可知,这个最终决策的性能总是能明显优于单个模型所得到的结果。通过这个方法可以大大提高故障的检测效率和稳定性。现在面临的问题是怎么把不同子模型的监测结果合理组合到最终决策中。我们知道每个子模型都有自己的核函数及核函数参数,在监测过程中可以得到不同的检测结果。这里利用了贝叶斯的方法,将常规的检测统计值转化为各个子模型的故障概率,接着进行融合进而得到最终决策。
在第一次集成时,选取一个核函数,以高斯核函数为例,如式(10),并选取t个不同宽度的核函数参数。
(13)
式中:i=1,2,…,t;c表示核函数参数。利用选好的核函数及不同宽度参数构造出不同的基本KPCA模型,那么我们有:
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
将同一核函数不同参数的子模型监测结果通过前面的计算全部转化为故障概率后,我们可以通过下面的加权组合方法进行组合。得到一次集成后的监测统计量:
(23)
(24)
我们只完成了对同一核函数不同参数的集成,依然面临着选择核函数的问题,如果选择不当,也可能会出现对部分故障监测效果不好的情况。接下来要把第一次集成的结果继续进行融合,获得第二次集成结果,以屏蔽选取核函数对检测结果的影响。具体计算可通过如下公式完成:
(25)
(26)
最终结果我们可以通过显著性水平α判断所监控的过程是否发生故障。当IT2<α且ISPE<α时判断为正常,其他情况则判断为故障。具体流程如图1所示。
图1 IKPCA流程
IKPCA通过对不同KPCA子模型进行集成,增强了核函数及参数选取的鲁棒性,同时从图1可以看出,IKPCA计算量较大,需要占用较多的运算资源,可以通过分布式计算方法进行计算,在多个服务器上并行运行,保证计算时间,在提高监测效果的同时保证监测效率。
2.2 IKPCA监测步骤
基于IKPCA过程检测的具体步骤如下,实现过程包括两个阶段,离线建模和在线检测。
离线建模:
步骤1收集训练数据X∈Rm×n,m为变量数n为收集的样本数,对数据进行标准化。
步骤2选取h个核函数,并为对应的核函数分别选取t个不同宽度的核函数参数。
步骤3使用选好的核函数及参数构造KPCA。
步骤4提取子模型的非线性主成分。
步骤5计算T2与SPE控制限。
在线检测:
步骤6将新的数据样本进行标准化。
步骤7提取新样本数据的非线性主成分。
步骤8计算样本的T2统计量与SPE统计量。
步骤9利用贝叶斯方法,把得到的监测统计值通过式(15)-式(22)转化为故障概率。
步骤10用式(23)-式(24)计算出第一次集成后的监测指数ET2与ESPE。
步骤11重复上面的过程直到计算出所有核函数的ET2与ESPE。
步骤12将所有同一核函数不同参数融合后的结果ET2与ESPE,通过式(25)与式(26)再次进行组合得到IT2与ISPE。
步骤13通过控制线α,判断这个过程是否有故障发生,如果IT2<α且ISPE<α则为正常,否则为故障。
3 案例研究
本节我们先通过一个简单的模拟实验,验证选取不同参数与核函数对基于KPCA的故障检测结果的影响,说明选取单一的核函数及参数不能对所有故障都有好的监测性能。并使用本文所提出的IKPCA检测方法,对仿真案例进行监测,与传统的KPCA模型进行比较,评估该方法的可行性。
为了描述不同宽度参数选择对故障检测性能的影响及IKPCA检测方法的有效性,本文模拟一个简单地拥有三个变量的过程,并用不同的核函数和不同宽度参数进行分析。首先通过如下方法产生模拟数据[16]。每个数据中包含三个变量[x1,x2,x3]。
x1=β+e1
x2=β2-3β+e2
x3=-β3+3β2+e3
(27)
式中:e1、e2与e3为独立的噪声变量,且e1,e2,e3∈N(0,0.01);β∈U(0,2)。由式(27)随机产生300个数据作为正常数据用于训练产生模型。与此同时通过对其中某个变量添加噪声的方式,产生两组包含300个数据的测试样本,两种微小故障我们通过如下方法进行实现:
故障A:生成故障数据时,前100个数据正常,从第101个数据开始给第二个参数加入1.5阶跃变化。
故障B:生成故障B时,前100个数据正常,从第101个数据开始给第三个参数引入-3.5的阶跃变化。
针对这一简单过程,分别建立了四个不同的KPCA模型。具体如下,我们选取了两个核函数,高斯核函数(Gaussian Kernel)如式(10)所示,与柯西核函数(Cauchy Kernel)如式(12)所示,组成的模型我们用KPCA_G与KPCA_C表示。其中高斯核函数参数选取的参数为15m和50m,柯西核函数的两个参数为15m和50m,m为输入数据的维数,由式(27)可知m=3。对于四个不同的KPCA模型其主元个数通过方差累计贡献率确定为3。表1显示了基于不同核函数与不同宽度参数的KPCA模型对故障A与故障B的检测结果。
表1 故障A与故障B的故障检测率(%)
可以看出KPCA_C参数为e=15m的模型相对于KPCA_C参数为e=50m的模型对故障A的检查效果要更好,但是KPCA_C参数为50m的模型检测故障B时SPE为58.5%,高于e=15m的模型。同样地,KPCA_C参数为e=15m的模型与KPCA_G参数为c=15m的模型相比,前者检测故障A时T2和SPE好于后者,但后者检测故障B时SPE为63%,明显好于KPCA_C参数为15m模型对故障B的SPE。由此可见进行故障检测时参数及核函数的选取对检测结果影响巨大,不同故障可能需要不同核函数及参数最大化其检测性能。
我们利用本文提出的IKPCA检测方法对上面的示例进行检测。IKPCA对T2与SPE的检测结果与其他模型的检测结果相比较可以看出,IKPCA对我们模拟的故障A和故障B可以同时得到更好的检测结果,检测故障A时IKPCA的T2与SPE分别为55.5%和47.5%,远远高于其他四个模型,同样地,对故障B的检测率也高于其他模型,避免了选取单一核函数和单一参数导致只能较好监测部分故障的缺点。
4 TE案例研究
Tennessee Eastman Process(TE Process)是由Downs和Vogel提出的一个用于过程验证的仿真平台。目前已被广泛认可和使用。这个平台包括了五个主要的操作单元:反应器、冷凝器、分离器、汽提塔和循环压缩机,有四种反应气体(A、B、C和E)、两种液体产物(G和H)、一种副产品(F)和少量惰性气体(B),真实描述了设备、能量和装置之间的关系[17]。TE过程共有22个连续过程变量和19个非连续变量,分别由3台成分分析仪和12个操作变量采集。本文中除了反应器搅拌器的搅拌速度外,所有22个连续变量和11个操作变量都被选作用于过程检测。TE模拟器可产生21种不同类型的故障,其中包括15种已知故障类型和6种未知故障类型,具体在表2中给出。本节我们将用IKPCA和传统KPCA监测TE模型,验证IKPCA的有效性。
表2 TE过程的故障类型
训练数据集共包含960个正常情况下采集的样本,每个故障的测试数据集包含960个样本,从第161个样本开始引入故障。在故障检测中,大家一般通过经验确定核函数及核函数参数。这里我们选取了3个模型,分别是KPCA_P(基于Ploynomial Kernel的KPCA模型)参数为d=2[18]、KPCA_G(基于Gaussian Kernel的KPCA模型)参数为c=10m[19]和KPCA_C(基于Cauchy Kernel的KPCA模型)由于使用Cauchy Kernel进行故障监测的较少,所以经反复实验参数选取为监测效果较好的e=8 000。用这三个模型进行对比实验,并为不同的模型均匀选取系列参数,其中:KPCA_P参数为d=t、KPCA_G参数为c=2t-15m、KPCA_C参数为e=1 000t,t=1,2,…,8。通过这些KPCA子模型建立IKPCA。显然用于对比的三个模型也是IKPCA的子模型。建立每个子模型时保留30个主成分,显著性水平设为0.01。接下来用我们选取三个KPCA模型和IKPCA模型对21种故障进行检测。在表3中列出了四种模型对21种故障的检测率,可以看出,几乎对于所有的故障类型IKPCA都能更加准确地检测出来,避免了只能较好检测部分故障的缺点。
表3 21种故障的故障检测率
故障5是冷凝器冷却水进口温度的跃阶变化,冷凝器出口到气液分离器的流速增加,导致气液温度和分离器冷却水出口温度升高。通过闭环控制可以使分离器温度回到设定值附近。从表3的结果可以看出检测故障5时,SPE与T2统计量同时取得了较好的检测效果,避免了选取某一模型而导致的只有SPE或T2效果好的情况。故障10是4号流(C进料)是随机温度变化,四个模型对该故障检测结果如图2和图3所示。可以发现与其他子模型相比,IKPCA检测所得到的SPE和T2性能要更好。特别地,在400到600之间有许多故障样本无法被SPE统计量检测到的IKPCA的SPE几乎大部分都可以检测到。16和19是两种未知故障,从表3中可以看到IKPCA的SPE比其他模型的SPE对故障检测效果更好,更加敏感。故障20也是一种未知故障,IKPCA对故障20的T2和SPE检测率分别是81.4%和88.6%,远远高于其他模型的检测结果。由上可知IKPCA提高了故障的检测性能且避免了单一核函数模型只能对其中部分故障较好监测的问题。
图2 故障10检测1
图3 故障10检测2
5 结 语
本文针对传统KPCA监测方法的不足之处提出一种基于集成学习和贝叶斯推理的IKPCA监测方法。IKPCA首先利用集成学习方法建立多个具有不同核函数和参数的KPCA子模型,然后利用贝叶斯推理策略分两次将不同KPCA子模型的结果融合,得出最终的故障监测概率。实验结果表明,与通过经验选择单一的核函数及参数的KPCA模型相比,IKPCA模型不仅对参数及核函数的选取有更强的鲁棒性,而且可以显著地提高监测性能,保证了对每种故障能较好的监测,具有广阔的应用场景。例如,基于核的非线性故障诊断、故障识别、故障分类等,我们都可以采用这种思想,以达到更好的效果。