唐贵基, 田寅初, 田 甜
(华北电力大学(保定) 机械工程系,河北 保定 071003)
近年来,随着深度学习在图像和语音识别等领域的成功应用[1],相较于传统诊断方法,在提取特征、识别准确率等方面具有明显优势。卷积神经网络(convolutional neural network,CNN)目前在医学、认知科学和人工智能领域得到了广泛应用:文献[2]使用一维CNN自适应提取滚动轴承故障信号的故障特征;文献[3]直接将滚动轴承故障信号作为输入,使用CNN进行轴承多故障诊断;文献[4]通过CNN和振动数据的频域特征对齿轮箱进行故障诊断;文献[5]提出了权值求和和最大尺度最大池化策略,对故障轴承进行诊断,验证了平移不变CNN的有效性;文献[6]将滚动轴承振动信号的频谱图作为输入通过CNN自适应提取故障特征;文献[7]通过短时傅里叶变换得到振动信号的时频图并将其作为CNN的输入,一定程度上实现了端到端的轴承故障诊断;文献[8]使用深度卷积自编码器对振动信号时频图进行去噪,然后利用CNN对去噪后的图像进行故障分类;文献[9]对CNN全连接层进行改进,使用改进CNN算法进行滚动轴承故障识别;文献[10]通过基于粒子群优化的细菌觅食方法改进AlexNet,实现了滚动轴承16种故障状态的诊断。以上方法为滚动轴承故障诊断提供了良好借鉴。
但在实际工程应用中,用于训练的样本数据往往受其样本大小、维度和总体表示形式的影响。因此,神经网络模型的训练效果经常被有限的数据集和预测问题所限制。而故障状态种类越多,所需要的训练样本数量相应就需要增加。Adaboost(自适应提升)算法可以更加充分地利用数据集,通过提高被上一个基分类器错分样本的权重来提高下一个基分类器对于错分样本的准确率,并且最终将所有的基分类器按不同的权重组合为强分类器。为了使用有限的数据集得到更好的分类效果,进一步实现多工况状态下更多故障的分类,本文综合Adaboost算法在集成学习领域和AlexNet在图像分类领域各自的优势,以轴承故障信号时频图为对象,提出了一种基于AlexNet-Adaboost的多工况滚动轴承故障识别方法。
传统的傅里叶变换是一种全局变换,无法将信号的时域特征和频域特征联系起来。小波变换具有良好的时频局部化特性,可以表现出振动信号的频域特征而不丢失其时域特征[11]。小波变换通过小波母函数的平移和伸缩得到一系列小波序列,以此将信号分解为不同的频率分量,具体过程可表示为
(1)
式中:ψ(t)为小波母函数;a为尺度因子并假定a>0;b为平移因子。
对于任意二次方可积函数f(t)∈L2(R),其连续小波变换定义为
(2)
AlexNet由2012年ImageNet竞赛冠军获得者Hinton和他的学生Krizhevsky等[12]设计。AlexNet是第二代CNN,在第一代CNN的基础上加深了网络架构,能够提取更丰富更高维的图片特征。AlexNet主要包含8层:前5层是卷积层;后3层是全连接层,最后1层的输出经过Softmax函数,产生1 000类标签的概率分布。详细结构如图1所示,不同于第一代CNN,AlexNet使用两个GPU进行训练,其网络结构的上下部分完全相同,只在特定层进行信息交互以完成对图片的并行处理。AlexNet已广泛应用于图像识别、图像检索、语音识别等领域。
图1 AlexNet结构图Fig.1 AlexNet structure diagram
Adaboost算法由Freund等[13]开发,Adaboost会在训练数据集中产生一系列权重,从而对训练数据进行调整以生成多个假设。在每次迭代中,调用学习算法以最小化训练数据集上的加权误差,并将其应用于更新训练数据集的权重。权重变化的影响是将更多的权重放在被误分类的训练数据上,将更少的权重放在正确分类的训练数据上。因此,随着迭代的进行,Adaboost会逐步构造更难的学习问题。Adaboost算法的过程如下:
步骤2迭代过程m=1~M
(a) 使用带权重wi的训练数据来训练分类器Tm(x)
(b) 计算分类结果误差
(3)
(c) 计算权重系数
(4)
(d) 更新权重
wi+1=wi·exp{αm·Ⅱ[ci≠Tm(x)]},i=1,2,…,m
(5)
(e) 归一化wi;
步骤3输出预测值
(6)
原始的Adaboost算法仅限于二分类问题,Zhu等[14]对Adaboost算法进行了改进,使用多分类指数损失函数的阶段性加法建模,改进后的Adaboost算法与原算法非常相似,主要区别为权重系数计算公式
(7)
式中,K为总分类数。
本文取1 024个采样点为一个样本,通过重叠采样来增加样本数量[15]。假设原数据数列数据点个数为M,样本长度为N,采样偏移量为ΔX,则该数列可以产生样本个数为Y,其公式为
(8)
使用‘cmor3-3’小波,尺寸序列长度为256,采样频率为12 kHz,分别对正常轴承、内圈故障轴承、外圈故障轴承和滚动体故障轴承的振动信号做小波变换绘制时频图,去除时频图周边的坐标、文字、能量条部分,将所得到的时频图尺寸调整为227×227。
AlexNet虽然拥有更强的学习能力,但是它的网络结构也更为复杂,且需要两个GPU并行运算以及上百万个训练样本,相应的时间成本和经济成本会大大增加。相对于上千种类的图片分类问题,数十种类的滚动轴承故障识别属于少类别的任务,因此可以在避开百万级数据样本和多个GPU并行运算的要求下,通过精简AlexNet的结构的同时运用它包含的部分新技术来解决滚动轴承故障识别问题[16]。本文使用的AlexNet结构如图2所示。
随机梯度下降(stochastic gradient descent,SGD)算法是目前使用最多的梯度下降优化算法之一,SGD算法通常可以找到最优解,但是会花费远多于自适应优化算法的时间,且SGD算法非常依赖于鲁棒的初始化值以及退火策略。而自适应优化算法可以在不调参的情况下使用更短的时间得到较好的效果,常用的自适应优化算法有Adadelta、RMSprop和Adam等,上述3种算法非常相似,在相同的情况下都能得到较好的结果[17]。本文使用收敛速度最快的RMSprop算法来训练模型。
vi=β·vi+(1-β)(∇wi)2
(9)
(10)
式中:i为迭代次数;α为全局学习率;vi为累计平方梯度;β为衰减率; ∇wi为梯度累计量;wi为被更新的权值。
本研究方法的流程图如图3所示。
图3 AlexNet-Adaboost算法流程图Fig.3 AlexNet-Adaboost algorithm flow chart
本研究方法的具体步骤如下:
步骤1采集滚动轴承在不同工况、不同状态下的振动信号;
步骤2通过小波变换将一维的振动信号转化为227×227尺寸的二维时频图;
步骤4使用带权重的训练数据来训练第一个基分类器;
步骤5使用测试数据集计算基分类器的分类结果误差,并计算权重系数;
步骤6根据权重系数更新训练数据集的权重,提高误分类样本的权重,并将权重归一化;
步骤7使用更新权重后的训练数据集训练下一个基分类器;
步骤8重复步骤5~步骤7直到所需基分类器全部训练完成;
步骤9将所有的基分类器按权重系数组合成最终的强分类器;
步骤10使用最终的强分类器进行多工况下的滚动轴承故障识别。
分析过程的具体流程如图4所示。
图4 分析过程流程图Fig.4 Analysis process flow chart
本文所用振动数据为美国凯斯西储大学轴承数据库的滚动轴承振动加速度数据[18]。试验数据包括正常、内圈故障、外圈故障和滚动体故障信号,在4种工况(电动机负载分别为735.498 75 W,1 470.997 50 W,2 206.496 25 W)下各收集3种损伤直径(0.177 8 mm,0.355 6 mm,0.533 4 mm)数据,总共为40种状态如表1和表2所示。每种状态收集450个样本,共收集18 000个训练样本,分为15 000个训练样本和3 000个测试样本。
表1 轴承故障状态标签Tab.1 Bearing fault status label
表2 轴承正常状态标签Tab.2 Bearing normal status label
由于每种状态样本数量较少,为了增加模型的泛化能力,防止过拟合,在训练前进行数据增强,每张图片的高度和宽度按10%比例随机竖直水平偏移,并随机对整张图片进行水平翻转。除数据增强外,训练时会进行样本重采样处理,每个训练阶段实际使用的样本数量为真实样本的三倍。
滚动轴承的主要作用之一是承载负荷,因此当电动机负载发生变化时,不得不考虑滚动轴承故障识别方法是否仍然具有较高的识别准确率,所以要求识别方法有较好的泛化能力。对此,本文使用AlexNet-Adaboost、CNN-Adaboost、AlexNet、CNN和传统机器学习方法SVM(support vector machine)分别在单工况和多工况下进行故障识别进行对比试验。对比试验使用同样的数据集分别测试使用不同方法的识别准确率。同时,为排除试验的偶然性,对每种方法分别运行5次的准确率取平均值得到最终结果。
SVM的最优参数通过在单独划分出的验证数据集上进行网格搜索得到。本文方法使用的基分类器与AlexNet方法相同,结构见图2;CNN-Adaboost方法使用的基分类器和CNN方法相同,结构如图5所示。AlexNet模型和CNN模型都通过RMSprop算法来训练,全局学习率设置为0.000 1,衰减率设置为0.000 001,批量尺寸设置为32,迭代次数设置为15。
图5 CNN结构图Fig.5 CNN structure diagram
首先,分析单工况下的滚动轴承故障识别,单工况数据集包括在电动机负载为0的情况下滚动轴承不同故障部位不同损伤直径共10种状态。故障识别结果如图6所示,使用AlexNet或者CNN作为基分类器通过Adaboost集成得到的强分类器准确率都为100%;AlexNet方法和CNN方法准确率分别为99.73%和98.13%;SVM准确率为99.33%。可以看出,在单工况下进行故障识别较为简单,几种方法都可以得到较好的识别效果。
图6 单工况下不同方法的故障识别准确率Fig.6 Fault recognition accuracy of different methods under single working condition
其次,分析多工况下的滚动轴承故障识别,多工况数据集包括滚动轴承在4种工况下滚动轴承不同故障部位不同损伤直径共40种状态。结果如图7所示,使用AlexNet作为基分类器时,5个基分类器集成得到的强分类器准确率为98.43%,3个基分类器进行集成得到的准确率为98.2%;使用CNN作为基分类器时,5个基分类器集成得到的强分类器准确率为95.1%,3个基分类器进行集成得到的准确率为93.87%;AlexNet和CNN准确率分别为90.87%和81.33%;SVM方法准确率为93.57%。可以看出,在多工况下进行故障识别,本文方法仍有高的准确率,而其他几种方法的准确率都显著降低。综述,本文方法准确率最高,且具有较好的泛化性能。
图7 多工况下不同方法的故障识别准确率Fig.7 Fault recognition accuracy of different methods under multiple working conditions
本文提出了一种基于AlexNet-Adaboost相结合的滚动轴承故障识别方法。构造不同数量的AlexNet模型作为基分类器,形成最终的AlexNet-Adaboost强分类器,实现了多工况条件下滚动轴承的40种类别的状态识别。该方法可以通过提高被前一个基分类器错误分类样本的权重并用来训练下一个基分类器,最终提高整体样本的识别准确率,充分利用有限的数据集得到更高的准确率。与CNN-Adaboost、AlexNet、CNN和SVM方法相比,所提方法应用于凯斯西储大学轴承数据集进行滚动轴承故障识别,在多工况条件下对滚动轴承不同位置、不同损伤程度的40种类故障识别准确率最高,且相对于其他方法有更好的泛化能力,证明了该方法的有效性。