5.引言 1 目前,航空飞行器地面监控系统只能对超出阈值范围的参数给以报警,报警之后,留给 航空飞行器操控员应急反应处理的时间较短。航空飞行器专家在对航空飞行器事故分析时 需要逐段查看飞行曲线查找异常数据,这种方式耗时效率低,亟需一种能在各子系统状态参 数超出阈值之前,能自动识别异常变化数据的系统,提早给航空飞行器操控员以异常提示, 方便航空飞行安全部门及时处理异常情况,保障飞行安全。 针对航空飞行器智能化异常检测需求,开展基于数据驱动的航空飞行器状态智能监控 研究,利用航空飞行器历史飞行数据,设计智能监控算法,监控航空飞行器动力装置、导航子 系统、飞行控制子系统和电气子系统4大组成子系统的状态参数的变化情况,识别出飞行数 据中的各子系统状态参数的异常变化序列数据,并给以预警提示,为航空飞行器实时操控决 策和预防性维修决策提供数据支持,方便机务保障人员及时查找异常原因,避免飞行事故的 发生,保证飞行安全。 如何从大量的航空飞行器历史飞行数据中识别出异常序列的数据模式是亟待解决的问 题。针对航空飞行器飞行数据缺少标签而且异常数据较少的情况,一种可行的方法是采用 无监督机器学习算法。传统的用于异常检测的一类机器学习算法是基于距离的检测算法, 如K-Means聚类算法,Bay等采用聚类方法进行航空发动机的异常检测,Budalakoti等采 40 用K-Means聚类算法进行离散飞行数据的异常检测,该类方法首先计算飞行数据中点之间 的距离,然后找出那些离绝大多数点都比较远的点,这些点即确定为异常点。Mathews等 在哥伦比亚号航天飞机灾难的调查中,利用聚类算法监测飞机左翼的温度传感器数据,分析 其中的异常飞行模式。这类方法的最大缺点是算法对数据敏感,异常检测效果不稳定。 第二类比较流行的无监督异常检测方法是单类支持向量机(OneClasSupportVector Machine,OC-SVM )。OC-SVM先寻找一个高维核空间中的最优超平面,然后利用超平面 分离正常数据和异常数据。Das等利用OC-SVM进行异常检测,Sarah等利用线性单类支 持向量机与深度学习网络结合,进行高维大数据的异常检测,该方法的最大困难是空间内核 的构建复杂度比较高,对异常值敏感,异常检测效果同样存在不稳定性。 第三类方法是基于深度学习的算法。利用长短时记忆(LongShort-TermMemory, LSTM)网络捕获数据之间的按照时间顺序的循环依赖关系。在给定的序列长度内,正常数 据通常遵循这种依赖关系,而异常数据通常会违反这些依赖关系,使用预测误差来定义数据 的异常分数,从而识别出异常数据。丁建立等在论文《基于深度学习的ADS-B异常数据监 测模型》中提出利用深度学习网络LSTM 来检测广播式自动相关监视(Automatic DependentSurveilanceBroadcast,ADS-B)时间序列数据中的异常,WeixinLuo等在论文 RbigHitywithCltionalLSTMforAnomalyDetection 中提出利用卷积LST(e) M(e) 网(e) 络(r) 构(n) 建异(s) 常(o) 数(r) 据检测模(o) 型,(u) (o) (v) (n) (m) (m) 该方法的主要问题在于对数据样本敏感,容易产生拟 合异常数据的风险。Reddy等在论文AnomalyDetectionandFaultDisambiguationin LgeFlightData: A Multi-modalDepAuto-encodrApph 中提出了一种基于自编码器(A(r) (a) utoEncoder,AE)算法飞行数据异常检测方法,A(e) E是一(r) 种(o) 前(c) 馈多层神经网络,由编 码网络和解码网络组成,编码网络将高维数据空间转换为低维空间,解码网络将低维空间恢 复数据作为输出,通过最小化重建误差训练编码和解码网络,利用重建误差作为异常判别分 数依据,通过异常分数的高低检测异常。Reddy等通过滑动时间序列窗口划分飞行数据,作 为输入向量,利用AE算法进行飞行时间序列数据的异常检测。WangX等的论文 adVAE:ASelf-adversarialVaritialAuto-encoderwithGausianAnomalyPrior KnowledgeforAnomalyDetection、D(a) .P(n) (o) ark等的论文 A MultimodalAnomaly Detector frRbt-AsitdFedigUsinganLSTM-BasedVitinalAuto-encoder 在AE的基础(o) 上引(o) 入(o) 了变分(s) 自(e) 编码器(Var(n) iationalAutoEncoder,V(a) AE)(o) (a) (r) 的概念,将变分与深度学(a) 习结 合起来进行异常检测,该方法应用在异常检测问题上的主要困难在于确定低维空间的维度, 存在偏差,有变分下界,不能很好地捕获样本的数据模式。 生成性对抗网络(GenerativeAdversarialNets,GAN)是另一种深度学习生成模型,该 模型由用于捕获正常样本数据分布的生成网络和用于估计样本异常概率的判别网络两部分 组成。相比VAE方法,GAN是渐进一致的,没有变分下界。近年来,GAN在异常检测中 应用越来越广泛。 41 本章首先针对航空飞行器的状态参数异常检测问题进行建模;然后针对问题,设计一种 基于LSTM-GAN 组合网络的异常检测模型;最后,利用美国明尼苏达大学航空飞行器实验 室共享的飞行数据集状态监控参数进行验证实验,验证模型的有效性。 5.问题建模 2 航空飞行器状态参数的监控问题是指通过分析历史飞行数据,发现其中与期望不符的 异常数据模式。按照飞行数据异常发生时间的范围,飞行数据的异常分为瞬时异常和序列 异常。飞行数据的瞬时异常是指在某个时间点出现的单个异常点或者某一短暂时间出现的 异常点。最基本的飞行数据的瞬时异常检测方法是基于数据标准值范围的异常检测,通过 比较各个参数值与相应的标准数值范围查找异常。这种方法简单,但是不能发现飞行数据 的序列异常。飞行数据的序列异常是指在某段飞行时间内,飞行数据存在异常模式的子序 列。如图5.从图中可以看出, 1所示为某航空飞行器6个架次平飞巡航时高度变化曲线, flight1~flight4 的航空飞行器都在高度270~360m 巡航平飞,而flight5 在时刻点730~ 790 高度发生突变,ght6 在时刻点13001700 变为400m 左右的飞行高度,这两处的飞 fli~ 行数据都属于高度异常序列数据,其产生原因可能是GPS 信号发生错误或者高度传感器发 生故障。 图5.飞行数据序列异常示例 1 飞行数据异常检测问题就是从基于时间序列的飞行数据中找出异常序列数据集合。因 此,模型的输入为基于时间序列的飞行数据,v2,…, n , n 个状态参数记为v1,vm 个时刻点 记为t1,tm ,则 n 个状态参数在 m 个时刻点的监测值记作矩阵X: t2,…, 42 v1 v2 … vk … vn X = x11 x12 … x1k … x1n x21 x22 … x2k … x2n . . . . . . xi1 xi2 … xik … xin . . . . . . xm1 xm2 … xmk … xmn é . êêêêêêêêê ù . úúúúúúúúú t1 t2. ti . tm (5-1) 式中,(xi1,xi2,…,xik ,…,xin)记作Xi(i=1,2,…,m ),表示n 个状态参数v1,v2,…, vk ,…,vn 在时刻点ti 的监测值,xik (k=1,2,…,n)表示ti 时刻航空飞行器传感器采集得 到的状态参数vk 的监测值。 飞行数据异常检测模型的输出为n 个状态参数v1,v2,…,vk ,…,vn 的异常数据序列集 合A ={Av1 ,Av2 ,…,Avk ,…,Avn },其中,状态参数vk 的p 段异常数据序列可表示为集 合Avk : Avk ={Avsekq,1,Avsekq,2,…,Avsekq,p } (5-2) 式中,Avsekq,j(j=1,2,…,p)表示一段连续时刻点ta ,ta+1,…,ta+b的异常数据序列,表示为向 量Avsekq,j: vk Avsekq,j = xa,k xa+1,k . xa+b,k é . êêêêê ù . úúúúú ta ta+1 . ta+b (5-3) 飞行数据的异常检测模型以基于时间序列的飞行数据矩阵X 为输入,以异常序列集合 A 为输出,构建异常检测算法,正确识别异常序列,为航空飞行器实时操控决策、各组成部 件的预防性维修决策提供数据支持。 5.3 基于LSTM-GAN 的异常检测模型 5.3.1 模型总体结构 基于LSTM-GAN 进行飞行数据异常检测的模型结构如图5.2所示,由模型训练和异 常检测两部分组成。模型训练过程包括生成网络(GenerativeNets,GN)和判别网络 (DiscriminateNets,DN)的训练,GN 以随机生成的噪声时间序列Z 为输入,目标是尽可能 伪装成真实的飞行数据时间序列以欺骗判别网络,判别网络以真实飞行数据训练样本为输 43 入,尽可能辨别出真实飞行数据和随机噪声数据,GAN的训练过程即为GN和DN不断博 弈的过程,直至达到纳什均衡,得到的GAN网络中的GN将捕获训练序列的隐藏多元分 布,DN也被训练成高灵敏度地检测异常数据。异常检测部分以真实飞行数据测试样本 XTest为输入,利用训练好的GN计算测试样本的重构损失(ReconstructionLos,RL),判 别网络计算测试样本的判别损失(DiscriminationLos,DL),两部分相结合计算异常分数, 根据异常分数判定是否为异常数据序列。 图5.基于LSTMGAN 进行飞行数据异常检测的模型结构 2 5.2 模型训练结构 3. LSTM-GAN模型训练结构包括GN和DN两部分,模型具体组成如图5. 3所示。GN 建立两个映射函数G1:X→ Z 和G2:Z→X,函数G1 是将真实飞行数据训练样本 X 进行 编码降维到潜在空间Z,函数G2 是将潜在空间 Z 生成随机时间序列数据X。其中, Z 服 从多元正态分布,即Z~ N (0,1),利用映射函数G1 和G2 实现时间序列数据 X 的重 构,即 ^ .Xi ∈ X ,Xi →G1(Xi)→G2(G1(Xi))=Xi (5-4) DN建立两个判别函数Dx : X → P 和Dz :Z→P,Dx 判定给定的样本 X 是真实数据样 本的概率为P,其目标是尽可能区分真实数据样本和 G 生成的随机数据样本;Dz 判定给定 的向量 Z 是由真实数据样本编码得到的概率为P,其目标是尽可能区分真实样本编码得到 44 的潜在向量和随机数据样本。为了避免网络拟合异常数据风险,网络中引入掩蔽Mask层 和Dropout层,随机对神经元进行遮蔽和丢弃,提高训练网络的稳定性。 图5.GAN 模型训练结构 3 LSTM 5.3 模型基础网络结构 3. 异常检测算法的基础网络是LSTM,该网络是在递归神经网络(RecurentNeural Network,RNN)基础上发展而来的。RNN网络组成结构如图5.4所示,通常由输入层、多 层隐藏层和输出层组成,网络从输入层输入数据,并将数据信息传递给隐藏层,同一隐藏层 中的节点进行信息传递从而构成循环学习,利用大量输入数据和输出数据训练网络,调整各 层网络节点权重和偏置量,从而构建适应训练数据的网络模型。RNN是一类专门用于处理 和预测时间序列数据的神经网络,但经常出现梯度消失情况,偶尔发生梯度爆炸。为避免 RNN的梯度消失和梯度爆炸问题,LSTM网络被提出。 图5. 4 RNN 网络组成结构 LSTM网络将RNN隐藏层的每节点神经元之间构建3个门———遗忘门f、输入门 i 和 45 输出门o,通过门结构控制信息在网络中的状态,5所示。在 3个门组成的记忆单元如图5. 时间步 t 时,LSTM隐藏层的输入向量为xt,输出向量为ht,记忆单元为ct。 图5. 5 LSTM 网络门结构图 遗忘门: ft=σ(Wxfxt+Whfht-1+bf ) (5-5) 输入门: it=σ(Wxixt+Whiht-1+bi) (5-6) c(~) t=tanh(Wxcxt+Whcht-1+bc) (5-7) ~ ct=ft ..ct-1+it ..ct (5-8) 输出门: ot=σ(Wxoxt+Whoht-1+bo) (5-9) ht= t ..tanh(t) (5-10) 其中,..表示向量元素对应乘。tanh是(o) 双曲正切(c) 函数,通过记忆单元和门控单元实现历史 信息和长期状态的保存,通过遗忘门使得LSTM能够学习连续任务,并对内部状态进行 重置。 5.4 模型目标损失函数 3. 经典GAN的损失函数采用Waserstein对抗损失(以下log函数的底数是2,后同): WL=Ex~PX [o([o1-Dx G2(( lgDx x)]+Ez~PZ lg((z)))] 511) 利用Waserstein损失函数作为训练模型的目标损失函数存在梯度爆炸的风险,为了 避免该问题,在训练判别网络时,利用Waserstein距离设计目标损失函数。 对于生成函数G1:X→ Z 和判别函数Dz :Z→P,目标损失函数设定为 minmaxVZ (Dz ,G1) (5-12) G1 Dz ∈Dz 其中: 46 VZ (Dz G1)[(x))][(( ,=Ex~PX Dz G1(-Ez~PZ Dz z)] 513) Dz 表示1-Lipschitz连续函数集,即 .x1,x2∈domf,‖f(x1)-f(x2)‖≤‖x1-x2‖ (5-14) 1-Lipschitz连续函数对函数值的上界进行了约束,同时函数具有平滑性,由此可以使 网络权重的更新不会发生很大的变化,这就降低了梯度爆炸的风险,生成时间序列数据样本 的分布与真实飞行数据的数据分布相匹配,使得网络训练更加稳定可靠。 对于生成函数G2:Z→ X 和判别函数Dx :X→P,目标损失函数设定为 minmaxVX (Dx ,G2) (5-15) G2 Dx ∈Dx 其中: [(x)][(z))] ( 训练GAN 的目的是能较好地重构输入时间序列,采用以上两个目标损失函数,映射函 数的搜索空间很大,为了缩小搜索空间,引入循环一致性损失函数,如下式所示: VX (Dx ,G2)=Ex~PX Dx -Ez~PZ Dx G2(5-16) VL2(G1,G2)=Ex~PX [‖x-G2(G1(x))‖2] (5-17) 其中,‖·‖2 表示原始样本 x 与重构样本x 5-5-16) 5-17), ^差的L2 范数 。 综合式(13 )、式(和式(得到GAN 的目标损失函数 为 min max VZ (Dz ,G1)+VX (Dx ,G1,G2) (5-18) {G1,G2}{Dz ∈Dz ,Dx ∈Dx } G2)+VL2( 3.模型算法描述 5.5 基于LSTM-GAN 网络的异常检测算法描述如下。 1. 算法输入 真实航空飞行器历史飞行数据样本X={X2,…,}, 其中,Xi =(i1,i2,…, k ,…, xin )(=2,…,表示 n 个状态参数v1,vk ,…,在时刻点ti xik= X1,Xtxxxi i1,m) v2,…,v的监测值, k ( 1,2,…,表示t时刻传感器采集得到的变量vk 的监测值。(n) n) i 2. 算法输出 状态参数v1,v2,…,vk ,…,的异常数据序列集合A={,,…,,…,}。 vn Av1Av2Avk Avn 3. 算法步骤 步骤 1 数据预处理,主要包括噪声平滑、空缺值填补、数据归一化、划分数据集,使用 滑动窗口将训练样本XTrain划分为子序列,滑动窗口大小设为m,则训练样本序列分解为 其中: X1~ m ,Xm+1~2m ,…,X(n-1)m+1~nm X1~ m ={X1,X2,…,Xm } Xm+1~2m={Xm+1,Xm+2,…,X2m } 47 . X(1)={X(1)m+1,X(1)m+2,…,} n-m+1~nm n-n-Xnm 步骤 2 随机生成服从正态分布的噪声序列Z,每组序列长度也为m,即 其中: Z1~ m ,Zm+1~2m ,…,Z(n-1)m+1~nm Z1={Z1,Z2,…,Zm } ~ m Zm+1~2m={Zm+1,Zm+2,…,Z2m } . 步骤 3 训练GAN Z 。 (n-1)m+1~nm ={Z(n-1)m+1,Z(n-1)m+2,…,Znm } 置迭代次数 i 的初始值为1。 当迭代次数i<最大迭代次数,重复以下操作。 真实训练样本 X 生成潜在空间:XTinL=G1(X1~ m ,Xm+1~2m ,…,X(n-1)m+1~nm )。 重构真实训练样本X:G2(XTrainL)。(a) (r) 随机噪声 Z 生成伪时间序列数据ZS=G2(Z1~ m ,Zm+1~2m ,…,Z(n-1)m+1~nm )。 判别DZ (XTrainL)。 判别DX (ZS )。 依据目标损失函数 {G1,G2}{Dz ∈Dz ,Dx ∈Dx } 调整网络。 min max VZ (Dz ,G1)+VX (Dx ,G2)+VL2(G1,G2) 记录生成网络和判别网络的权重和偏置。 迭代次数 i 增1。 步骤 4 异常检测。 使用滑动窗口将测试样本XTest划分为子序列,滑动窗口大小为m,则测试样本序列 分解为X1~ m ,Xm+1m ,…,X(1)~。 ~k-m+1km 真实测试样本X(2) 生成潜在空间:XTestL=G1(X1~ m ,Xm+1~2m ,…,X(k-1)m+1~km )。 ^ 计算重构损失RLT[‖XT^T] 。 重构测试样本X:XTest=G2(XTestL)。 st=Ex~PX st-Xest‖ 2 计算判别损失DLTest(e) =DZ (XTesL)。(e) 计算异常分数ADScore=αRLTst(t) +(1-α)DLTest 。 AseqAseqAseq 依据异常分数输出异常飞行数据(e) 序列:A={1,2,…, m }。 48 5.模型验证与结果分析 4 4.验证实验设计 5.1 1.实验内容 为了评估LSTM-GAN异常检测模型的性能,使用明尼苏达大学的公开数据集进行实 验。首先通过网络损失值的变化验证目标损失函数设定的合理性;然后,进行异常检测算法 性能对比实验,与常见的异常检测算法K-Means、OC-SVM 、LSTM和Auto-Encoder进行 性能比较。通过公开数据集,验证算法的合理性和有效性。 2.评估指标 为全面评估所提算法的异常检测性能,实验采用准确率(Acuracy,Ac)、精确率 (Precision,Pre)、召回率(Recal,Rec)和F1 分数4个异常检测评估指标,计算公式分别如 式(5-19)~式(5-22)所示。 TN+TP Ac=TN+TP+FN+FP (5-19) Pre= TP (5-20) TP+FP Rec= TP (5-21) TP+FN 2×Pre×Rec ( 对应混淆矩阵如表5. F1= Pre+Rec 5-22) 1所示。 表5.混淆矩阵 1 检测结果 实际情况 正常样本异常样本 正常样本真正例数TP 假正例数FP 异常样本假反例数FN 真反例数TN 其中,TP表示真正例数,即实际情况和检测结果都是正常样本;FP表示假正例数,即 实际情况为异常样本而检测结果为正常样本;TN表示真反例数,表示实际情况和检测结果 都为异常样本;FN表示假反例数,表示实际情况为正常样本而检测结果为异常样本。 准确率是指模型检测正确的样本个数占总样本的比例,是衡量模型对整体样本判断正