深度學習與故障診斷的另一次嘗試

在網上看見一篇使用1d卷積神經網路對軸承振動時域波形進行處理的文章,感覺和之前見過多次的使用2d卷積神經網路對軸承振動時域波形經過時頻分析後得到的2d圖進行處理的方法大不一樣,嘗試著用工廠數據進行復現,未能成功,可惜論文未提供其程序和數據,在這裡記錄下我的嘗試,希望有大能可以指點一下,非常感謝。

論文名稱為《Machinery health indicator construction based on convolutional neural networks considering trend burr》,西安交通大學雷亞國老師(研究方向為機械故障診斷)一位博士(Liang Guo)的論文,提出一種免除手動提取軸承故障特徵的數據驅動的方法,來量化軸承故障並預測剩餘壽命,該方法包括兩個部分,第一部分是使用1維卷積核在軸承振動時域信號上滑動,通過卷積神經網路自動提取特徵,第二個部分是消除回歸分析中趨勢非線性抖動部分,改善故障量化和壽命預測的效果,這裡我們重點看第一個部分,1維卷積核的效果其實類似於小波分析中拿基波去數據里找對應信號以確認頻率,對文中選擇的數據來說,神經網路結構是參考1998年LeCun提出的卷積神經網路開山之作LeNet(卷積-池化-卷積-池化-全連接),卷積核長度25而池化長度8可以取得較好的效果,但對其他數據則未知(比如濾波器數量)。

我準備了2組數據,1組的ok與ng樣本的測試數據差別較大,另1組則測試數據差別較少,因為第1組的試驗效果不好,就沒試第2組。我從1組數據中留了10%作為測試集,嘗試了前述結構的網路(軟體使用pytorch,濾波器長度嘗試了25-50沒有明顯區別,濾波器數量選擇起始8最終16,學習率1e-2,均方誤差加adam),發現神經網路在訓練後偶然能分開測試集的ok與ng樣本(隨機初始值訓練然後測試,大概10次能有1次吧),大部分時候訓練完的網路對測試集不同樣本輸出基本一致的結果(即在神經網路眼裡ok與ng的樣本沒有區別),然後嘗試了其他網路結構,如卷積超過2層的「卷積-卷積-池化-卷積-卷積-池化-全連接」,效果更差,隨機初始值訓練然後測試,20次都出不來一次能正常區分開的。我又嘗試了用全連接神經網路去區分ok與ng樣本,效果比前述卷積神經要好,對差別明顯的樣本(比如振幅就差很遠)可以區分開來,卷積網路的程序沒有報錯但出來的效果不好,真心不懂了,希望大家指點一下,如果需要訓練數據可留言給我,謝謝。


推薦閱讀:

Batch Normalization閱讀筆記
Paper Reading | 讓機器像人類一樣學畫畫?GANs 「全家福」一覽
谷歌大腦發布神經架構搜索新方法:提速1000倍
神經網路的參數計算
膠囊網路結構Capsule初探

TAG:深度學習DeepLearning | 神經網路 | 機器學習 |