姚艳玲,袁化成,陆 超,唐晓澜,黄爱华
(1.南京航空航天大学 能源与动力学院,江苏 南京 210016;2.中国航发四川燃气涡轮研究院,四川 绵阳 621000;3.西南石油大学 计算机科学学院,四川 成都 610500;4.成都航空职业技术学院,四川 成都 610000)
航空发动机是飞机的主要动力装置,由于其长期在高温、高压、高速、强振动等异常恶劣的环境下工作,所以存在较大的风险,易发生机械故障,甚至造成系统崩溃。航空发动机喘振就是影响飞机性能和安全的主要故障现象之一,不仅影响发动机工作状态,严重时还会造成重大安全事故,引起人员和财产的重大损失。因此如果能够对航空发动机喘振进行及时准确的诊断并采取相应消喘措施,能够避免发动机因喘振故障而导致严重事故的发生。
所涉及的航空发动机传感器试验数据属于多变量时序型数据,可将航空发动机喘振的诊断问题看作是一种特殊的故障检测和诊断问题。许多学者对机械系统故障检测和诊断开展了众多方法研究,可概括为三大类[1]:基于模型的方法[2-4]、基于知识推理的方法[5-7]和基于数据驱动的方法[8-11]。基于模型的方法主要是基于系统动态数学模型的方法,即通过构建数学模型来探寻对象运行规律,适用于具备过程精确的定量数学模型,该类方法也是最早最为深入的方法,优点是充分利用了系统内部的深层知识,利于系统的故障诊断。
基于数据驱动的方法无需建立精确的复杂系统模型,也无需大量的领域专家知识和知识的表达推理机制,但是通常需要大量准确的数据。随着人工智能技术的飞速发展,深度学习已经在很多领域都取得了卓越的成果,例如:自然语言处理[14]、图像识别[15]、入侵检测[16]等,越来越多的学者也开始将深度学习应用于故障诊断和预测。在国外,Elashmawi等[17]提出了一种基于人工神经网络的故障诊断模型,该模型具有监视、分析和诊断燃气涡轮发动机故障的在线处理功能,具有双重优势。国内的吴斌等[18]以涡扇发动机为对象,引入了深度置信网络(Deep Belief Network,DBN)对发动机部件性能衰退故障进行诊断研究,解决了浅层神经网络在诊断时存在泛化能力欠缺的问题,并提高了发动机气路部件性能衰退故障的诊断精度。Yuan等[19]利用长短时记忆网络(Long Short Term Memory Network,LSTM)对航空发动机进行故障诊断和剩余寿命预估。Chen等[20]基于卷积神经网络(Convolutional Neural Networks,CNN)、深度神经网络(Deep Neural Networks,DNN)和LSTM提出了一种混合深度计算模型(Hybrid Dilated Convolution,HDC),该模型在航空发动机气路故障诊断上的准确率能达到83%。上述模型虽然都能达到不错的诊断准确度,但是很难在模型大小、运算效率以及模型诊断准确度上都做得较好。
就某型航空发动机的燃烧室燃油喷嘴压力(Ptk)、发动机高压压气机转子转速(N2)、发动机涡轮后温度(Tt6)等多个主要传感器数据,在序列到序列(Sequence to Sequence,Seq2Seq)模型的基础上提出了一种基于CNN-Seq2Seq的面向航空发动机喘振故障诊断的神经网络模型。CNN-Seq2Seq是指使用卷积神经网络对传统Seq2Seq结构中的LSTM进行替换而改进过的一种Seq2Seq结构。CNN-Seq2Seq简化了模型结构,使得模型具备并行计算的能力,从而大幅提高计算效率并降低诊断耗时。实验结果表明该模型在显著降低模型大小和计算量的同时,在精确率、召回率和F1 Score上仍然获得了94.3%、92.1%、93.2%的表现,同时单次预测耗时仅需2 ms。
普通循环神经网络(Recurrent Neural Network,RNN)[21]难以处理长距离的依赖,存在梯度爆炸和梯度消失的问题。LSTM[22],是循环神经网络的一个变种,成功解决了原始RNN的缺陷,成为当前比较流行的RNN,在语音识别、图片描述、自然语言处理等时间序列相关领域中成功应用。LSTM通过特殊的“门”结构,记忆一定时间范围内的有效信息,并适时遗忘无用的“记忆”,解决了“长时依赖”问题。LSTM通过“门”结构控制数据流,“门”结构的实质是一个全连接非线性变换,输出取值在0~1之间。LSTM有3种“门”结构:① 遗忘门,它决定上一时刻的单元状态Ct-1保留多少信息到当前时刻Ct;② 输入门,它决定当前网络输入Xt保留多少信息到当前状态Ct;③ 输出门,它决定当前单元状态Ct保存多少到当前输出值ht。
一个CNN[23]由若干卷积层、池化层、全连接层组成,可以利用这些子结构构造不同的CNN。CNN能够进行卷积运算,从局部输入图块中提取特征,因此在计算机视觉问题上表现出色。CNN的特性使其在空间问题上特别擅长,时间实际上也可以看作一个空间维度,就像二维图像的高度和宽度,不包含RGB通道值,被称为一维CNN。对于分类和时间序列预测等简单任务,小型的一维CNN已经可以媲美RNN,并且计算代价通常要小很多。一维卷积层可以识别序列中的局部模式,从序列中提取局部的子序列,但其对整体时间步并不敏感(整体时间步是指远大于子序列的时间步),可将许多卷积层和池化层堆叠起来以学习更长的时间步。如果所处理任务的序列数据整体顺序非常重要,例如温度的连续预测,CNN稍显力不从心,此时最好采用RNN用以捕获更长序列的潜在信息。但分析讨论内容,航空发动机喘振故障往往只依赖于前面较短时间步的信息,故障的发生往往是瞬时的,在故障发生前的极小段时间内已可见端倪,只不过人类无法定义这种变化,但使用神经网络来学习并不困难。因此可以使用一维CNN来处理所涉及的时间序列数据。相较于RNN,CNN计算代价要小得多,在序列问题的整体顺序不重要时可以替代RNN。针对所研究问题,CNN相较RNN的最大优势是能够提供并行计算的能力从而大幅提高计算效率。
Seq2Seq是在输出长度不确定时采用的模型,一般用于自然语言处理中的机器翻译、人机对话、聊天机器人等任务。将中文翻译为英文时,英文句子的长度可能比中文长,也可能比中文短,输出句子的长度难以确定,输入序列和输出序列通常也没有相同的长度,Seq2Seq的提出就是为了解决这样的问题,其结构如图1所示。
图1 Seq2Seq模型结构
Seq2Seq是一种Encoder-Decoder结构,Encoder负责将输入序列压缩成指定长度的上下文向量,这个向量可以输入序列的语义表达。图1中将Encoder的最后一个隐藏状态作为上下文向量C,也可以对最后一个隐藏状态做一个变换得到上下文变量,也可以对所有的隐藏状态做变换得到上下文向量。Decoder负责根据上下文向量生成对应的序列,图中的方式是直接将上下文向量作为初始状态输入到Decoder中预测输出序列,还可以将上下文向量C当作每一步的输入。
Seq2Seq模型一般采用LSTM作为Encoder和Decoder的组成部分,这是由于RNN设计的目的就是为了处理这样的时间序列数据,然而这样的Seq2Seq模型不能进行并行运算,因此存在计算效率低、计算耗时长的问题。相比于RNN,CNN可以实现并行计算,其计算代价要小很多,一维CNN也能用于解决时间问题,因此使用一维CNN代替传统Seq2Seq模型中的LSTM结构,可以降低喘振诊断模型的网络复杂度并提高计算效率,达到针对喘振故障能够在毫秒级时间内进行诊断的效果。
面向航空发动机喘振提出了一种基于CNN-Seq2Seq的故障诊断模型,该模型使用CNN和改进后的Seq2Seq作为主要模块进行构建。
模型中的CNN为没有池化层的一维CNN。CNN不仅可处理空间问题,还能被应用到某些时间问题上。Conv1D可以识别时间序列中的局部模式,从序列中提取局部的子序列,但其对整体时间步并不敏感。相较于RNN,一维CNN能够实现并行计算并且计算代价要小很多。改进后的Seq2Seq模型也主要是依托这样的一维CNN来构建,旨在提高模型计算速度。故障诊断模型的主要模型结构如图2所示。
图2 模型架构图
由于一般的Seq2Seq模型主要用以自然语言处理,需要对单词做词嵌入(Embedding)处理,而模型输入数据为经过标准化处理后的传感器时序数据,无需再经过Embedding层,模型将直接计算经过一系列预处理后的数据。Seq2Seq的提出是为了解决不定长序列的生成问题,Seq2Seq的作用是对未来传感器数据进行预测,通过对Seq2Seq进行改进,将其内部的编码器和解码器中的LSTM层更换为CNN层,提供高性能的并行计算,加快训练速度和预测速度。在Seq2Seq模型中,其模型的输入为(批量大小、输入序列长度、序列特征个数)的三维数组,通过编码器对其进行压缩得到一个二维的特征向量,也就是图2中的C,接着将编码向量C输入到解码器中得到预测序列数据结构与其输入结构一致的三维数组,只是第二维的序列长度稍有变化。CNN层对预测的时间序列数据进行分析,挖掘传感器采集数据中潜在特征信息,对是否发生喘振故障进行判断。最后经过一个全连接层和Sigmoid激活函数,将卷积后的数据经过维度变换后最后输出结构为(批量大小、二分类判定结果)的二维数组。Ligh4S模型将判断结果转换为0~1之间的小数,Sigmoid公式定义如下:
(1)
式中:x为输入至该激活函数的数据值,经过Sigmoid函数处理后的值大于等于0.5时将被判断为发生喘振故障。上述所提到的批量大小设置为300,输入序列长度为64,序列特征个数为6,预测序列长度为20。
选取某型航空发动机进行试验产生的部分历史数据作为数据集训练模型,试验数据由每个时刻从多个传感器采集到的数值数据组成,包括核心机失速、增加推力、惯性起动切油、起动失速、高温或低温起动时爆燃、压气机畸变等不同场景下通过试验获取到的数据。从多个传感器中选择发动机压气机(高压转子)出口总压(Pt3)、发动机压气机高压转子转速(N2)、发动机油门杆(PLA)等与航空发动机喘振故障密切相关的传感器。喘振故障时间点由专家根据相应规则和经验进行人工标注,例如当PLA传感器的数值曲线趋于平稳的时候,一旦Pt3传感器出现突升、突降、或剧烈抖动后直到回归平稳的这段区间便是发生喘振的区间,该区间内的每一个时刻都在发生喘振,其余时刻为正常工作状态。经人工标注后,数据集中正常点与喘振点的比例约为95∶15。
将数据集打乱并按照7∶2∶1的比例拆分为3部分:训练集、验证集、测试集。在训练数据上训练模型,在验证数据上评估模型,一旦找到最佳参数在测试数据上做最终评估。
数据中有时会有缺失值,需要对缺失值进行填充,以发动机每秒的运作频率为基准,填充方法为使用缺失值前后发动机频率一半数量的时刻的平均值进行填充,如果选用时刻点过多或过少,得到的缺失值并不具备传感器数据在该段时刻的局部特征,3个数据集合中均采用该方法对缺失值进行填充。
不同传感器具有各种不同的取值范围,将每个传感器分别做标准化处理,消除量纲带来的干扰,使其均值为0、标准差为1。
(2)
(3)
最后在时间维度上依次采取如下公式进行数据标准化:
X-=Tmean,X÷=Tstd
(4)
其中,X为3个集合中的任意一个,即验证集和测试集上的数据在做标准化处理时使用的是训练集上的平均值和标准差。同时减法和除法操作都是在时间维度上进行。
采用滑动窗口的形式对时序数据进行截取,构造模型的输入数据。具体方法如图3所示,是以固定大小的窗口对各传感器采集到的数据按照固定大小的滑动步长分别获取数据。以滑动窗口的形式进行数据提取可以增加数据集中的样本数量,给Ligh4S模型的训练提供更多数据,试验数据采集过少时可以通过较小的滑动步长来获取更多的样本。同时滑动窗口在采样时会存在重叠的子窗口,这会使得模型能更容易地学习到故障序列的特征。滑动窗口的大小即为单个训练样本的时间步长。
图3 使用窗口滑动截取数据
实验所使用CPU为Intel Core i9-9900K Processor@3.60 GHz,内存为16 GB,GPU为Geforce RTX 2080Ti。模型搭建采用简单易上手的高级深度学习框架Keras,Keras后端引擎选择TensorFlow。
在数据集方面,研究了多型涡扇发动机在空中惯性起动、空中风车起动、进气畸变条件下的地面起动,以及起动失速/喘振等12个不同场景下通过试验获得的总共30万条左右的多个传感器数据,作为模型的训练数据、测试数据与验证数据。
使用数据集中正常点与故障点的比例约为95:15,属性不平衡的分类问题,使用准确率对故障诊断性能进行评估是不合理的。选择精确率(Precision)、召回率(Recall),以及F1 Socre对故障诊断模型进行性能评价。因为在模型完全识别出正常点并将所有喘振点也判断为正常点的情况下,此时模型准确率也能达到95%,因此需要选择其他指标对模型进行评估。
为了能够将模型与其他模型进行对比评估。以Preoision、Recall和F1 Score作为评估指标,将本文模型与其他神经网络CNN、RNN、LSTM的测试结果作对比,3个模型的输入维数都与CNN-Seq2Seq模型一致,均为(批量大小、输入序列长度、序列特征个数)的三维数组,其中批量大小、输入序列长度和序列特征个数与2.1节中的CNN-Seq2Seq模型的输入设置一致。
其中基于CNN的故障诊断模型结构由2层一维卷积层和2层全连接层组成。第1层卷积层设置的卷积核个数为24,卷积核大小为1;第2层卷积层设置的卷积核个数为12,卷积核大小为8;全连接层的节点数分别为32和1。基于RNN的故障诊断模型结构由1层RNN层和2层全连接层组成,其中RNN层的节点数为32,全连接层的节点数为32和1。LSTM由1层LSTM层和2层全连接层组成,其中LSTM层的节点数为32,全连接层的节点数为32和1。结果如表1所示。
表1 各模型的实验结果对比
由表1的实验结果可知,本文模型相比其余3个模型来说性能表现更好,这说明在数据集上的表现来看,使用基于CNN-Seq2Seq的喘振诊断模型更好。同时只比较LSTM和CNN来看,CNN在喘振故障预测的效果基本可以媲美LSTM,而传统RNN的效果较差,这是传统RNN存在梯度下降或爆炸等问题从而难以处理长时依赖而导致的。
针对航空发动机喘振的诊断过程耗时不能太长,因此模型在做单次运算的时间损耗不能太大,否则就失去了研究意义。对模型做100次测试,其耗时情况如图4所示。
图4 AMSDPNN模型预测测试耗时曲线
从图4中不难发现,模型单次诊断平时耗时仅需2 ms。所以所提出模型在保证Precision、Recall及F1 Score 3个评估指标维持高水准的同时,其预测喘振故障的时间也非常低,因此能够实现对航空发动机喘振的提前诊断。
基于某型航空发动机上的多传感器试验数据,使用窗口滑动的方式截取子序列构建时序数据集并对其进行标准化,之后提出了基于CNN-Seq2Seq的针对航空发动机喘振诊断的神经网络模型,该模型主要基于使用CNN改进后的Seq2Seq。实验结果表明,该模型能够以极短的时间诊断出航空发动机的喘振故障,同时Precision、Recall和F1 Score能达到不错的水平。