陈曦睿,杨基宏,台永丰,方亚民
(1.中南大学轨道交通安全教育部重点实验室,湖南 长沙 410075;2.中车青岛四方机车车辆股份有限公司,山东 青岛 266111)
液压系统是许多轨道交通高端装备的重要组成部件,例如电液转辙机、列车制动系统、铁路维修装备等,保障它们的正常运行对轨道交通的高效安全运行有重要意义。由于工作环境恶劣,负荷较大,液压系统也容易发生内泵泄漏故障,影响生产工作,甚至威胁行车安全。液压系统内泵泄漏故障诊断在机器学习算法上属于分类问题。而机器学习算法预设的条件往往与实际有所出入,因此很难构建一种兼具鲁棒性和高效性的模型,数据集不平衡就是一个重要的方面[1]。对于一个二分类问题,假如一个数据集里0 类样本和1 类样本的比例是999∶1,那么分类模型什么都不用做,只需将所有样本都分类为0类样本,模型准确率将达到惊人的99.9%,然而这并不意味着模型有着极高的故障分类水平。在故障诊断领域,将故障样本诊断为正常样本,可能导致严重的安全事故,而将正常样本诊断为故障样本则可能只是增加一些维护开销。考察国内外研究工作,处理不平衡数据集的方法主要有数据重采样、代价敏感法和集成方法[2-4]。
数据重采样方法是指使用过采样少数类样本数据,或者欠采样多数类样本数据对整体数据集进行类别平衡,从而减少不平衡度。其中,欠采样方法有造成信息丢失的可能性,故在此不进行详细介绍。对于过采样方法,如果对少数类样本不做处理,直接进行复制,将有可能带来过拟合的问题。因此一般处理不会直接复制,至少会将一些高斯噪声加入少数类数据样本,或者使用算法对少数类样本进行合成。Chawla 等[5]在2001 年提出了合成式少数类过采样技术(Synthetic Minority Over-sampling Technique,SMOTE),它是最早的数据合成算法,其基本原理是通过现有的两个k 邻近的少数类样本来生成新的数据样本,假设现有的两个样本是样本空间里的两个点,则新的样本随机生成于现有两个样本之间的连线上。SMOTE 的变种的主要改进在于选取现有样本的方法上,但是用于生成新样本的方法实际上与原始方法相似,只是现有样本的简单线性组合[6-8]。这对于时间序列数据的兼容度不高,因为时间序列数据往往表现的是同一特征比如压力、电流和振动等信号在一段时间内的变换,不同数据样本的时间标签并不是一定严格对齐的,这导致采用简单的线性组合方法会使合成的样本失真。相比传统的SMOTE 算法,生成模型是一种更灵活的合成多样化样本的方法,因为生成模型会学习原始数据的分布,生成的数据可以看作是特征的组合,而非原始数据简单的线性组合。
曾在研究领域引起过广泛关注的生成模型有生成对抗网络(Generative Adversarial Network,GAN)[9]、变分编码器(Variational Auto-Encoder,VAE)[10]和近几年大热的扩散模型(Diffusion Model,DM)等[11]。杨培[12]研究了高速铁路接触网鸟巢检测中的不平衡数据集问题。他利用音视频数据对高铁接触网进行鸟巢检测,然而接触网图像数据中含有鸟巢的图像只占总体数据的极小部分,于是他提出了一种含有双判别器的生成对抗网络(Double Discriminator GAN,DDGAN)对含鸟巢数据进行生成。李宁[13]利用应力应变信号对风机叶片进行异常检测,他采用了条件生成对抗网络(Conditional GAN,CGAN)生成多种类别的少数类故障样本。周鑫[14]研究了ZDJ9 型转辙机的不平衡故障检测,他使用辅助分类生成对抗网络(Auxiliary Classifier GAN,ACGAN)来对少数故障转辙机数据进行生成。ZAREAPOOR 等[15]利用生成对抗模型合成少数类样本,并在多个工业数据集进行了验证。以上使用GAN 模型及其变种为基础的生成对象大多都是图像数据或者高维时间序列,GAN 模型其实在单变量的时间序列生成任务上表现不佳[16],而且GAN 模型的生成对抗式训练导致训练过程不稳定,这些都对GAN 网络的实际应用产生了限制。
扩散模型在图像生成任务上取得了比GAN 更好的结果,但是扩散模型的逆扩散过程往往需要迭代上千次,这将会消耗大量计算资源。扩散模型的一个重要研究方向就是减少逆扩散过程的迭代次数[17-18]。相比于GAN 模型,VAE 的训练更为稳定,而相比于扩散模型,VAE 消耗的计算资源少。
另外,两类不平衡数据集分类方法中,集成学习是通过集成多个基础的分类模型,提高对少数类的分类能力,这势必会带来额外的开销。代价敏感学习则是特别关注误分类代价更高的样本,实现对误分类成本高的样本的准确分类[19],在故障诊断领域,误分类成本高的样本是少数故障样本。具体而言,实现代价敏感的手段主要是在深度学习模型训练的过程中,比如模型权重更新、损失函数计算等,引入代价因子,从而提高对少数类的分类能力。误分类代价矩阵是一种常见的方法,它为每一种误分类情况设定不同的代价系数,调整模型分类能力[20-21]。董勋等[22]根据每个类别的数量,自动生成代价矩阵。Zhang 等[23]提出了进化代价矩阵,以模型总体损失为目标函数,利用遗传算法动态优化代价矩阵。有些损失函数则不针对某几个少数类,而针对分类难的样本,例如焦点损失(Focal Loss,FL)[24],在训练过程中给分类简单的样本减少 权重,给分类困难的样本增加权重,以此平衡分类器对不同类样本的分类能力。无论是初始代价矩阵的设置,亦或是后续代价矩阵的优化,大部分都基于启发式算法。
本文提出了一种液压系统内泵泄漏诊断方法。该方法结合了数据重采样和代价敏感学习的优点,能够有效地处理液压系统内泵泄漏诊断中数据不平衡的问题。
本文所提出的方法分为两个阶段,第一阶段是数据重采样,首先使用β-VAE 对少数类样本进行合成,将少数类故障样本的数量补全到和正常样本一致;使用β-VAE 进一步增强了VAE 的规范化能力,改善了不平衡数据集对故障分类的影响。第二阶段是代价敏感学习,使用Focal Loss对故障分类模型进行训练,使难分类样本的损失值比重变大,增强分类器对难分类样本的诊断能力。总体的技术路线如图1所示。
图1 总体技术路线Fig.1 Overall technology road map
原始的VAE 是一种具有概率保证的生成模型,它的编码器将原始的数据X映射成符合正态分布的隐变量Z,而解码器再将隐变量Z转化为数据,并尽可能地将其和原始数据X分布保持一致。与一般的自编码器不同,Z并不是直接由VAE 的编码器计算得到,VAE 的编码器输出的其实是均值μ和方差σ2,隐变量Z是从正态分布N(μ|,|σ2)中采样得到,这个过程叫做重采样。原始VAE 一共有两部分损失,一部分是重建损失,用来衡量生成样本和原始样本的差异;另一部分是KL 散度(Kullback-Leibler Divergence,KL),它是用来约束隐变量,使之规范化为正态分布。VAE 的结构如图2 所示。
图2 变分编码器结构Fig.2 The structure of VAE
使用VAE 模型进行数据生成的研究比较少[25-26],有一个重要的原因是VAE 模型具有叫做后验失效(Posterior Collapse,PC)的缺陷,以往的研究认为后验失效是VAE 的固有缺陷,它往往导致VAE 生成的数据十分单调,缺失多样性[27]。但后验失效实际是由VAE 重建损失和KL 损失的冲突引起的,现有的研究往往通过调整KL 项和重建损失项的比重,在样本真实性和多样性之间做取舍[28-29]。
β-VAE 是一种类似的尝试。最初β-VAE 被应用于解耦问题,它通过在KL 项上乘以一个大于1 的系数β来增加KL 散度在整体损失函数中的比重,从而达到了不错的解耦效果。它基于的原理是,如果编码器在获得信息少的情况下还能比较好的恢复数据,则说明了编码器学习到了不错的数据表征。
而实际上增强KL 项的比重,也有利于数据生成。因为在使用VAE 进行数据生成时,是从一个标准正态分布中随机抽样出隐变量,然后再利用编码器将隐变量转化为数据样本,如果KL 损失越小,就代表着模型的规范化能力越强;如果KL 损失较大,就代表模型的隐变量空间并不是一个标准正态分布,在这种情况下使用从正态分布中抽样得到的隐变量进行数据生成,就有可能出现数据失真的情况。相比原始的VAE,使用β-VAE 则有利于缓解上述问题。
故障诊断问题属于分类问题,一般分类问题常用的损失函数是交叉熵(Cross Entropy,CE)损失函数,它的计算公式为:
式中pn为预测正确的概率。
从公式(1)可以看出,经典的交叉熵损失函数对所有类别一视同仁,并没有对特定的类别进行聚焦。FL 是对交叉熵函数的改进,最初被用于在目标检测领域的类别不平衡问题,它可以使模型专注于某些样本的分类。它的基本原理是根据样本的分类难度对样本进行着重关注,如果一类样本比较难分类,那么就增大损失的比重,让模型更偏向于学习它;如果一类样本比较容易分类,则减少损失的比重,让模型偏重学习其它类样本。FL 通过预测正确的概率来衡量分类难度,具体的计算公式为:
式中n代表第n类样本,αn是用来平衡不同类别损失的权重,γ是为了降低简单分类样本的损失,pn为预测正确的概率,(1-pn)为预测错误的概率。
由于本文将数据生成和FL 结合起来,在数据样本层面故障样本和正常样本已经平衡了。因此对于公式(2)中的αn,统一设置为1。
对于超参数γ,它主要是对易分类样本的损失进行衰减。相比于交叉熵损失,(1-pn)γ实际也是一个衰减因子,它不仅能对易分类样本起作用,也能够对难分类样本起作用,只是对易分类样本的作用更大。为了防止出现梯度消失的情况,将γ设置为1。
拟采用压力传感器数据对液压系统内泵泄漏进行诊断,原始数据的采样频率为600 Hz,采样总时间为1 s。原始数据一共拥有三个类别,分别是正常样本、轻微内泵泄漏样本和严重内泵泄漏样本。其中正常样本一共有1221 条,轻微泄漏样本一共有492条,严重内泵泄漏样本一共有492 条[30]。
三种不同归一化压力数据如图3 所示,自上而下分别是正常、轻微内泵泄漏和严重内泵泄漏。通过肉眼可以看出,有些压力数据差异表现在切换负载时的变化,有内泵泄漏的液压系统切换负载时,压力变化较为不稳定,当然这三类样本还有一些细微的差别在平稳负载阶段,这些通过图片难以分辨。
图3 原始液压数据Fig.3 The raw pressure data
原始的图片压力数据就是一个不平衡数据,从每类样本抽出100 条样本作为验证集,再从剩下的每类样本抽出100 条样本作为测试集,这样进一步扩大了不平衡度,更能验证所提出方法的效果;同时为了减小计算量,降低原始数据的采样率为200 Hz,数据集分配如表1 所示。
表1 数据集设置Tab.1 The setting of dataset
使用两个β-VAE 模型对两类的故障样本进行增强;利用292 个轻微泄漏样本和292 个严重泄漏样本训练β-VAE 模型;使用多层感知机(Multilayer Perceptron,MLP)作为模型基础骨架。实验所用的β-VAE 结构如表2 所示。
表2 β-VAE 详细结构Tab.2 The detailed structure of β-VAE
分类器的模型基础骨架选用卷积神经网络(Convolutional Neural Networks,CNN),卷积核参数分别为输入通道数、输出通道数、卷积核大小、卷积步长和补零,池化层参数为池化尺寸和池化步长,线性层的参数为输入维度和输出维度。每一个卷积层后都跟有一个LeakyReLu 激活函数。具体的结构如表3 所示。
表3 故障分类器详细结构Tab.3 The detailed structure of classifier
使用消融实验对所提出方法的效果进行验证,总共进行四组实验,分别使用不平衡数据集和CE、不平衡数据集和FL、平衡数据集和CE,还有平衡数据集和FL 对故障分类器模型进行训练,其中β-VAE 的β设置为1.5,FL 中的γ设置为1。通过准确率、精准率、召回率和F1 分数等指标衡量不同方法的诊断效果,计算公式为:
式中TP指真正例,TN指真负例,FP指假正例,FN指假负例。
首先检验用β-VAE 模型对两类故障样本进行生成的效果,使用β-VAE 生成292 个轻微内泄漏样本和292 个严重内泄漏样本,从而使数据集平衡。生成的样本如图4 所示。
图4 少数类合成数据Fig.4 The generated samples of minority class
从图4 可以看出生成的样本和原始样本大致一致,细节部分则通过MSE(Mean Squared Error,MSE)损失和KL 散度进行衡量。结果如表4 所示,可以看出KL 的优化非常成功,这得益于β-VAE 对KL 项的增强,MSE 损失的情况也算良好。
表4 数据生成结果Tab.4 The result of data generation
使用两个β-VAE 模型分别生成700 个轻微泄漏样本和700 个严重泄漏样本,将平衡过的数据集对故障分类模型进行训练,选取在验证集表现最好的模型进行测试,测试结果如表5 所示。1#~4#分别为四种模型,使用不平衡数据集和CE 训练1#模型,使用不平衡数据集和FL 训练2#模型,使用平衡数据集和CE训练3#模型,使用平衡数据集和FL 训练4#模型。
表5 故障诊断结果Tab.5 The result of fault diagnosis
从消融实验的结果可以看出,当实验数据集为不平衡数据集,而损失函数也没有使用焦点损失特别优化时,故障分类率是四种方法中最低的。当使用焦点损失对分类器进行增强时,所有的指标都得到了2.0%的提升。而单独使用β-VAE 对少数故障类样本进行生成,从而平衡数据集时,模型的准确率得到了3.7%的提升。在使用β-VAE 对数据集进行平衡的基础上,再使用焦点损失对故障分类器进行增强,模型的准确率提升了0.7%,增加到94.7%,较最初的原始版本提升了4.4%的故障准确率。
从实验结果分析可以得出,使用β-VAE 对原始数据集进行平衡能够有效地提高故障分类器的准确率,它的效果比单独使用焦点损失来增强故障分类器要好,在数据不平衡时,焦点损失对故障分类器的增强较为明显,而当数据集平衡时,焦点损失对故障分类器的增强作用有限。
本文研究了液压故障诊断中的数据不平衡问题,并提出了一种两阶段的智能故障诊断方法。在第一阶段,首先使用β-VAE 对少数类故障样本进行补全,将少数类样本的数量补全至与多数类正常样本一致,从而得到平衡的数据集。在第二阶段,使用平衡数据集对故障分类器模型进行训练,使用焦点损失对故障分类器进行增强。经过实验验证,本文得到的主要结论有:
(1)β-VAE 能够生成少数内泵泄漏压力数据,从而有效地减少不平衡数据集对故障分类器的影响。
(2)焦点损失能够在不平衡压力数据集上对故障分类器进行有效增强,但是在平衡后的压力数据集上作用减少。
(3)使用数据补全的效果好于使用FL 对故障分类器进行增强。