姜春英 康玉祥 葉長龍 于蘇洋
沈陽航空航天大學機電工程學院,沈陽,110136
在線智能監測技術可以對機械設備故障進行準確的分類和預測,對機械產品質量和生產成本的控制,以及安全高效的生產保證都有重要的意義。
國內外學者在智能故障診斷方法上進行了大量的研究工作。LEE等[1]研究了連續HMM(hid?den Markov model)故障診斷方法,并用于機械設備故障診斷。WIDODO 等[2]、SAMANTA[3]、YU等[4]對支持向量機、神經網絡進行了深入研究,并用于齒輪、軸承等零件的故障診斷。PAYA等[5]進一步運用BP網絡,實現了旋轉機械的故障診斷。零件故障診斷問題可歸為特征分類問題,鮑久圣等[6]構建BP網絡模型用于焊接疵點的分類,得到了很好的效果。BP網絡具有很好的適應能力和訓練能力,但很難設置理想的連接權值和閾值。粒子群優化(particle swarm optimization,PSO)算法提升了BP網絡的分類、回歸等方面的性能,并在車牌號碼識別[7]、發動機參數優化[8]等方面得到了較好的應用。
本文針對零件尺寸超差問題,提出了一種改進PSO_BP_Adaboost算法來解決分類收斂問題,將所提算法用于尺寸超差故障診斷。
PSO作為一種群體智能搜索算法,具有實現原理簡單、全局搜索能力強等優點[7]。采用PSO算法優化網絡的初始權值和閾值可以提高BP網絡的性能[9?10]。傳統的PSO算法通過下式實現粒子位置和速度的更新[12]:

式中,vid(t)、Xid(t)分別為 t時刻第 i個粒子的速度和位置;Pid、Pgd分別為第i個粒子的個體極值位置和粒子群全體極值;w為慣性權重因子;c1、c2為學習因子;Rnd1、Rnd2是0~1之間的隨機數。
PSO算法通過“追蹤”Pid和Pgd兩個參數實現進化的目的。為了提高算法全局搜索能力,避免粒子陷入局部最優解,同時考慮到智能群體在搜索過程中會帶有一定的隨機性,將式(1)中的慣性權重w改為高斯隨機數Rnd3來表示先前速度對當前速度的影響具有隨機性。另外,為了表達當前位置和速度對下一個位置的隨機影響程度,在式(2)增加了隨機搜索因子η:

為了驗證改進PSO算法的有效性,本文對改進PSO算法在研究者普遍使用的幾個測試函數[11?12]上進行了測試,并將其與傳統PSO算法進行比較。結果顯示,改進的PSO算法無論是在迭代次數還是在精度方面都要優于傳統的PSO算法,因此,可以用來優化BP神經網絡的初始權值和閾值。測試結果見表1,部分測試函數適應度與迭代次數關系如圖1所示。

表1 PSO算法測試結果表Tab.1 PSO algorithm test results table

圖1 函數適應度曲線Fig.1 Function fitness curves
Adaboost算法[9?15]首先需要建立多個不同的弱分類器,然后將這些弱分類器組合成強分類器,以達到提高分類器泛化性能的目的。對于具有k個類別的多分類問題,傳統的Adaboost算法通過提高前一個弱分類器錯分樣本的權值,同時降低被正確分類樣本的權值,來找到多個錯誤率小于1/2的弱分類器。但是,隨著弱分類器的增加,很可能導致弱分類器的錯誤率達不到要求,存在弱分類器數量不足、不能組合成為足夠好的強分類器的可能。針對此問題,在汲取SAMME[16]算法經驗的基礎上,對Adaboost算法的權值分配策略進行了改進:

式中,at為第t個弱分類器的權值,t=1,2,…,K;K為總的弱分類器個數;εt為第t個弱分類器的錯誤率。
在原算法的基礎上增加ln(K-t+1)。改進后,每個弱分類器的分類錯誤率只需滿足εt≤(K-t+1)/(K-t+2)的要求即可。
運用改進的權值分配策略,采用經典的“一對一”多分類方法設計多分類器。具體算法如下。
輸入:訓練數據樣本T={(xl,yl),…(xm,ym)},其中輸入數據xi∈X,標簽yi∈{1,2,…,N}。
輸出:強分類器G(x),分類結果。
(1)for j=1:N-1
for k=j+1:N
將yj=j的數據樣本設置為正類,yk=k的樣本設置為負類。
(2)訓練數據樣本T的權值分布初始化:

(3)for t=1:
①在訓練樣本的權值分布下,訓練PSO優化后的BP神經網絡作為第t個弱分類器ht(x)。
②計算ht(x)的誤差率:

③計算ht(x)的權值分配系數:

④更新訓練數據樣本的權值分布:

式中,Zt為歸一化因子。
end
(4)得到最終的強分類器G(x)輸出分類類別

M為設置弱分類器的個數。
end
end
改進PSO_BP_Adaboost算法的流程如圖2所示,算法采用MATLAB軟件在UCI數據集(選用研究者普遍使用的幾個數據集)[17]Pen?Digits、Letter、Wine上進行測試。數據集的有關信息如表2所示。

圖2 PSO_BP_Adaboost算法流程圖Fig.2 PSO_BP_Adaboost algorithm flow chart

表2 測試數據集信息表Tab.2 Test data set information table
傳統BP_Adaboost算法和PSO_BP_Ada?boost算法在相同迭代次數時的分類誤差如圖3~圖5所示,可以看出本文所提算法在弱分類器個數和測試誤差方面都優于傳統的BP_Adaboost算法。

圖3 兩種算法在Wine數據集上的誤差Fig.3 Error of two kinds of algorithms on Wine data set

圖4 兩種算法在Pen-Digits數據集上的誤差Fig.4 Error of two kinds of algorithms on Pen-Digits data set

圖5 兩種算法在Letter數據集上的誤差Fig.5 Error of two kinds of algorithms on Letter data set
采用三坐標測量儀檢測汽車發動機缸蓋上的孔直徑。該型缸蓋上分布6個不同位置的孔,為減小計算量,任意選取4個孔的測量值作為BP網絡的輸入。
根據對加工零件尺寸超差故障的分析,以及對每次故障記錄數據的判斷,將該零件尺寸超差故障產生的原因分為刀具的磨損和機床/操作者/環境因素。
本文對零件加工尺寸數據進行處理,將數據分為3類進行分析,表3所示為零件尺寸類別標簽及類別名稱。

表3 測試數據分類表Tab.3 Test data classification table
選取檢測記錄的150組數據模型進行訓練,隨機選取其中100組數據作為訓練樣本數據,50組數據作為測試樣本。
本文中PSO_BP_Adaboost算法有4個輸入、1個輸出,4個輸入分別為直徑1、直徑2、直徑3、直徑4,1個輸出為“一對一”分類方法中設置的正類或負類,即輸出為{+1,-1}。
設置BP網絡的結構為4?10?1,即輸入層由4個神經元、隱含層有10個神經元、輸出層有1個神經元。整個BP神經網絡共有4×10+10×1=50個權值和10+1=11個閾值,則PSO算法要優化的參數個數為50+11=61。BP神經網絡采用MATLAB自帶的函數newff創建,訓練次數為100,訓練目標為0.001,學習率設置為0.1。
在PSO算法優化BP網絡的過程中,PSO算法的進化次數為10,種群規模為10。
優化的BP_Adaboost算法中,采用10個BP網絡作為弱分類器組成一個強分類器,測試樣本數據共有3類,根據“一對一”分類算法,共需要3×(3-1)/2=3個強分類器,總共需要3×10=30個弱分類器。
訓練好模型后,本文選取的50組測試數據中,只有1組測試結果與實際情況不相符,正確率達到98%。圖6為傳統BP_Adaboost算法和PSO_BP_Adaboost算法的誤差率比較圖,可以看出本文所提方法誤差較小。表4所示為本文所提方法與SVM、Adaboost.M1算法的測試結果。結果顯示,針對所選的測試數據,本文所提方法較SVM和Adaboost.M1算法有更高的分類正確率,說明本文所提方法可以用于零件尺寸超差故障診斷。

圖6 兩種算法誤差率Fig.6 Two algorithm error rates

表4 不同分類算法測試結果Tab.4 Test results of different classification algorithms %
提出了改進的PSO算法及Adaboost算法,應用PSO算法快速尋優的特點,優化BP神經網絡的連接權值和閾值,通過訓練多個優化后的BP神經網絡弱分類器組合成Adaboost強分類器。對所建立的強分類器算法,采用某一零件的測量尺寸數據進行驗證。試驗結果表明,本文所提的算法正確率較高,性能較好,可以用于零件尺寸超差故障的分類檢測。