基於深度學習的軸承故障識別-優化模型

在深度學習的訓練中,常常會遇到過擬合(overfitting)的問題(低偏差和高方差),模型爲了適應訓練集的數據擬合出了非常複雜的曲線,該曲線對於訓練集的數據識別率極高,但泛化能力差,對於不同於訓練集的測試數據執行起來表現很差,準確率大幅降低。

抑制過擬合有幾種方式:1.獲取更多的樣本,例如數據增強技術;2.丟棄一些特徵以獲得更好地容錯能力,例如Dropout機制;3.保留所有的特徵,但是減少參數,確保所有的特徵都對實際性能有貢獻,例如通常所用的L1、L2正則化技術;4.在模型訓練即將過擬合時提前終止訓練或根據過往經驗修改模型的部分參數。以上方法概括一下就是,增加優化約束的能力或干擾優化過程。

在構建深度學習模型的時候,會遇到諸如應該堆疊多少層網絡層、每層包含多少單元、激活函數用哪一種函數、Dropout丟棄率應該選擇多少這類的問題,這些在架構層面的參數爲了區別於模型反向傳播時會自動優化的參數,通常被稱爲超參數(hyperparameter)。對於超參數的調節並沒有成文的規則,只能依靠直覺或經驗來判定,一般會先隨機選擇一組超參數,將模型在訓練數據上擬合,觀察驗證數據上的模型性能,然後不斷嘗試不同的超參數進行比對,最終確定最合適的模型,在測試數據上測試模型的最終性能。


目錄

1.經驗正則化

2.參數正則化

3.激活函數

4.Dropout

5.批標準化


1.經驗正則化

通過工程上的實際經驗來實現更低泛化誤差的方法被稱之爲經驗正則化,主要有提前終止和模型集成兩種方法。提前終止,顧名思義就是在模型即將過擬合時提前終止訓練。模型集成(ensemable method)是通過訓練不同網絡結構、不同激活函數、不同數據集訓練等方法,對多個模型進行投票抉擇的策略。

本文選擇待定卷積層層數、全連接層層數和每層大小,並對三者不同組合的故障識別能力通過驗證集上的結果進行比對,選擇最優的搭配。通過以下代碼來測試全連接層0-2層、卷積層1-3層、每層大小32/64/128時共3的3次方 =27種排列組合中性能最優的模型。

程序運行完後,在TensorBoard的可視化界面中可以觀察27種模型的檢測結果,也可以以csv的格式導出實驗數據,導出的數據生成折線圖如下圖所示。在驗證集上,不同模型的損失率和準確率差異較大,多數模型大體趨勢比較相近。

上圖的標籤是全連接層層數-卷積層層數-節點個數的簡寫。綜合考慮用時及準確率和損失率的表現,由於2卷積層-32個節點-1全連接層的模型在驗證集上準確率和損失率都較優,且訓練用時最短,最終選定模型爲2卷積層-32個節點-1全連接層的CNN模型作爲軸承故障識別的模型。

2.參數正則化

L1、L2正則化方法是最常用的參數正則化方法,L1通常又被稱爲Lasso迴歸,L2爲嶺迴歸(Ridge迴歸),二者都是對迴歸損失函數加一個約束形式,L1、L2正則化的本質是範數約束。

參數正則化可以有效降低模型的複雜度,抑制過擬合。L1正則化會產生大量的0參數使得參數的數量減少,即產生一個稀疏模型,通常用於特徵選擇。L2正則化又稱權重衰減,減低了參數之間的差距,使參數變的更平滑,模型能適應更多的數據集,所以抑制過擬合通常都會選用L2正則化。

添加L2正則化對識別率的影響

3.激活函數

激活函數可以保證神經網絡的非線性。在神經網絡發展早期,sigmoid函數應用較多,在AlexNet出現以後,ReLU函數因其不容易產生梯度消失的優點,逐步取代之前常用的激活函數併成爲最廣泛應用的激活函數。

ReLU函數的神經元計算上更加高效,並且具有很好的稀疏性,更加接近實際生物神經網絡,同一時間約有一半的神經元會處在激活狀態。在優化上,很多激活函數會將輸出值約束在很小的區間內,在激活函數兩端較大範圍的定義域內梯度爲0,造成學習停滯,產生梯度消失,導致權值更新緩慢,訓練難度上升,而ReLU函數爲左飽和函數,x>0時導數爲1,可以緩解神經網絡梯度消失的問題,加速梯度下降的收斂速度。但同時ReLU函數也有一些缺點,它會給後一層的神經網絡引入偏置偏移,還容易在參數不恰當的更新後導致後續神經元永遠無法激活,這個問題被稱爲Dying ReLU Problem。爲了解決上述問題,ReLU產生了一些變種,例如Leaky ReLU、PReLU、ELU等。

在本文構建的卷積神經網絡中嘗試三種不同的激活函數,觀察對模型的優化作用。

激活函數

val_acc

val_loss

訓練時間

Logistic

0.9154

0.2015

51s

Tanh

1

6.3747e-3

49s

ReLU

1

4.4998e-3

49s

由上圖可以看出,Logistic函數在本文模型上效果最差,準確率最低、損失率最高且用時最長。ReLU函數和Tanh函數效果相近,用時也一樣,但從驗證集的損失率上看,ReLU函數的效果略優於Tanh函數。因此本文選擇ReLU函數作爲激活函數。

4.Dropout

Dropout也叫丟棄法,是深度學習中常用的既簡單又有效的正則化技術,可以有效抑制神經網絡模型的過擬合。Dropout由Srivastava等人於2014年提出,他們針對深度神經網絡參數過多導致的過擬合及訓練速度緩慢的問題,提出Dropout方法,即在訓練過程中,隨機丟棄一部分神經元及對應的連接邊,以阻止神經元之間過多的相互適應。這種方法提高了神經網絡在視覺分析、語音識別、數據分類等領域的性能。

5.批標準化

了便於後續處理,提升模型性能,通常會將數據集統一到同一分佈。否則多次參數更新後,各層的數據分佈會變化的非常明顯,不停地變化會爲模型訓練帶來困難,深層網絡需要爲了適應數據分佈的變化不斷調整參數。

標準化(normalization)是最基礎的方法,可以使模型數據分佈更緊密,有助於提升模型的泛化能力。最常見的數據標準化形式就是將數據向平均值靠攏,使分佈的中心爲0,與此同時將方差縮放到1。

批標準化(batch normalization)是Ioffe和Szegedy在2015年ICML會議上提出的一種層的類型,在訓練過程中均值和方差不斷變化的情況下也可以保持數據標準化。其原理是訓練過程中在內部保存已讀取每批數據均值和方差的指數移動平均值。

Ioffe於2017年又提出了改進的批量重整化(batch renormalization),可以確保模型產生相同的輸出,相比批標準化更有優勢,尤其是在處理小型訓練時效果更優秀,且代價沒有明顯增加。

批標準化通常用於模型中激活函數之前,規範前面網絡層數據的分佈,然後經過激活函數的非線性映射得到網絡層的輸出。

在本文構建的模型中添加批標準化項,並在驗證集上與之前未加批標準化項的識別率進行對比。

由上圖可以看出,很明顯添加了批標準化項後,準確率上升,損失率下降。批標準化可以規範不同網絡層的數據,本文在卷積層的激活函數之前添加批標準化項。


經過一系列優化後,最終構建的神經網絡基本參數如下。

編號

網絡層

卷積核數目

窗口大小

步長/池化層縮小比例因數

輸出大小

非零填充

激活函數

正則化

1

卷積層

16

64×1

16×1

128×16

same

relu

l2

2

池化層

 

2×1

2

64×16

valid

 

 

3

卷積層

32

3×1

1×1

64×32

same

relu

l2

4

池化層

 

2×1

2

32×32

valid

 

 

5

展平

 

 

 

1024

 

 

 

6

全連 接層

 

 

 

32

 

relu

l2

7

輸出層

 

 

 

10

 

softmax

l2


 點擊此處返回總目錄:基於深度學習的軸承故障識別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章