唐 魏,鄭 源,潘 虹,徐晶珺
1.河海大學(xué) 水利水電學(xué)院,南京 210098
2.河海大學(xué) 創(chuàng)新研究院,南京 210098
3.河海大學(xué) 能源與電氣學(xué)院,南京 211100
隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的快速發(fā)展,當(dāng)前社會(huì)數(shù)據(jù)的增長(zhǎng)十分迅速,在軸承故障診斷領(lǐng)域更是如此[1],形成海量的各種設(shè)備來(lái)源、各種形式的故障和正常數(shù)據(jù),這導(dǎo)致屬于淺層學(xué)習(xí)的傳統(tǒng)軸承故障診斷方法具有無(wú)法充分挖掘數(shù)據(jù)深層特征的局限性[2]。深度學(xué)習(xí)作為大數(shù)據(jù)時(shí)代的產(chǎn)物,由于其具有多個(gè)隱含層,能夠?qū)崿F(xiàn)復(fù)雜非線性函數(shù)的表示,在特征自動(dòng)提取上具有很多其他算法不可比擬的優(yōu)勢(shì)[3]。
深度學(xué)習(xí)目前較為成熟的算法有4 種[4]:深度置信網(wǎng)絡(luò)(Deep Belief Network,DBN),卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN),循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN),堆疊自編碼網(wǎng)絡(luò)(Stacked Auto-Encoder,SAE)。深度學(xué)習(xí)在軸承故障診斷領(lǐng)域也已經(jīng)進(jìn)行了大量的應(yīng)用[5-9],其中SAE網(wǎng)絡(luò)的應(yīng)用研究方面,Sun等[10]利用SAE實(shí)現(xiàn)軸承故障診斷,并分析了Dropout 對(duì)于故障識(shí)別率的影響;張西寧等[11]運(yùn)用帶標(biāo)準(zhǔn)化的堆疊自編碼網(wǎng)絡(luò)進(jìn)行滾動(dòng)軸承故障診斷研究;杜燦誼等[12]運(yùn)用螢火蟲(chóng)算法優(yōu)化SAE網(wǎng)絡(luò)參數(shù);侯文擎等[13]利用粒子群算法優(yōu)化SAE 網(wǎng)絡(luò)超參數(shù);鄭近德等[14]結(jié)合多尺度熵和自編碼器進(jìn)行滾動(dòng)軸承故障診斷。
可以看出目前SAE 在軸承故障診斷領(lǐng)域的應(yīng)用研究主要集中在超參數(shù)的優(yōu)化、輸入數(shù)據(jù)形式、不同樣本數(shù)據(jù)長(zhǎng)度和網(wǎng)絡(luò)結(jié)構(gòu)對(duì)準(zhǔn)確率的影響的研究上,關(guān)于SAE網(wǎng)絡(luò)反向微調(diào)的有標(biāo)簽數(shù)據(jù)量,文獻(xiàn)[10-14]中多表示為少量有標(biāo)簽數(shù)據(jù),很少有人進(jìn)行量化研究和探究減少有標(biāo)簽數(shù)據(jù)的措施,如果能減少所需要的有標(biāo)簽數(shù)據(jù)量,則能大量減少人工標(biāo)簽的時(shí)間,節(jié)約人力成本。普通的深度學(xué)習(xí)網(wǎng)絡(luò)采用一個(gè)固定的學(xué)習(xí)率,這樣對(duì)學(xué)習(xí)率的設(shè)置需要大量經(jīng)驗(yàn),設(shè)置過(guò)大會(huì)導(dǎo)致難以收斂或跳過(guò)最優(yōu)值,設(shè)置過(guò)小會(huì)導(dǎo)致收斂速度過(guò)慢,文獻(xiàn)[15-23]研究了動(dòng)態(tài)學(xué)習(xí)率解決這個(gè)問(wèn)題,但其研究主要集中在CNN 和DBN 上,利用動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率加快收斂速度和收斂精度。
本文基于堆疊自編碼網(wǎng)絡(luò)進(jìn)行軸承故障診斷研究,提出動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率取代原始的固定學(xué)習(xí)率進(jìn)行預(yù)訓(xùn)練,通過(guò)不同有標(biāo)簽數(shù)據(jù)量反向微調(diào),研究不同學(xué)習(xí)率和有標(biāo)簽數(shù)據(jù)量對(duì)于軸承故障分類識(shí)別的影響。
自編碼器(auto-encoder)是 Rumelhart 在 1986 年提出的一種單隱藏層神經(jīng)網(wǎng)絡(luò)[24],其結(jié)構(gòu)如圖1所示,這種網(wǎng)絡(luò)是在無(wú)監(jiān)督學(xué)習(xí)的方式下,使得輸入和輸出盡可能保持一致。假設(shè)輸入為n維的數(shù)據(jù)X,輸出為n維的數(shù)據(jù)Y,輸入數(shù)據(jù)通過(guò)全連接的方式加權(quán)求和,加上偏置之后在激活函數(shù)的作用下,得到隱藏層H,數(shù)據(jù)維度為k維,隱藏層再通過(guò)同種方式得到輸出層,然后利用反向傳播算法,以縮小輸入、輸出的差異為目標(biāo),對(duì)權(quán)值和偏置進(jìn)行迭代更新,直到滿足誤差的要求或是迭代步數(shù)的要求。自編碼器數(shù)學(xué)表達(dá)如下:
式中,Wa∈ Rn×k、Ws∈ Rk×n、ba∈ Rk、bs∈ Rk為需要優(yōu)化求解的權(quán)值和偏置,σa(?)、σs(?)為激活函數(shù)。
圖1 自編碼器結(jié)構(gòu)示意圖
堆疊自編碼網(wǎng)絡(luò)(SAE)由 Hinton 于 2006 年對(duì)Rumelhart 提出的自編碼器進(jìn)行改進(jìn)而來(lái)[25],其結(jié)構(gòu)圖如圖2所示。將自編碼器的編碼部分進(jìn)行堆疊,即第一層自編碼器的輸入為原始數(shù)據(jù),自此下一層自編碼器的輸入為上一層自編碼器的隱藏層數(shù)據(jù),最后給網(wǎng)絡(luò)加上分類器,就構(gòu)成了SAE。堆疊自編碼網(wǎng)絡(luò)采用的是預(yù)訓(xùn)練和反向微調(diào)相結(jié)合的訓(xùn)練方式,即先用大量的無(wú)標(biāo)簽數(shù)據(jù)進(jìn)行無(wú)監(jiān)督學(xué)習(xí),自主提取特征,然后利用有標(biāo)簽數(shù)據(jù)對(duì)網(wǎng)絡(luò)反向微調(diào)。預(yù)訓(xùn)練和反向微調(diào)過(guò)程采用的均是梯度下降算法。
圖2 SAE結(jié)構(gòu)示意圖
實(shí)驗(yàn)數(shù)據(jù)源于美國(guó)西儲(chǔ)大學(xué)(CWRU)軸承數(shù)據(jù)中心[26],CWRU數(shù)據(jù)集是世界公認(rèn)的軸承故障診斷標(biāo)準(zhǔn)數(shù)據(jù)集。所使用的軸承故障位置為外圈滾道、內(nèi)圈滾道、滾動(dòng)體,故障的程度為3 類,分別為0.18 mm、0.36 mm、0.54 mm,9 種故障數(shù)據(jù)加上正常的數(shù)據(jù)就得到了10 種狀態(tài)的軸承數(shù)據(jù),數(shù)據(jù)集為用加速度傳感器采集的電機(jī)殼體的驅(qū)動(dòng)端的振動(dòng),頻率為12 kHz。每種狀態(tài)使用中間位置的120 990 個(gè)節(jié)點(diǎn)的數(shù)據(jù),取前50 990 個(gè)節(jié)點(diǎn)為訓(xùn)練數(shù)據(jù),其余為測(cè)試數(shù)據(jù)。
3.2.1 歸一化
實(shí)驗(yàn)使用原始的軸承數(shù)據(jù),只對(duì)振動(dòng)數(shù)據(jù)進(jìn)行歸一化,歸一化公式如下[8]:
3.2.2 數(shù)據(jù)集增強(qiáng)
設(shè)置每個(gè)樣本的數(shù)據(jù)長(zhǎng)度為1 000,為了得到更多的訓(xùn)練樣本,采用滑動(dòng)窗口重疊采樣數(shù)據(jù)增強(qiáng)技術(shù)[27],原理如圖3 所示,偏移量設(shè)置為10,得到每種狀態(tài)的訓(xùn)練數(shù)據(jù)的樣本量為5 000,測(cè)試數(shù)據(jù)不進(jìn)行重疊,得到每種狀態(tài)的測(cè)試數(shù)據(jù)樣本量為70,這樣訓(xùn)練數(shù)據(jù)樣本總和為50 000,測(cè)試數(shù)據(jù)樣本總和為700。
圖3 數(shù)據(jù)增強(qiáng)原理圖
實(shí)驗(yàn)在MATLAB2014b 平臺(tái)上進(jìn)行,激活函數(shù)為sigmoid,輸出分類器為softmax,使用GPU進(jìn)行加速運(yùn)算。
設(shè)置恒定的預(yù)訓(xùn)練學(xué)習(xí)率為0.1,預(yù)訓(xùn)練迭代次數(shù)為700步,反向微調(diào)學(xué)習(xí)率為0.01,反向微調(diào)有標(biāo)簽樣本占比為10%,迭代次數(shù)為1 000步,batchsize設(shè)置為100。根據(jù)文獻(xiàn)[22]BP 神經(jīng)網(wǎng)絡(luò)關(guān)于隱含層節(jié)點(diǎn)數(shù)的經(jīng)驗(yàn)公式:
其中,m為輸入數(shù)據(jù)節(jié)點(diǎn)長(zhǎng)度,n為輸出數(shù)據(jù)節(jié)點(diǎn)長(zhǎng)度,k為[0,10]以內(nèi)的常數(shù)。結(jié)合實(shí)例,確定隱含層節(jié)點(diǎn)數(shù)為105。
為研究不同隱含層層數(shù)對(duì)于軸承故障分類識(shí)別的影響,設(shè)置隱含層層數(shù)分別為1、2、3、4、5、6層的對(duì)比實(shí)驗(yàn),取十次結(jié)果的平均值作為最終結(jié)果,得到的準(zhǔn)確率如表1。
表1 不同隱含層層數(shù)的結(jié)果對(duì)比
從表1可以看出,隱含層層數(shù)為3時(shí)準(zhǔn)確率最高,當(dāng)隱含層層數(shù)為6時(shí),準(zhǔn)確率隨著層數(shù)的增加下降速度變快。以上結(jié)果說(shuō)明,網(wǎng)絡(luò)結(jié)構(gòu)太淺不利于數(shù)據(jù)特征的表達(dá),太深則會(huì)導(dǎo)致網(wǎng)絡(luò)特征的丟失。
采用下一層隱含層節(jié)點(diǎn)數(shù)為當(dāng)前層節(jié)點(diǎn)數(shù)的一半的策略對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化[28],確定網(wǎng)絡(luò)結(jié)構(gòu)為[1 000-500-250-125-10],并與其他網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行對(duì)比分析,所有結(jié)果均為實(shí)驗(yàn)十次取平均值。
從表2 可以看出,采用[1 000-500-250-125-10]網(wǎng)絡(luò)結(jié)構(gòu)的準(zhǔn)確率最高,在后續(xù)的研究中選取該網(wǎng)絡(luò)結(jié)構(gòu)。
表2 不同網(wǎng)絡(luò)結(jié)構(gòu)準(zhǔn)確率對(duì)比
梯度下降法訓(xùn)練SAE 網(wǎng)絡(luò)實(shí)質(zhì)就是利用損失函數(shù)對(duì)權(quán)重的偏導(dǎo)數(shù)迭代調(diào)整網(wǎng)絡(luò)的權(quán)重,其中權(quán)值的更新計(jì)算公式如下:
式中,Wi和Wi+1是計(jì)算過(guò)程中第i次迭代和第i+1 次迭代過(guò)程中的權(quán)值,η為學(xué)習(xí)率,Li為損失函數(shù)。
學(xué)習(xí)率是訓(xùn)練過(guò)程中一個(gè)非常重要的參數(shù)[18]。過(guò)大的學(xué)習(xí)率會(huì)導(dǎo)致收斂困難或跳過(guò)最優(yōu)解,而過(guò)小的學(xué)習(xí)率則會(huì)導(dǎo)致收斂速度過(guò)慢,增加計(jì)算時(shí)間,不利于效率的提高,為了解決這一問(wèn)題,需要采用非恒定的學(xué)習(xí)率。
由于損失函數(shù)對(duì)權(quán)重的偏導(dǎo)數(shù)較為復(fù)雜,選取預(yù)訓(xùn)練中輸入數(shù)據(jù)的重構(gòu)誤差作為學(xué)習(xí)率調(diào)整的依據(jù),參考文獻(xiàn)[16],確定如下的學(xué)習(xí)率調(diào)整策略:
其中,h(i)為迭代次數(shù)為i時(shí)的學(xué)習(xí)率,h(i+1)為迭代次數(shù)為i+1 時(shí)的學(xué)習(xí)率,ΔLi為迭代次數(shù)為i(i >2)次時(shí)重構(gòu)誤差的梯度,采用向前差商法計(jì)算重構(gòu)誤差的梯度,求解方法如式(9)所示:
通過(guò)式(9)的計(jì)算,當(dāng)重構(gòu)誤差波動(dòng)下降時(shí),得到的重構(gòu)梯度為負(fù),這樣學(xué)習(xí)率便以較慢的方式減小,避免學(xué)習(xí)率減小過(guò)快。為了避免學(xué)習(xí)率過(guò)低導(dǎo)致梯度消失的問(wèn)題,將學(xué)習(xí)率的范圍限制在0.01~5范圍內(nèi)。動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率的預(yù)訓(xùn)練流程如圖4所示。
分別設(shè)置固定學(xué)習(xí)率為0.01、0.1、0.2、0.3與該動(dòng)態(tài)調(diào)節(jié)的學(xué)習(xí)率進(jìn)行對(duì)比實(shí)驗(yàn),動(dòng)態(tài)調(diào)節(jié)的學(xué)習(xí)率初始值設(shè)置為0.2,其他網(wǎng)絡(luò)超參數(shù)保持一致,得到的重構(gòu)誤差曲線如圖5所示。
從圖5 可以看出,學(xué)習(xí)率為0.2、0.1、0.01 和動(dòng)態(tài)調(diào)節(jié)時(shí),重構(gòu)誤差整體都隨著迭代次數(shù)的增加而減小,在學(xué)習(xí)率為0.3時(shí),在迭代初期網(wǎng)絡(luò)發(fā)散,最終會(huì)陷入局部最優(yōu)解;網(wǎng)絡(luò)700 次迭代結(jié)束時(shí),0.01 學(xué)習(xí)率并未穩(wěn)定(未收斂),重構(gòu)誤差具有明顯的下降趨勢(shì),0.1、0.2和動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率曲線基本穩(wěn)定(收斂),其中動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率曲線穩(wěn)定值比其他三者都低,0.2 固定學(xué)習(xí)率的重構(gòu)誤差穩(wěn)定值小于0.1固定學(xué)習(xí)率對(duì)應(yīng)的值。從重構(gòu)誤差下降速度上來(lái)看,在最初階段,動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率和0.2固定學(xué)習(xí)率的重構(gòu)誤差下降速度最快,在迭代進(jìn)行到20步左右時(shí),動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率的重構(gòu)誤差下降速度超過(guò)0.2固定學(xué)習(xí)率,整體上,動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率達(dá)到穩(wěn)定所需要的迭代步數(shù)最少。表3 展示了各種學(xué)習(xí)率網(wǎng)絡(luò)迭代過(guò)程耗時(shí)和收斂時(shí)的重構(gòu)誤差,從表中可以看出采用動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率的收斂時(shí)間相比于較優(yōu)的固定學(xué)習(xí)率要減少17.70%,重構(gòu)誤差下降了22.92%。
圖4 動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率的預(yù)訓(xùn)練流程圖
圖5 不同學(xué)習(xí)率下的重構(gòu)誤差
表3 不同學(xué)習(xí)率對(duì)應(yīng)的結(jié)果對(duì)比
有標(biāo)簽樣本占比為10%時(shí),通過(guò)SAE預(yù)訓(xùn)練和反向微調(diào),達(dá)到了98.97%的正確率,為了探究有標(biāo)簽樣本量對(duì)于SAE網(wǎng)絡(luò)反向微調(diào)過(guò)程的影響,進(jìn)一步設(shè)置了有標(biāo)簽樣本量分別占總樣本量1%、2%、3%、4%、5%、6%、7%、8%、9%九個(gè)不同組。為了保證有標(biāo)簽樣本占比越大,包含的信息越多,有標(biāo)簽樣本的增加規(guī)則如圖6 所示,圖中2%有標(biāo)簽樣本由前面的1%有標(biāo)簽樣本加上另外的1%有標(biāo)簽樣本組成,3%有標(biāo)簽樣本由前面的2%有標(biāo)簽樣本加上另外的1%有標(biāo)簽樣本組成,以此類推。
圖6 有標(biāo)簽樣本的增加規(guī)則
分別采用0.1固定學(xué)習(xí)率和動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率的預(yù)訓(xùn)練方式得到的權(quán)值和偏置進(jìn)行有監(jiān)督的反向微調(diào),故障分類準(zhǔn)確率結(jié)果為進(jìn)行十次實(shí)驗(yàn)得到的平均值,實(shí)驗(yàn)結(jié)果如圖7 和圖8 所示,圖8 為動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率的結(jié)果。由圖7 可以看出,相比于固定學(xué)習(xí)率,動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率在相同的有標(biāo)簽樣本量下得到的準(zhǔn)確率更高,因此達(dá)到相同的準(zhǔn)確率,動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)所需的有標(biāo)簽樣本量更少;準(zhǔn)確率隨著有標(biāo)簽樣本量變化可以分成兩段,第一段是在有標(biāo)簽樣本量從10%減少到6%時(shí),準(zhǔn)確率隨著有標(biāo)簽樣本量的減少下降較慢,第二段是在有標(biāo)簽樣本量小于6%時(shí),識(shí)別率隨著有標(biāo)簽樣本量減少,下降速度比第一段快。從圖8 可以看出,有標(biāo)簽樣本量越多,達(dá)到90%準(zhǔn)確率所需要的迭代步數(shù)越少,網(wǎng)絡(luò)收斂所需要的迭代次數(shù)也減少,收斂也越來(lái)越容易,在綜合考慮迭代次數(shù)和準(zhǔn)確率,當(dāng)有標(biāo)簽樣本量占比為8%左右時(shí),所得到的結(jié)果最優(yōu)。
圖7 兩種學(xué)習(xí)率準(zhǔn)確率變化圖
圖8 不同有標(biāo)簽樣本量準(zhǔn)確率隨迭代步數(shù)變化圖
從表4可以看出,該動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率的SAE模型在故障識(shí)別準(zhǔn)確率上較以往研究中所使用的模型高。
表4 準(zhǔn)確率結(jié)果對(duì)比
t 分布隨機(jī)鄰域嵌入算法(t-distributed Stochastic Neighbor Embedding,t-SNE),由Laurens van der Maaten和 Geoffrey Hinton 于 2008 年提出,t-SNE 算法在降維、聚類、可視化的應(yīng)用上取得了良好的效果。利用t-SNE對(duì)10%、5%、1%有標(biāo)簽樣本量的第三隱含層的數(shù)據(jù)進(jìn)行可視化,結(jié)果如圖9~圖11所示。
圖9 1%有標(biāo)簽樣本可視化
圖10 5%有標(biāo)簽樣本可視化
從圖9~11可以看出,圖11的故障區(qū)分效果最好,每種故障類型都能區(qū)分,圖10相對(duì)于圖11,有少數(shù)故障類型未能區(qū)分,圖9有較多的數(shù)據(jù)重疊。對(duì)比圖9、圖10以及圖11,三者都實(shí)現(xiàn)了故障的聚類,只是缺少有標(biāo)簽樣本對(duì)各種故障進(jìn)行區(qū)分,導(dǎo)致故障識(shí)別準(zhǔn)確率的下降。
圖11 10%有標(biāo)簽樣本可視化
本文從普通的SAE 模型出發(fā),通過(guò)對(duì)比實(shí)驗(yàn)的方法,確定了最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu),在此基礎(chǔ)上,從學(xué)習(xí)率的角度改進(jìn)了普通SAE模型,并使用不同數(shù)量的有標(biāo)簽樣本進(jìn)行網(wǎng)絡(luò)的微調(diào)。通過(guò)以上研究得到如下結(jié)論:
(1)提出了一種動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率方法,改進(jìn)了SAE網(wǎng)絡(luò)。該方法在初始時(shí)刻給予一個(gè)較大的學(xué)習(xí)率,并在迭代過(guò)程中依據(jù)重構(gòu)誤差梯度的正負(fù),確定不同學(xué)習(xí)率的減小策略,為SAE 網(wǎng)絡(luò)動(dòng)態(tài)更新一個(gè)較合適的學(xué)習(xí)率。實(shí)驗(yàn)表明,相比固定學(xué)習(xí)率的SAE網(wǎng)絡(luò),該動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率的SAE 網(wǎng)絡(luò)預(yù)訓(xùn)練收斂時(shí)間減少17.70%,重構(gòu)誤差下降22.92%,相對(duì)于以往的普通模型,故障分類識(shí)別的準(zhǔn)確率更高。
(2)對(duì)于SAE 網(wǎng)絡(luò),反向微調(diào)過(guò)程中軸承故障有標(biāo)簽樣本量越多,故障分類的準(zhǔn)確率越高,模型更快或更容易收斂,當(dāng)有標(biāo)簽樣本量占超過(guò)6%時(shí),隨著有標(biāo)簽樣本量的減少,準(zhǔn)確率降低幅度較小。
(3)相比于固定學(xué)習(xí)率方式,采用該動(dòng)態(tài)調(diào)節(jié)學(xué)習(xí)率進(jìn)行預(yù)訓(xùn)練得到的SAE網(wǎng)絡(luò)權(quán)值和偏置,經(jīng)過(guò)反向微調(diào),在達(dá)到相同準(zhǔn)確率下所需的有標(biāo)簽樣本量更少。