《Deep residual shrinkage networks for fault diagnosis》 基于深度残差收缩网络的故障诊断(翻译与python代码)
Posted 100分100开心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Deep residual shrinkage networks for fault diagnosis》 基于深度残差收缩网络的故障诊断(翻译与python代码)相关的知识,希望对你有一定的参考价值。
基于深度残差收缩网络的故障诊断(翻译)
论文连接:https://ieeexplore.ieee.org/document/8850096
python代码:https://github.com/zhao62/Deep-Residual-Shrinkage-Networks
引用格式:
M. Zhao, S. Zhong, X. Fu, B. Tang, M. Pecht, Deep residual shrinkage networks for fault diagnosis, IEEE Transactions on Industrial Informatics, vol. 16, no. 7, pp. 4681-4690, 2020.
摘要:本文提出了一种新的深度学习方法,名为深度残差收缩网络(DRSN),来提高深度学习方法从强噪声信号中学习特征的能力,并且取得较高的故障诊断准确率。软阈值化作为非线性层,嵌入到深度神经网络之中,以消除不重要的特征。更进一步地,考虑到软阈值化中的阈值是难以设定的,本文所提出的DRSN采用了一个子网络,来自动地设置这些阈值,从而回避了信号处理领域的专业知识。该方法的有效性通过多种不同噪声下的实验进行了验证。
关键词:深度学习,深度残差网络,故障诊断,软阈值化,振动信号
一.引言
旋转机械在制造业、电力供应、运输业和航天工业都是很重要的。然而,因为这些旋转机械在严酷的工作环境下运行,其机械传动系统不可避免地会遭遇一些故障,并且会导致事故和经济损失。准确的机械传动系统故障诊断,能够利于安排维修计划、延长服役寿命和确保人身安全[1]-[3]。
现有的机械传动系统故障诊断算法可分为两类:一类是基于信号分析的方法,另一类是基于机器学习的方法[4]。通常,基于信号分析的故障诊断方法通过检测故障相关的振动成分或者特征频率,来确定故障类型。然而,对于大型旋转机械,其振动信号往往是由许多不同的振动信号混叠而成的,包括齿轮的啮合频率、轴和轴承的旋转频率等。更重要地,当故障处于早期阶段时,故障相关的振动成分往往是比较微弱的,容易被其他的振动成分和谐波所淹没。总而言之,传统基于信号分析的故障诊断方法经常难以检测到故障相关的振动成分和特征频率。
从另一方面来讲,基于机器学习的故障诊断方法,在诊断故障的时候不需要确定故障相关的成分和特征频率。首先,一组统计特征(例如峭度、均方根值、能量、熵)能够被提取来表征健康状态;然后一个分类器(例如多分类支持向量机、单隐含层的神经网络、朴素贝叶斯分类器)能够被训练以诊断故障。然而,所提取的统计特征经常是判别性不足的,难以区分故障,从而导致了较低的诊断准确率。因此,寻找一个判别性强的特征集,是基于机器学习的故障诊断方法所面临的一个长期挑战[5]。
近年来,深度学习方法[6],即包含多个非线性映射层的机器学习方法,成为了基于振动信号进行故障诊断的有力工具。深度学习方法能够自动地从原始振动数据中学习特征,以取代传统的统计特征,获得更高的诊断准确率。许多深度学习方法已经在机械故障诊断领域得到了应用[7]-[14]。例如,Ince等人[7]采用一维卷积神经网络(ConvNet),从电流信号中学习特征,用于实时电机故障诊断。Shao等人[9]采用一种卷积深度置信网络,用于电机轴承的故障诊断。然而,对于传统深度学习方法,参数优化经常是一个困难的任务。误差函数的梯度,在逐层反向传播的过程中,逐渐变得不准确。因此,在输入层附近的一些层的参数不能够很好地被优化。
深度残差网络(ResNet)是ConvNet的一个新颖变种,采用了恒等路径来减轻参数优化的难度[15]。在ResNet中,梯度不仅逐层地反向传播,而且通过恒等路径直接传递到之前的层[16]。由于优越的参数优化能力,ResNet在最近的一些研究中,已经被应用于故障诊断[17]-[20]。例如,Ma等人[17]将一种解调时频特征输入ResNet,应用于不稳定工况下的行星齿轮箱故障诊断。Zhao等人[18]使用ResNet融合多组小波包系数,应用于故障诊断。相较于普通的ConvNet,ResNet的优势在这些论文中已经得到了验证。
从大型旋转机械(例如风电、机床、重型卡车)所采集的振动信号,经常包含着大量的噪声。在处理强噪声振动信号的时候,ResNet的特征学习能力经常会降低。ResNet中的卷积核,其实就是滤波器,在噪声的干扰下,可能不能检测到故障特征。在这种情况下,在输出层所学习到的高层特征,就会判别性不足,不能够准确地进行故障分类。因此,开发新的深度学习方法,应用于强噪声下旋转机械的故障诊断,是十分必要的。
本文提出了两种深度残差收缩网络(DRSNs),即通道间共享阈值的深度残差收缩网络(DRSN-CS)、通道间不同阈值的深度残差收缩网络(DRSN-CW),来提高从强噪振动信号中学习特征的能力,最终提高故障诊断准确率。本文的主要贡献总结如下:
1)软阈值化(也就是一种流行的收缩方程)作为非线性层,被嵌入深度框架之中,以有效地消除噪声相关的特征。
2)采用特殊设计的子网络,来自适应地设置阈值,从而每段振动信号都有着自己独特的一组阈值。
3)在软阈值化中,共考虑了两种阈值,也就是通道间共享的阈值、通道间不同的阈值。这也是所提出方法DRSN-CS和DRSN-CW的名称由来。
本文的剩余部分安排如下。第二部分简要地回顾了经典的深度残差网络,并且详细阐述了所提出的DRSN-CS和DRSN-CW。第三部分进行了实验对比,第四部分进行了总结。
二.深度残差收缩网络的原理
如第一部分所述,作为一种潜在的、能够从强噪声振动信号中学习判别性特征的方法,本研究考虑了深度学习和软阈值化的集成。相对应地,本部分注重于开发ResNet的两个改进变种,即DRSN-CS和DRSN-CW。本节对相关理论背景和必要想法进行了详细介绍。
A. 基本组成
不管是ResNet,还是所提出的DRSN,都有一些基础的组成,和传统ConvNet是相同的,包括卷积层、整流线性单元激活函数、批标准化、全局均值池化、交叉熵误差函数。这些基本组成的概念在下面进行了介绍。
卷积层是使得ConvNet不同于传统全连接神经网络的关键。卷积层能够大量减少所需要训练的参数数量。这是通过用卷积运算,取代矩阵乘法,来实现的。卷积核中的参数,比全连接层中的权重,少得多。更进一步地,当参数较少时,深度学习不容易遭遇过拟合,从而能够在测试集上获得较高的准确率。输入特征图和卷积核之间的卷积运算,附带着加上偏置,能够用公式表示为
y j = y_j= yj= ∑ i ∈ M j x i ∗ k i j + b j \\displaystyle\\sum_{_i∈M_j} x_i *k_ij+b_j i∈Mj∑xi∗kij+bj
其中, x i x_i xi是输入特征图的第 i i i个通道, y j y_j yj是输出特征图的第 j j j个通道, k k k是卷积核, b b b是偏置, M j M_j Mj是用于计算输出特征图的第 j j j个通道的输入通道的集合[20]。可以通过重复一定次数的卷积运算,来获得输出特征图。
图1展示了卷积的过程。如图1(a)和(b)所示,特征图和卷积核实际上都是三维张量。在本文中,一维振动信号作为输入,所以特征图和卷积核的高度始终都是1。如图1( c)所示,卷积核在输入特征图上滑动,从而获得输出特征图的一个通道。在每个卷积层中,通常有多于一个卷积核,从而输出特征图有多个通道。
图1 (a)特征图、(b)卷积核和( c)卷积过程示意图
批标准化是一种嵌入到深度学习结构的内部、作为可训练层的一种特征标准化方法。批标准化的目的在于减轻内部协方差漂移的问题,即特征的分布经常在训练过程中持续变化。在这种情况下,所需训练的参数就需要不断地适应变化的特征分布,从而增大了训练的难度。批标准化在第一步对特征进行标准化,获得一个固定的分布(均值为零、标准差为1),然后在训练过程中自适应地调整这个分布。批标准化的计算流程如下:
μ = μ= μ= 1 N b a t c h \\frac{1}{N_batch} Nbatch1 ∑ n = 1 N b a t c h x n \\sum_{n=1}^{N_batch}x_n ∑n=1Nbatchxn
σ 2 = σ^2= σ2= 1 N b a t c h \\frac{1}{N_batch} Nbatch1 ∑ n = 1 N b a t c h ( x n − μ ) 2 \\sum_{n=1}^{N_batch} (x_n - μ)^2 ∑n=1Nbatch(xn−μ)2
x ^ n \\widehat{x}_n x n = ( x n − μ ) √ ( σ 2 + ϵ ) =\\frac{(x_n-μ)}{√(σ^2+ϵ)} =√(σ2+ϵ)(xn−μ)
y n = γ y_n=γ yn=γ x ^ n \\widehat{x}_n x n+β
其中, x n x_n xn和 y n y_n yn分别表示一个小批量中第 n n n个样本的输入特征和输出特征, γ γ γ和 β β β分别表示尺度化和平移分布的两个可训练参数, ϵ ϵ ϵ是一个接近于零的正数。
激活函数通常是神经网络中必不可少的一部分,一般是用来实现非线性变换的。在过去的几十年中,很多种激活函数被提出来,例如Sigmoid、Tanh和ReLU。其中,ReLU激活函数最近得到了很多关注,这是因为ReLU能够很有效地避免梯度消失的问题。ReLU激活函数的导数要么是1,要么是0,能够在特征在层间传递的时候,帮助控制特征的取值范围大致不变。ReLU激活函数的表达式为
y = m a x ( x , 0 ) y=max(x,0) y=max(x,0)
其中, x x x和 y y y分别表示ReLU激活函数的输入和输出特征。
全局均值池化是从特征图的每个通道计算一个平均值的运算。通常,全局均值池化是在最终输出层之前使用的。全局均值池化可以减少全连接输出层的权重数量,从而降低深度神经网络遭遇过拟合的风险。全局均值池化还可以解决平移变化问题,从而深度神经网络所学习得到的特征,不会受到故障冲击在时域波形中位置变化的影响。
交叉熵损失函数通常作为多分类问题的目标函数,朝着最小的方向进行优化。相较于传统的均方差损失函数,交叉熵损失函数经常能够提供更快的训练速度。这是因为,交叉熵损失函数对于权重的梯度,相较于均方差损失函数,不容易减弱到零。为了计算交叉熵损失函数,首先要用softmax函数将特征转换到零一区间,表示如下:
y j = e x j ∑ i = 1 N c l a s s e x i y_j= \\frac{e^{x_j }}{\\sum_{i=1}^{N_class}e^{x_i } } yj=∑i=1Nclassexiexj
其中, x x x和 y y y分别表示softmax函数的输入和输出特征, i i i和 j j j表示输出层神经元的序号, N c l a s s N_class Nclass表示类别数量。此处, y j y_j yj被视为一个样本归属于第 j j j个类别的预测概率。然后,每个样本的交叉熵误差函数表示如下:
E = − ∑ j = 1 N c l a s s t j l o g ( y j ) E=-∑_{j=1}^{N_class} t_j log(y_j) E=−∑j=1Nclasst以上是关于《Deep residual shrinkage networks for fault diagnosis》 基于深度残差收缩网络的故障诊断(翻译与python代码)的主要内容,如果未能解决你的问题,请参考以下文章
Deep Residual Learning for Image Recognition
Deep Residual Learning for Image Recognition(MSRA-深度残差学习)
论文笔记-Identity Mappings in Deep Residual Networks
论文笔记-Identity Mappings in Deep Residual Networks
PyTorch笔记 - ResNet: Deep Residual Learning for Image Recognition