張西寧,向宙,夏心銳,李立帆
(西安交通大學機械制造系統(tǒng)工程國家重點實驗室,710049,西安)
隨著物聯(lián)網、計算機的發(fā)展與普及,各種信息數(shù)據呈現(xiàn)出了井噴式的增長,如何從浩瀚的數(shù)據流中挖掘出所需要的信息,已經成為了當前急需解決的問題之一。在機電大數(shù)據時代,反映裝備狀態(tài)的數(shù)據往往具有總量大、形式多、價值密度低等特點,如再依靠診斷專家手工處理信號獲取信息,猶如大海撈針,因而傳統(tǒng)機械故障診斷“特征提取+模式識別”的模式已然不能滿足從機電大數(shù)據中自動挖掘信息的需求[1]。
深度學習作為大數(shù)據時代的一顆明星,在學術界和工業(yè)界都引起了足夠的重視,在很多傳統(tǒng)的識別任務上都取得了顯著成果。依靠多個隱藏層,深度學習可以很好地實現(xiàn)復雜高維函數(shù)的表示,因而具有強大的表征能力,在特征自動提取上具有很多其他算法不可比擬的優(yōu)勢[2-4]。堆疊自編碼網絡(SAE)是深度學習中最重要的模型之一,由Hinton于2006年對Rumelhart提出的自編碼器進行改進而來[5-6]。SAE采用逐層無監(jiān)督學習的方式初始化深度神經網絡的權值,然后使用少量標簽樣本對網絡進行微調,逐層貪心的訓練方式可有效避免網絡陷入局部最優(yōu),從而改善網絡性能,使深度神經網絡的訓練成為了可能。2007年,Benjio模擬人腦神經元被稀疏激活的特性,在損失函數(shù)中加入稀疏項,構成了稀疏SAE[7];2008年,Vincent向訓練數(shù)據中添加隨機噪聲,有效地避免了網絡陷入局部最優(yōu),構成了降噪SAE[8];2013年,Telmo研究了不同損失函數(shù)下SAE的性能,對損失函數(shù)的選用和改進做出了指導[9]。
在機械故障診斷領域,應用SAE完成了很多故障識別、分類的任務。2015年,雷亞國等人利用普通SAE和降噪SAE實現(xiàn)了對滾動軸承以及行星齒輪箱的故障診斷,并對比了SAE和傳統(tǒng)模式識別方法之間的識別正確率[3,10];2016年,Shao Haidong等人對SAE的損失函數(shù)進行了改進,并用人工魚群算法優(yōu)化了網絡的關鍵結構參數(shù),有效地提高了對齒輪箱以及列車滾動軸承故障的識別率[11];2017年,崔江等人用經過灰色關聯(lián)度優(yōu)化后的SAE提取特征,支持向量機分類,實現(xiàn)了航空發(fā)電機旋轉整流器二極管的故障診斷[12]。此外,SAE在變壓器[13]、核電站[14]、風力發(fā)電機組設備[15]等復雜機電系統(tǒng)的故障診斷領域均有應用,并取得了良好的效果。但是,目前機械故障診斷對SAE的研究大多還處于從人工智能領域“引進+應用”的階段,對網絡性能退化的原因分析及改進還有所欠缺。
2015年,Sergey Ioffe提出了批標準化(BN)的思想,并成功運用在卷積神經網絡(CNN)上,不僅減少了模型的訓練時間,而且提高了圖像識別的正確率,但是由于主要運用在大型圖像CNN上,對BN改善網絡性能的原因分析還有所欠缺[16]。
本文從神經元激活值分布的角度,分析了自動編碼器在參數(shù)較多時性能退化的原因,將BN中的標準化策略應用到SAE上,把神經元按照樣本進行歸一化,然后引入兩個待訓練參數(shù)進行縮放和平移,最后通過激活函數(shù)輸出到下一級神經元。在凱斯西儲大學滾動軸承數(shù)據集以及實驗室實測數(shù)據集上對比了帶標準化的SAE和普通SAE在抗噪性、訓練速度、模型精度等方面的優(yōu)勢。
自編碼器(AE)是由Rumelhart在1986年提出的一種典型單隱層神經網絡[5]。由于這種網絡是在保持輸入與輸出盡可能一致的情形下實現(xiàn)無監(jiān)督方式下的隱層特征提取與參數(shù)學習,因而被稱作自編碼器,從輸入到隱藏層、隱藏層到輸出的過程分別被稱為編碼和解碼。
如圖1所示,自編碼器采用全連接的方式將輸入加權求和,加上偏置后通過激活函數(shù),得到隱藏層;隱藏層通過同樣的方式得到輸出層;然后以輸入、輸出層的差異最小為目標對權值和偏置進行優(yōu)化求解。自編碼器的數(shù)學表述如下
Y=σa(Wa·X+ba)
(1)
(2)
(3)
自編碼器只有簡單的矩陣乘法和矩陣加法運算,激活函數(shù)通常為可導的簡單函數(shù),因而利用鏈式法則,容易得到網絡的梯度,所以網絡的權值和偏置可以采用反向傳播算法進行優(yōu)化求解。
圖1 自編碼器結構示意圖
如圖2所示,將自編碼器的編碼部分進行堆疊,即依次將上一層自編碼器的隱藏層作為下一層自編碼器的輸入,最后給網絡加上分類器,即構成SAE。網絡使用逐層自編碼的方式進行預訓練,由于這種預訓練不需要用到樣本標簽,因而是一種無監(jiān)督的訓練方式。預訓練后,網絡只需要用少量帶標簽的樣本進行微調,即可達到較好的性能。由于每一層自編碼器為淺層神經網絡,因而可以很好地避免網絡陷入局部最優(yōu)[17]。
圖2 SAE結構示意圖
自編碼器是在盡量保證信息不丟失的前提下,對輸入進行編碼,以期編碼特征可以以足夠小的誤差重構回輸入。這種特征編碼可以視為一種特征提取,隨著層級加深,編碼特征便越加抽象,具有全局整體特性。
由于SAE由自編碼器的編碼部分堆疊而成,因而整個網絡也只有簡單的矩陣乘法和矩陣加法運算,激活函數(shù)簡單可導,所以網絡也可以采用梯度相關的算法進行優(yōu)化求解。
利用反向傳播算法求得梯度后,本文利用了自適應動量項(Adam)算法更新需要訓練的參數(shù)。Adam是Kingma和Ba在2014年提出的一種學習率自適應的優(yōu)化算法,具有良好的超參數(shù)魯棒性。Adam包括偏置矯正環(huán)節(jié),可以修正從原點的初始化一階矩(動量項)以及(非中心的)二階矩估計,算法流程如圖3所示[18]。
為了減少網絡訓練過程中數(shù)據的過擬合現(xiàn)象,本文在模型訓練時使用了置零比例(Dropout)訓練技巧。Dropout在每一輪的訓練時,隨機將隱層神經元的輸出按照一定的比例歸0,使得部分神經元不參與正向傳播,這部分神經元在反向傳播階段也沒有任何貢獻,但是其權值卻保存以供下一輪訓練和測試階段使用[19]。
λ為學習率;ρ1和ρ2為矩估計衰減率,推薦0.9和0.999;ε為數(shù)值穩(wěn)定常數(shù),推薦10-8圖3 Adam算法流程圖
(a)第1隱藏層
(b)第2隱藏層
(c)第3隱藏層圖4 各隱藏層神經元激活值分布情況
圖5 ELU激活函數(shù)圖像
為了分析SAE性能退化的原因,在凱斯西儲大學軸承數(shù)據集上構建了一個具有3層編碼層的SAE。該SAE網絡擁有200個訓練樣本,各層神經元的個數(shù)分別為600、400、200、100、10,所以中間3個隱藏層分別擁有400×200(8萬)、200×200(4萬)、100×200(2萬)個激活值,對這些激活值的分布進行統(tǒng)計如圖4所示。從圖中可以看出,各隱藏層神經元的激活值大多集中在-1左右,結合所用激活函數(shù)Exponential Linear Unit(ELU)的圖像(見圖5)可知,網絡大部分神經元已經處于了飽和階段。處于飽和階段的神經元梯度已經消失,喪失了學習能力,嚴重限制了網絡更好地擬合需要學習的拓撲映射關系。
為了解決神經元處于飽和階段學習能力喪失的問題,引入了一種標準化策略。將通過激活函數(shù)前的神經元按照樣本分別進行標準化,然后引入兩個參數(shù)進行縮放和平移,最后再通過激活函數(shù)輸出到下一級神經元,如圖6所示。
圖6 帶標準化SAE
標準化的具體流程為每個神經元都減去均值后除以標準差化為標準分布,為了抵消這種標準化對網絡學習效果的弱化,引入兩個需要學習的參數(shù)對其進行了縮放和平移,計算公式如下
(4)
(5)
(6)
(7)
式中:xi、yi為標準化前、后神經元激活值;m為訓練樣本數(shù)量;γ和β為兩個待學習的參數(shù);ε為一個很小的穩(wěn)定常數(shù)。
為了使反向傳播算法能夠正常進行,對梯度在該步驟的傳播情況進行了分析,計算公式如下
(8)
(9)
(10)
其中
(11)
(12)
(13)
圖7 訓練和測試樣本的標準化策略
對2.1節(jié)中的SAE進行改進,在每次通過激活函數(shù)前都加入標準化層,按照圖4同樣的方式對隱藏層的激活值進行了統(tǒng)計,如圖8所示。利用下式計算圖4、圖8中激活值的分布熵
(14)
式中:P(xi)為激活值xi出現(xiàn)的概率;q為不重復激活值的數(shù)量。計算結果如表1所示。
表1 兩種網絡隱藏層激活值的分布熵
從分析可以看出,加入標準化后,神經元激活值的分布明顯趨于均勻,表明這些激活值處于ELU激活函數(shù)的不同階段,不像圖4那樣大部分處于飽和區(qū),這種特性有利于緩解網絡梯度消失的問題。所以,在網絡每次通過激活函數(shù)前加入標準化策略,可有效地避免網絡由于過早陷入激活函數(shù)飽和區(qū)而導致的學習能力退化問題。
(a)第1隱藏層
(b)第2隱藏層
(c)第3隱藏層圖8 標準化后各隱藏層神經元激活值分布情況
凱斯西儲大學(CWRU)滾動軸承數(shù)據集[20]數(shù)據質量高、故障特征明顯,因而是學術界常用的滾動軸承故障診斷標準數(shù)據集。本文利該數(shù)據集對比標準化前后SAE對故障識別的效果。診斷對象為深溝球軸承SKF6205,分別在其外圈滾道、內圈滾道、滾動體上通過電火花加工模擬不同故障,故障直徑分別為0.18、0.36、0.54 mm 3類不同程度,加上無損傷軸承,實驗共計需要識別10類不同狀態(tài)的軸承。數(shù)據集為用加速度傳感器采集的軸承安裝座上的振動,采集頻率為12 kHz,采樣長度為1 200個點。每類狀態(tài)有100個樣本,共計1 000個,普通SAE和標準化后的SAE均選擇200個樣本訓練,其余800個為樣本測試。為了克服各樣本采集起始時間不一致的問題,本文對數(shù)據進行了快速傅里葉變換(FFT),將信號的頻譜輸入到網絡中進行訓練和測試。
本文在Python3.5.2環(huán)境下利用Google公司的深度學習框架TensorFlow,搭建了普通SAE和帶標準化SAE的數(shù)據流圖;將訓練數(shù)據頻譜輸入到圖中,啟動數(shù)據流圖,利用權值更新模塊自動更新權值;然后網絡訓練完畢后,將測試數(shù)據頻譜輸入數(shù)據流圖進行診斷。網絡結構及訓練超參數(shù)如表2所示。
普通SAE和標準化SAE都分別重復實驗20次,計算20次實驗的平均測試正確率,結果顯示,普通SAE和標準化SAE的識別正確率分別達到了99.99%和100%。為了更加明顯地區(qū)分兩種網絡在識別正確率上的差異,按照下式對原始信號添加了不同信噪比的高斯噪聲
(15)
表2 凱斯西儲大學軸承數(shù)據網絡結構及訓練超參數(shù)
圖9 不同信噪比的測試結果
從圖9可以看出:在信噪比較大的情形下,普通SAE與標準化SAE對故障的識別能力相當,都接近100%;但是在信噪比較小時,標準化SAE對故障的識別能力明顯強于普通SAE。例如,當信噪比為0時,原信號和添加的噪聲信號的能量相等,標準化SAE識別正確率為100%,而普通SAE僅為16.18%。這說明標準化過后的SAE極大地提高了在噪聲環(huán)境下網絡對故障的識別能力。
當信噪比為0時,第一次實驗第一層編碼的誤差以及所有神經元梯度總和隨訓練步數(shù)的變化如圖10所示。從中可以看出,加入標準化后的SAE可使網絡誤差收斂到更小的區(qū)間,避免神經元權值梯度過早消失。
圖10 誤差與神經元梯度總和的變化對比
在實驗室實測數(shù)據上對標準化前后SAE的性能做了進一步的測試。如圖11所示,實驗將滾動軸承安裝在安裝座內,通過預緊裝置對滾動軸承進行軸向預緊,軸承安裝座上的繩索通過滑輪與重物相連,進而模擬滾動軸承的載荷。加速度傳感器IMI601A11采集安裝座上的振動信號,然后傳送到數(shù)采卡UA300,進行采集后存儲到計算機上。實驗所用的6308滾動軸承共有5種狀態(tài),分別為正常、外圈剝落、內圈剝落、滾動體剝落和保持架故障。每種狀態(tài)都分別采集400個樣本,共計2 000個,采樣頻率為10 kHz,采樣長度為2 400個點。
圖11 滾動軸承實驗臺示意圖
數(shù)據樣本被分為訓練集、驗證集、測試集3部分,每部分樣本個數(shù)分別為1 000、500、500。驗證集的目的主要是為了防止網絡過擬合,如圖12所示,當訓練集上訓練誤差穩(wěn)定后,選擇在驗證集上驗證正確率連續(xù)5次下降,或者訓練誤差連續(xù)5次上升,作為網絡訓練終止的標志。
圖12 網絡訓練終止條件
在TensorFlow框架下搭建如表3所示的普通SAE和標準化SAE的數(shù)據流圖,將訓練集輸入網絡進行訓練;每一步訓練完成后,在驗證集上進行驗證,以判斷網絡是否終止;網絡訓練終止后將測試集輸入進行識別。
對普通SAE和標準化SAE均獨立重復訓練測試20次,所用計算機配置為Core i5-6500 CPU @3.20 GHz,內存為16 GB。20次實驗的測試正確率如圖13所示,各層編碼以及微調環(huán)節(jié)的訓練時間如圖14所示。
由圖13可以看出,標準化SAE的測試正確率均在99%以上,而普通SAE的正確率在98%上下波動,統(tǒng)計20次實驗的平均正確率分別為99.95%、97.93%。由圖14可以看出,標準化后SAE各次實驗的訓練時間都比普通SAE低。對這20次訓練時間進行統(tǒng)計,標準化SAE的平均訓練時間為88.66 s,相比普通SAE平均訓練時間141.22 s,下降約37.22%。
表3 實測數(shù)據網絡結構及訓練超參數(shù)
圖13 20次實驗測試結果對比
為了提高SAE的性能,本文從網絡每層編碼值分布的角度對SAE進行了分析。引入了一種標準化策略,在神經元每次通過激活函數(shù)前進行標準化,將神經元按照樣本進行歸一化,然后引入兩個待學習參數(shù)進行縮放和平移,最后通過激活函數(shù)輸出到下一級神經元。為了驗證帶標準化SAE的性能,在凱斯西儲大學軸承數(shù)據集以及實驗室實測數(shù)據集上進行了實驗,得出了如下結論。
圖14 各層編碼及微調訓練時間對比
(1)對網絡每層編碼值的統(tǒng)計分析表明:普通SAE各層編碼值大部分分布于激活函數(shù)的飽和區(qū),這直接導致了神經元權值梯度的消失,使網絡學習能力退化。
(2)引入的標準化策略可有效地使網絡編碼值均勻分布,例如在凱斯西儲大學軸承數(shù)據集上將第一層編碼值的熵從0.88 bit提高到了16.29 bit。神經元激活值的均勻分布表明,這些激活值處于激活函數(shù)的不同階段,不是大部分處于飽和區(qū),這種特性有利于減少SAE權值梯度的消失,避免SAE由于神經元激活值過早陷入激活函數(shù)飽和區(qū)而導致的學習能力退化問題。
(3)利用普通SAE和標準化SAE進行滾動軸承故障診斷,結果表明,加入標準化步驟后的SAE不僅可以提高網絡在噪聲環(huán)境下的識別能力,而且能夠有效地減少網絡的訓練時間。例如在凱斯西儲大學數(shù)據集上,當信噪比為0 dB時,將識別正確率從16.18%提高到了100%;在實驗室實測數(shù)據集上,不僅訓練時間下降了37.22%,而且識別正確率從97.93%提高到了99.95%。
本文對SAE的分析為科研技術人員尋找SAE性能退化原因提供了一種參考,引入的標準化策略為提高SAE性能提供了一種思路。