时间:2024-05-04
梁 昱 李彬彬* 陈志高 焦 斌
1(上海电机学院电气学院 上海 201306)2(中核检修有限公司海盐分公司 浙江 嘉兴 314300)
在工业生产中,大型旋转机械设备安全可靠地正常运行极其重要,其中轴承作为其关键部件,一旦发生故障,将对公司生产效益和人身安全产生很大的影响,所以滚动轴承的运维和故障诊断技术极为重要[1]。
深度学习是指一类机器学习技术,其深层体系结构中的多层信息非线性处理机制被用于模式分类以及其他学习任务[2],它强调多层和非线性。实际上,深度学习起源于Artificial Neural Network的概念,所以深度学习基本上就是指深层神经网络。
谷歌公司的深度学习框架TensorFlow是一个灵活便利、功能强大的机器学习库,许多深度学习算法封装于其中,用户只要将TensorFlow导入到Python中调用就可以搭建各种网络模型,极大方便了深度学习的研究[3-4]。
基于深度前馈网络,近年来,深度学习在机器学习领域备受关注,在分类、预测、故障诊断等多领域取得突破的成果。文献[5]中提出了C-RF模型,把卷积神经网络(CNN)提取到的特征输入随机森林(RF)中进行分类,实验结果表明该模型的分类效果和泛化能力比单独使用RF有了很大的提高。文献[6]中提出构建多层感知器(MLP)神经网络模型用于股票预测,并将TensorFlow与传统BP神经网络进行性能对比,实验结果说明TensorFlow具有更好的预测准确度和更快的收敛速度。文献[7-9]分别提出了基于短时傅里叶变换(STFT)、CNN、SDAE的电机故障诊断方法,并与传统的故障诊断方法进行比较,实验结果表明,所提出方法能更好地实现感应电机故障诊断。文献[10]提出了一种新的基于LeNet-5卷积网络的数据驱动故障诊断方法,1-D信号转换成2-D图像信号,提高了模型的特征提取能力,并应用于电机轴承、水泵、液压泵的故障诊断中,模型预测准确率都在99%以上。
深度学习取得重大成果的原因一方面在于计算机运算能力的提高和大数据的支持,另一方面是网络本身结构和参数的合理设置与选择。合适的训练优化算法、合理的参数设置和模型结构直接影响网络模型的泛化能力和准确性,有助于加快收敛速度防止过拟合。因此,参数设置、优化算法和网络结构一直是深度学习研究中的重点和难点[11]。
本文基于现代深度前馈神经网络的基本理论,对深层神经网络中的参数设置、优化算法、结构选择进行深入研究,在TensorFlow中建立最优深度前馈神经网络模型。本文提出直接将原始振动信号作为模型的输入,无需进行复杂的信号处理和故障特征提取。最后结合美国西储大学滚动轴承方面的实验数据,将优化的模型在电机轴承故障诊断领域中进行了验证,完成9种不同工况下轴承的故障诊断,并和其他常用的机器学习算法比较。
深度前馈网络应用在故障诊断方面,可以将其看作是分类器,定义了一个映射集y=f(x,θ),输入x通过相关参数θ映射到一个输出类别y。
深度前馈网络模型中参数θ的学习算法是迭代的,所以初始值(即迭代起点)对于迭代过程是否达到局部最小、是否能够收敛到一个代价高或低的点以及训练时间的大小关系密切,不合适的参数初始化方法会降低梯度的学习优化效率和网络泛化能力[12]。通常来说,需要初始化每个单元使其具有不同的初始参数,防止学习算法以相同的方式更新某两个单元,因此促使了参数的随机初始化。
通常情况下,可以为每个神经元除权值以外的参数(如偏置值等)设置启发式挑选的常数,设置为0或0附近小的常数。而所有的权值则初始化为小的随机数,可以在高斯分布中随机抽取。一般而言总是希望神经元的输出值接近于零,尽可能保证参数θ都能够在其激活函数偏导数最大之处进行调整。因此在TensorFlow中权值初始化可以从截断正态分布中随机抽取,生成的值w~N(μ,σ2),其中,μ=0,σ2=1,如果w的取值在区间(μ-2σ,μ+2σ)之外则重新进行选择。由正态分布的“3σ”原则可知,区间(μ-2σ,μ+2σ)内的面积为95.45%,这样保证权值w都在均值0附近。
非激活函数通常用于隐含层,完成信号的前向传播。传统Sigmoid和Tanh函数[13]大部分定义域内都饱和,仅接近0时它们才对输入强烈敏感,这种广泛饱和性会造成梯度消失,并且不具有稀疏性。只有当合适的代价函数来抵消饱和性时,它们作为输出单元可以与基于梯度的学习相兼容。
神经学家发现生物神经元的激活方式具有单侧抑制、兴奋边界宽阔以及输出具有稀疏性的特性。ReLU函数f(x)=max(x,0),曲线如图1所示。
图1 ReLU激活函数曲线
可以看出,ReLU函数几乎是线性的,这使得只要是处于激活状态,其导数都能保持较大,小于0则没有输出,因此它保留了许多使得线性模型易于使用基于梯度的方法进行优化的属性,同时也符合生物神经元单侧抑制和兴奋边界宽阔的特性,并且ReLU函数还具有稀疏表达能力。因此,目前深度前馈网络、CNN、RNN、LSTM等主流深度学习模型的激活函数大多采用ReLU函数[14-15]。文献[16]表明ReLU函数在训练正确率和网络收敛速度上均优于其他激活函数。
深度前馈网络模型效果及优化的目标是通过损失函数来定义的,损失函数是模型对数据拟合程度的反映,拟合得越好,则值越小。常用的损失函数为:均方差损失函数和交叉熵损失函数。均方差损失函数(MSE)直观意义是模型预测值和真值的欧氏距离,而交叉熵损失函数(Cross entropy)如下:
(1)
给定两个概率分布p和q,交叉熵刻画了两个概率分布之间的距离,值越小则说明两者越接近。在决策分类问题中使用比较广泛[17]。在故障诊断中概率分布pi是真正的标签,给定分布qi是预测值。
基于统计学理论,现代深度前馈网络大多数都使用最大似然原理来优化学习,即损失函数就是负的对数似然,它与交叉熵等价。损失函数表示为:
(2)
使用最大似然来导出损失函数的方法,一方面减轻了每个模型设计损失函数的负担,这样不用预测y的完整概率分布,而是仅仅预测在x条件下y的某种统计量,例如参数的点估计、偏差、方差,对于刻画泛化、过拟合等非常有帮助;另一方面负的对数似然在很多模型中避免了激活函数梯度饱和(梯度消失)的问题,损失函数取对数后可以消除某些输出单元中的指数效果。这也是交叉熵损失函数比均方差损失函数更受欢迎的原因之一[18]。
神经网络的输出不一定是一个概率分布,但是在电机故障诊断中可以把“一个样例属于某一个类别”看成一个概率事件,那么训练数据的正确答案就符合一个概率分布,将输出结果变成概率分布常用的方法是用于Multinoulli输出分布的Softmax单元。假设原始的神经网络输出为y,那么经过Softmax回归处理之后的输出为[19]:
(3)
深度前馈网络的整体结构主要包括网络的深度和宽度。神经网络的万能近似定理表明[20],即使网络只有一个隐含层,但只要节点数足够多(网络足够宽)也能够在训练集上近似任何函数,而更深的网络则意味着每一层会使用较少的节点数,但缺点是网络过于复杂难以优化,大大增加了参数训练的时间,所以模型性能提高优先考虑增加隐含层中的神经元数,其训练效果会比增加层数更容易观察和调整。结构设计可采用如下方法:先设较少的节点数,然后逐渐增加节点数,每次对网络进行训练并记录在验证集上表现的误差,直到满足要求即可。因此最优的深度前馈网络结构必须通过大量实验来找到。
在参数的更新过程中,某些优化算法能根据模型的参数和损失来优化模型。梯度下降法是最普遍的优化算法,它会沿逆梯度方向让超参数不断更新,使总损失不断下降。优化损失函数L(θ)过程可以抽象为寻找一个参数θ,使得L(θ)最小,通过迭代的方法来不断逼近最优解。一般来说,参数更新包含两种思路:更新的方向和调整学习率。TensorFlow中常用的优化方法有[21-24]:更新方向算法,包括梯度下降法(GD)和动量法(Momentum);自适应学习率调整(Adaptive learning rate)算法,包括AdaGrad算法、RMSProp算法、Adam算法。优化算法之间联系如图2所示。
图2 TensorFlow中各种优化算法关系图
由图2可以看出,梯度下降对于神经网络而言,几乎所有深度模型的迭代总是基于梯度来使得损失函数下降,梯度下降可谓是训练的全部,最多也只是不断地研究出各式各样的梯度下降法的变体而已。
梯度下降法的缺点[25]:不能保证被优化的函数达到全局最优解,容易陷入局部极小值;计算时间长、收敛速度慢,学习率无法自适应调整,在海量数据下,要计算所有训练数据的损失函数是非常消耗时间的。而Adam[24]算法是利用梯度一阶矩估计和二阶矩估计动态调整每个参数的学习率,算法描述如表1所示。
可以看出,Adam优化算法在于计算历史梯度衰减方式上,使用了类似动量的衰减方法,实质上就是带有动量项的RMSProp。Adam将动量应用于缩放后的梯度,同时结合了AdaGrad善于处理稀疏梯度和RMSProp善于处理非平稳目标的优点,在自适应学习率方面表现较好,适用于大多非凸优化,也适用于海量数据和高维空间。因此Adam算法是应用最广泛的、效果最好的算法,它高效、稳定,适用于绝大多数的应用场景。
深度学习中数学模型的设计要求不仅在训练集上表现好,而且能在新输入上泛化良好,许多策略被显示地设计来减少测试误差,这些策略被统称为正则化。在机器学习中,过拟合现象被称为过度训练,本质是过于复杂的模型在学习中不知不觉中提取了一些残余变化(即随机干扰噪声),产生与特定数据集过于紧密或完全对应的分析,从而忽视了通用的趋势和整体的规律,无法拟合其他数据或可靠地预测未来的观测结果。而正则化是降低泛化误差,减小过拟合的一个有效手段,包括L1、L2正则化以及最常用的Dropout。
Dropout的优点是计算方便,训练过程中会产生n个随机二进制数与某些神经元相乘,从而依概率去掉对应层的某些神经元,使得每次迭代中训练的都是一个小的神经网络,如图3所示[26]。
图3 Dropout示意图
文献[27]中显示,Dropout比其他标准的计算开销小的正则化方法(如L1,L2正则化)更有效,经过交叉验证,keep prob率等于0.5的时候效果最好,因为此时dropout随机生成的网络结构最多。
Dropout的另一个显著优点是降低了模型的计算复杂度,它一般不限制适用的模型或训练过程,基本在所有使用分布式表示且用SGD法训练的模型上都表现良好,包括RBM、CNN、RNN等网络模型。
另一方面Dropout减少了模型的有效容量,为了弥补这种影响,必须扩大模型规模,所以当只有极少的训练样本时,Dropout不会很有效。文献[27]中还提到在少于5 000的测试样本的Alternative Splicing Data上,Bayes神经网络比Dropout表现得更好。所以至少要在上万数据集上使用Dropout会比L1和L2的正则化方法更有效,最佳验证集的泛化误差会比较小。
深度前馈网络是在Python3.6开发环境Spyder中通过编程并调用开源的TensorFlow库建立的。计算机处理器:Intel(R) Core(TM) i5-7400 CPU @ 3.00 GHz,内存(RAM)为8 GB,操作系统64位Windows。
本实验所运用的数据来自美国Case Western Reserve大学正常和故障滚动承故障测试数据。使用电火花加工(EDM)对电机轴承的滚球、内滚道和外滚道引入不同直径的点蚀故障。故障规格如表2所示。
将Normal信号和表2中的9种振动故障信号导入Python中,得到10种对应的振动原始信号图如图4所示。
图4 10种不同工况下振动原始信号图
电机转速为1 750 r/min,采样频率为12 kHz,则一个周期一转采集到约412(60×12 000÷1 750)个振动点,因此网络的输入样本为412维的原始数据。为了获得足够的训练样本和测试样本,并保证不重复抽样,采用连续抽样的截取方法来获取样本,并设定一定的抽样步长。本实验设置抽样步长为412,标签0~9分别代表正常信号和9种故障信号,从每种信号中随机抽样获得5 000个样本,加上标签最终得到50 000×(412+1)的矩阵作为网络的输入,将此矩阵保存至.csv文件,以便于导入到深度前馈网络中进行故障诊断,在模型训练时再按7∶3比例随机分为35 000个样本训练集和15 000个样本测试集。
表3为在故障诊断中,深度前馈神经网络模型在TensorFlow中的关键参数设置。
表3 TensorFlow中核心参数的设置
图5为不同网络结构在训练1 000次后对诊断准确率的影响,横轴表示学习参数的数量。
图5 网络结构对故障诊断准确率的影响
从图5中可以看出,随着参数不断增加,准确率渐渐提高,当增加到100万以上时,由于模型复杂参数过多出现过拟合现象,准确率有所下降,而四层和五层网络的泛化能力较强,在30~100万的参数区间内有较高准确率。三层、四层、五层、六层网络结构准确率普遍都在98%以上,且四层、五层整体效果要优于三层、六层,说明对应本实验轴承故障数据集,适当调整网络的宽度或深度都可以达到较好的泛化能力。
进一步比较分析,表4为不同网络结构下的深度前馈网络模型故障诊断评估表,选取四层和五层网络为比较对象,选取30~100万的学习参数区间,测试集样本数是15 000,训练次数为1 000次。评估指标中,上升时间指准确率从10%上升到90%所需时间。
表4 不同网络结构下的网络模型故障诊断评估
从表4中可以看出,所有网络准确率达到了98.9%左右,结构为412-600-500-10的四层网络模型效果最优,准确率达到最高98.96%,误诊数也是最低的,且优化速度较快,只用78 s模型诊断准确率就从10%上升到90%。尽管其训练时间较长,但是训练网络是线下进行,为了更好地诊断轴承故障,花时间训练一个最优网络是值得的。
综上所述,选取412-600-500-10四层网络结构为最优的深度前馈网络模型,对应的详细模型如图6所示,图7、图8为其诊断准确率、损失与训练次数的学习曲线图,图9为测试集对应的混淆矩阵,表5为其对应的故障诊断报告。
图6 TensorFlow中Deep feedforward network的故障诊断模型
图7 准确率和训练次数的关系曲线图
图8 损失和训练次数的关系曲线图
图9 混淆矩阵
故障类别PrecisionRecallF1-scoreSupportNormal1.001.001.001498Ballfault-0070.991.001.001519Ballfault-0141.001.001.001508Ballfault-0211.001.001.001512Innerrace-0070.921.000.961521Innerrace-0141.001.001.001464Innerrace-0211.001.001.001510Outerrace-0071.000.900.951485Outerrace-0141.001.001.001456Outerrace-0211.001.001.001527Avg/total0.990.990.9915000
从图7和图8中可以看出,对于轴承故障数据诊断准确率为98.96%,损失仅为1.472;从图9和表5中可以看出针对每个故障类别的预测准确性,除了Outer race-007类故障诊断出现了0.1的误诊率,即1 485个样本中有大约150个误诊成Inner race-007故障,其他情况基本诊断正确,而且,每种故障的查准率(Precision)、召回率(Recall)、F1分数(F1-score)平均值都为0.99,结果充分说明最优深度前馈网络模型能够较好地实现轴承故障诊断。
模式识别是轴承故障诊断中的重要一步,实质是分类算法,传统常用于分类的机器学习算法有k-近邻算法、支持向量机(SVM)、逻辑回归算法(Logistic Regression)、决策树(Decision Tree)、随机森林算法(Random Forest)、朴素贝叶斯(Naive Bayers)等。
为了和机器学习算法作比较,利用和3.1节同样的50 000组数据作为输入数据,15 000组为测试集。不同方法的诊断结果如表6所示。
表6 不同方法的诊断结果比较
由表6可得,逻辑回归和朴素贝叶斯方法效果较差,说明模型无法很好地拟合训练集和预测测试集;决策树模型虽然对样本拟合情况极佳,但是模型测试分只有53.86%,对新数据诊断误差很大,说明改模型容易造成过拟合;相比而言k-近邻、随机森林和支持向量机的训练集分数几乎达到100%,对训练样本的拟合情况较好,对测试样本的预测诊断率也在90%以上,训练速度也比较快,说明模型的准确性和泛化能力良好。但还是远低于本文实验的结果98.96%,可见机器学习和深度前馈网络相比,虽然训练速度上有优势,但是算法的鲁棒性模型诊断结果相对较差。经过大量数据测试经验发现,上述传统的机器学习算法一般在数据集较小的情况下,往往分类效果比会比深度前馈神经网络要好,在上万数据的情况下效果普遍低于深度前馈网络。
本文提出基于现代深度前馈神经网络的轴承故障诊断模型,并通过梯度优化算法、正则化方式以及不同网络结构的研究,旨在向最优模型的建立不断靠近。实验在Python语言开发环境中编写程序并调用开源的TensorFlow库函数完成。利用深度前馈网络强大的非线性学习能力,无需人工处理数据提取复杂的特征即可实现高精度的滚动轴承故障诊断,实验结果最终达到了98.96%的诊断准确率。通过和传统机器学习方法比较说明该方法存在的优势,从而表明了深度前馈神经网络模型有更强的分类决策能力。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!