李 卉, 何 晶, 程富强, 王晓薇, 詹炳光
(1. 空军工程大学信息与导航学院, 陕西 西安 710077; 2. 西安卫星测控中心, 陕西 西安 710043)
卫星作为航天工程的重要组成部分,其安全有效地运行是航天专家所关心的问题之一。据统计,美国在近10年的高轨卫星中,由电源系统引起的卫星故障达到50%以上[1],因此,对卫星电源系统进行研究具有重要意义。卫星电源系统遥测数据(指经过远距离无线传输的数据)是表征卫星电源系统运行正常与否的重要数据,通过这些数据对卫星电源系统参数(指未经过远距离无线传输的系统运作时产生的数据)进行预测,从而提前判断卫星电源系统的运行状态,及时检测发现卫星电源系统的异常变化数据,能够提高卫星故障的主动检测与识别能力,可对卫星的安全稳定运行提供可靠的决策支持。
在工程中对卫星遥测数据中异常值的检测常采用固定的遥测参数(指经过无线传输由天线接收到的卫星系统运行产生的数据)上下限,因为检测门限不随时间变化,无法反映遥测参数的动态趋势,难以捕捉遥测参数动态变化过程中出现的异常。针对此问题,许多国内外该领域的专家也进行了相关研究,如:MENGSHOEL等[2]利用贝叶斯网络对卫星和飞机电源系统的电路数据进行建模,验证了概率技术在故障诊断中的可行性;ABHINAV等[3]对贝叶斯网络在卫星故障诊断的应用进行了论证;李维铮等[4]利用相邻周期遥测参数值相等或相近原理,建立了自回归滑动平均(Auto Regression Moving Average,ARMA)模型,从而得到遥测参数预测值,通过比较实测值与预测值的结果来进行异常检测;房红征等[5]提出了一种粒子群优化的神经网络方法,利用粒子群算法优化的神经网络对卫星关键遥测参数进行近似和建模,将得到的预测时间序列与实测值进行比对来实现异常检测。以上算法可以对一段历史周期内的平稳变化参数或在某恒定值附近参数进行学习并预测,但卫星电源系统参数种类繁多,其中也包含多种非平稳参数[6-7],因此,需要建立动态门限实现对实际非平稳变化的参数的检测。
随着深度学习在语音识别、图像识别以及语言处理方面的广泛应用,一些深度学习模型也逐渐被应用到时间序列数据研究中。深度学习模型不但能够挖掘出更深层次的潜在规律[8],相对浅层机器学习也有更好的自主性[9-10]。在众多的深度学习模型中,长短期记忆(Long-Short Term Memory,LSTM)模型作为一种特殊的循环神经网络(Recurrent Neural Network,RNN),不仅拥有RNN动态记忆性的优点,即输出取决于当前输入和上一层的输出,而且在时序数据分析中有更强的适应性,即能对非平稳参数进行特征提取,还能避免RNN的梯度消失问题以及长期记忆能力不足等问题。上述优势使LSTM模型在识别[11-15]、预测[16-18]和可靠性预测[18]领域的时间序列数据研究中取得了不小的成果。然而在卫星遥测数据异常状态的检测方面还未发现相关研究。
笔者提出了一种基于LSTM模型的动态卫星电源遥测参数异常检测方法。LSTM模型不仅能够适应卫星电源系统遥测数据的非线性特性,而且处理时间序列数据时能够自动选取最优时间间隔和记忆长时间历史遥测数据[16-18]。实验结果表明:LSTM模型适用于卫星电源系统参数预测研究,且有较高的预测精度和很强的适用性。
LSTM模型通过增加新的“单元状态”来改进RNN,即原始RNN的隐含层只有一个状态h,它对于短期的输入非常敏感,而新增加的状态c负责保存长期状态,具体模型如图1所示。
图1 原始RNN和LSTM模型
LSTM模型运用3个控制开关,来分别负责长期状态c的继续保存、输入和输出。具体是通过激活函数σ(sigmoid函数)控制3个控制门,即输入门(input gate),遗忘门(forget gate)和输出门(output gate)。当控制门输出为0时,任何向量与之相乘都会成为0向量,信息无法进行传递;当控制门输出为1时,任何向量都不会改变,信息就可以传递出去。图2为控制门对单元状态的控制示意图,图中:输入门控制当前输入层xt到隐含层单元状态ct的信息传递;输出门控制单元状态ct到输出层ht的信息传递;遗忘门控制对上一时刻单元状态ct-1的信息保留。由于卫星电源参数数据属于时间序列数据,具有随时间变化的特点,且有一定的规律,结合LSTM模型能够记忆长时间时间序列方面的优点,可以利用LSTM模型提取卫星电源系统参数规律信息,对卫星电源系统参数数据进行预测。
图2 控制门对单元状态的控制示意图
LSTM模型采用反向传播算法对网络进行训练,主要有2大步骤:1)前向计算网络每个神经元的输出值;2) 根据LSTM模型的输出结果与实际值的误差项反向计算相应的误差项,计算得到网络权重。由于LSTM模型的输入包括时间展开输入和网络每层的输入,因此,误差项的传递方向也包括沿时间的反向传播和沿上一层的传播。
卫星电源系统异常检测流程如图3所示,主要包含4个模块:1)卫星电源系统数据预处理模块,该模块对卫星电源系统原始数据进行预处理,构造模型样本;2)LSTM模型训练模块,该模块主要利用LSTM模型对预处理后的遥测数据进行训练,并得出训练数据的模型训练误差;3)LSTM模型预测模块,该模块利用通过训练完成的LSTM模型对卫星电源遥测参数进行预测;4)LSTM模型检测模块,该模块是利用预测参数与模型训练误差生成的动态检测门对实时卫星电源系统参数进行检测。通过上述4个模块可以达到对卫星电源系统异常检测的目的。
图3 卫星电源系统异常检测流程
在卫星电源系统原始数据中,存在大量因非异常原因造成的异常值,这些数据会严重影响LSTM模型的执行效率。因此,为了提高模型执行效率,降低模型预测误差,提高数据质量,需要对数据进行清洗与归一化处理。同时,由于遥测数据都是按照时间顺序进行排列的[6-7],但其采样周期有细微差别,因此,需对原始遥测参数设置时间间隔,并与时标对齐生成等间隔样本序列,数据预处理流程如图4所示。
图4 数据预处理流程
利用历史卫星电源遥测数据对LSTM模型进行训练,最终以模型估计值与实际值的误差函数是否满足设定要求来决定完成训练时间。LSTM模型如图5所示。
图5 LSTM模型
在模型训练过程中,通过LSTM模型对[1,T]时间段内的历史数据的学习,来预测T+a时刻的参数值,其中a为时间常数。X为LSTM的输入,即为图5中的xt,H=(H1,H2,…,HT),为LSTM的输出,即为图5中的ht。卫星电源系统参数的时间序列特征分别为
ft=σ(Wf·(ht-1,xt)+bf),
(1)
it=σ(Wi·(ht-1,xt)+bi),
(2)
(3)
(4)
ot=σ(Wo·(ht-1,xt)+bo),
(5)
ht=ot∘tanh(ct),
(6)
式中:Wf、Wi、Wc、Wo以及bf、bi、bc、bo分别为遗忘门、输入门、当前单元状态、输出门的权重矩阵和偏置项。“∘”为计算符号,当其作用于2个矩阵时,代表2个矩阵对应位置的元素相乘。式(6)为最后整个LSTM的输出。因此LSTM的输入层神经元数为输入序列数,输出神经元数为输出序列数,在对卫星电源系统参数进行预测时,通过输入卫星电源系统在一个时间段的当前或历史数据,可预测出卫星电源系统的一个或者多个未来时刻值。模型训练及预测过程如图6所示。
图6 模型训练及预测过程
LSTM模型预测出的时间序列属于离散型数据,为了能够得到连续型数据,采用拉格朗日插值算法建立预测值的插值函数,从而得出以时间为自变量的预测连续函数,通过预测结果与实际值的差异程度进行数据的动态异常检测,从而建立遥测数据动态门限,实现对卫星电源遥测数据异常检测。异常检测流程如图7所示。
图7 异常检测流程
从卫星电源系统参数时间序列的特点,以及使LSTM快速、高效方面考虑,本实验设定模型中每个LSTM结构只有1个单元状态;针对LSTM模型隐含层神经元数,从训练时间和挖掘能力方面考虑,本实验将隐含层神经元数设置为200,且采用迭代的方式进行多步循环预测。由于卫星所处的太空环境复杂且有多种辐射,同时受传输过程的影响,致使卫星电源系统参数数据存在异常状态,为了使检测结果更精确,在进行预测和检测前需对数据进行清洗,剔除异常数据,同时,为了不影响数据分析结果,需要对数据进行归一化处理。记卫星电源遥测参数时间序列点为(t,s(t)),其中t为时刻,t∈[ts,te],s(t)为对应时刻的参数值。
给定样本序列起始时间ts,首先按一定时间间隔td建立等间隔样本序列{(t,x(t))|t=ts+p·td,p=0,1,…,P-1},其中:x(t)为对应时刻的样本值,初始化时不赋值;P=floor((te-ts)/td),为样本序列长度,floor(·)函数表示向下取整。
按照样本序列x(t)的时标,在原始时间序列s(t)记录中逐步找到与样本时标最接近的时刻,提取该时刻的数据值作为样本值,可得赋值后的样本序列{x(ts+p·td)|p=0,1,…,P-1}。
对于某一维非线性时间序列x(t),t∈[1,n],若要预测x(n+1),x(n+2),…,x(n+n)的值,首先需要构造出预测模型的结构形式,即多个已知序列值顺序输入(输入节点)的输入模式和多个期望输出(输出节点)的输出模式。
以序列[x(0),x(1),…,x(n)]为例,记LSTM模型的输入节点个数为Li、输出节点个数为Lo,样本选取间隔为ds,样本选取过程如图8所示。
图8 样本选取过程
由上述过程,可得模型样本的输入矩阵
(7)
模型样本的输出(目标)矩阵
(8)
本文设置输入向量长度即元素个数为Lin,输出节点个数为1,应当Lin
样本选取间隔为1,依次类推,可得第m个输入向量Xm=(x(ts+(m-1)·td),…,x(ts+(m+Lin-2)·td))T,第m个输出值Ym=x(ts+(m+Lin-1)·td),m∈{1,2,…,P-Lin},记样本总数为N,则N=P-Lin。
建立训练样本集T={(X1,Y1),(X2,Y2),…(XN,YN)},为构建LSTM模型做好数据准备。
建立模型评价函数,定义均方根误差
(9)
RMSE代表了预测误差的离散程度,也叫标准误差,最佳情况为RMSE=0,是误差分析的综合指标之一。
(10)
模型训练误差为RMSE,设定检测阈值为κ,当κ>0时,检测门限上限LU(t)和下限LB(t)分别设置为
(11)
(12)
来进行异常点检测。对原始时间序列s(t)中的任一点t∈[ts+Lin·td,ts+(P-1)·td],异常与否的判断条件为:如果预测值与实际值的偏差程度超过一定倍数的模型RMSE,则认为实际值出现异常,即
正常值为
LB(t)≤s(t)≤LU(t);
(13)
异常值为
s(t)
(14)
通过对卫星电源参数分析,选取某型卫星蓄电池组的不同测点电压参数a和b,在某时间区间的遥测数据进行验证。
1) 根据2.1和2.2节中的数据清洗、归一化处理和时标对齐方法,对得到的25 633组数据(数据格式为<时间,参数值>)建立样本序列{x(t)},样本序列长度为8 928,部分数据变化形态如图9(a)、(b)中黑线所示。
2) 设置输入向量长度为100,样本选取间隔为1,按照步骤2.2节中的方法建立样本集T,共得到8 828组样本。
3) 按照2.3节方法,对LSTM模型进行训练。设置LSTM模型的输入为100个节点,输出层为10个节点;训练时反向传播算法的迭代次数为3 000次,学习率为0.000 1,隐含层神经元数为200。通过模型训练,生成的实际观测值与模型估计值的对比如图9所示。再输入样本计算得到每个输入向量的预测值,LSTM模型预测值与实际观测值的对比如图10所示。
图9 LSTM模型观测值与估计值对比
4) 按照2.4节对预测值序列进行拉格朗日插值。计算预测结果的均方根误差RMSE,设置检测门限κ=3,按照2.5节生成检测上下门限。
5) 按照式(13)、(14)对原始遥测数据时间序列进行检测。部分时间区间的检测效果如图11所示。图中红色和绿色线所示为生成的动态上限和下限。可见:动态门限能很好地反映出预测值以及实际观测值的变化,同时动态门限也很好地包络了参数动态趋势。参数a从3 090点左右开始,实际值变为恒定,显然不符合参数变化规律,这段区域的数值被标记为了异常(橙色圈点),如图11(a)所示,参数b从3 500点左右开始,实际值陡然下降,不符合参数变化规律,该区域的数值被标记为了异常点(橙色圈点),如图11(b)所示。
图10 LSTM模型预测值与实际观测值对比
图11 部分时间区间的检测效果
本文提出了一种基于LSTM模型的卫星电源系统异常检测方法,包括对数据的预处理、LSTM模型的训练、预测以及检测等。实验表明:
1) 与笔者前期利用贝叶斯模型对卫星电源参数进行检测相比,LSTM模型的拟合度更高且预测及检测性能整体更优,但是训练过程的耗时也更多;
2) 在LSTM模型训练过程中,模型的预测精度和损失函数对学习率的取值较为敏感,过高或过低的学习率会导致过拟合或者欠拟合的问题,进而影响模型检测性能。
总体来说,本文验证了LSTM模型在卫星电源系统参数异常检测的适用性和有效性,扩展了深度学习技术的应用。基于目前的工作,后续可以加深更多隐含层层数,以检验多隐含层LSTM模型的应用效果,或者优化LSTM模型参数从而提高模型训练效率。此外,本文利用LSTM模型对单遥测参数进行检测,下一步,可以对多参数进行检测,从而满足对卫星系统级别的异常检测需求。