(1.青島大學 機電工程學院,山東 青島 266071; 2.青島大學 商學院,山東 青島 266071)
傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)采用梯度修正法作為權(quán)值和閾值更新的方法,僅從預(yù)測誤差負梯度方向修正權(quán)值和閾值,學習過程收斂緩慢,并且容易陷入局部最小值,導(dǎo)致泛化能力不足[1-4]。為了解決在此方面的問題,朱江森[5]等人提出一種應(yīng)用在氫原子鐘鐘差預(yù)測上的改進BP神經(jīng)網(wǎng)絡(luò),通過加入誤差懲罰項的措施,減小了平均預(yù)測誤差,提高了預(yù)測精度并減少了收斂時間。Zweiri[6]等人提出三項BP算法,除了學習速率和動量因子外,添加了第3個權(quán)重調(diào)節(jié)參數(shù),從一定程度上改善了收斂速度慢和易陷入局部最小值導(dǎo)致的泛化能力不足的問題。文獻[7]~文獻[9]也分別提出了改善BP算法的方法,但是這些算法均是基于梯度大小改變權(quán)值和閾值的方式,雖然可以通過在梯度方面加入?yún)?shù),但實質(zhì)很難避免偏導(dǎo)數(shù)大小對網(wǎng)絡(luò)收斂速度和網(wǎng)絡(luò)的泛化能力的絕對影響。而Resilient Backpropagation[10](RPROP)方法是一種基于偏導(dǎo)數(shù)正負改變權(quán)值的方法,可以有效改善偏導(dǎo)數(shù)大小對網(wǎng)絡(luò)收斂的影響。楊存祥[11]等人利用RPROP 法改善BP神經(jīng)網(wǎng)絡(luò),建立了異步電動機故障診斷模型,相比標準BP算法診斷精度和網(wǎng)絡(luò)的訓練速度都明顯加快。文獻[12]和文獻[13]分別在BP網(wǎng)絡(luò)中應(yīng)用了RPROP方法,但是這些算法均是對RPROP方法的直接應(yīng)用,并沒有對RPROP方法做出改進。
基于梯度大小更新權(quán)值和閾值的方式確實很難回避偏導(dǎo)數(shù)大小對網(wǎng)絡(luò)收斂速度的影響,但是計算出梯度馬上利用梯度進行權(quán)值和閾值的更新讓算法比較簡練,而且只需存儲網(wǎng)絡(luò)下一次更新的梯度,消耗的存儲空間較小。RPROP方法是一種基于偏導(dǎo)數(shù)正負改變權(quán)值的方法,偏導(dǎo)數(shù)的大小并不影響網(wǎng)絡(luò)的收斂速度,完全避免了偏導(dǎo)數(shù)大小對網(wǎng)絡(luò)收斂影響。但是由于需要近兩倍于標準算法更新權(quán)值的存儲空間,使基于RPROP的算法對計算機資源消耗較大,特別是在網(wǎng)絡(luò)較復(fù)雜的情況下。近年來計算機硬件的發(fā)展使得存儲空間在一般情況下不會成為算法的瓶頸,又考慮到網(wǎng)絡(luò)訓練中步長的大小對網(wǎng)絡(luò)的收斂影響極大,于是為了充分加快網(wǎng)絡(luò)的收斂速度,引入了一種變步長的方法改善RPROP方法。Harris[14]等人提出的一種變步長的方法被認為是最有效的改變的方法,該方法需要根據(jù)多次網(wǎng)絡(luò)更新用到的偏導(dǎo)數(shù)情況來確定步長的大小,同時該算法保留了合適的振蕩幅度,在加快收斂的同時很好地避免了陷入局部最小值問題。本文將兩種算法進行融合,改進RPROP方法。同時考慮到網(wǎng)絡(luò)參數(shù)的數(shù)量對網(wǎng)絡(luò)的收斂速度和訓練所消耗的計算機資源有直接影響,為減少網(wǎng)絡(luò)的非必要參數(shù),本文將PCA算法與改進后的BP神經(jīng)網(wǎng)絡(luò)結(jié)合,提出了一種PCA-改進BP神經(jīng)網(wǎng)絡(luò)算法。對重金屬音樂、山歌音樂、流行音樂和笛子音樂4種語音信號進行識別,通過試驗結(jié)果對比發(fā)現(xiàn),本算法確實可以達到加快網(wǎng)絡(luò)收斂速度和提高泛化能力的目的。
Harris根據(jù)均方誤差的梯度分量符號來估計與最小均方誤差的距離,當檢測到連續(xù)符號變化時,步長減小。當檢測到的符號連續(xù)變化相同時,步長增加。該算法用均方誤差梯度分量符號來估計與均方誤差全局極小值間的距離,具體算法為
S(n+1)=S(n)×f(λ)
(1)
其中,
(2)
式中,λ為選擇的常數(shù);m0和m1為自己選擇的正整數(shù)參數(shù),實驗證明m0=3,m1=3會取得良好的實驗效果。
RPROP方法是由德國的Martin Riedmiller 和Heinrich Braun在1993年提出,RPROP方法用來指導(dǎo)批處理學習的學習方案,其原理是:若前次和本次兩次更新的偏導(dǎo)數(shù)的方向不同,則本次不論權(quán)重是增加或者減小,權(quán)重的增減幅度都變??;若前次和本次兩次更新的偏導(dǎo)數(shù)方向相同,則本次不論權(quán)重是增加還是減小,權(quán)重的增減幅度都變大。此方法可以加快網(wǎng)絡(luò)的收斂速度,具體算法為
W(t+1)=W(t)+ΔW(t)
(3)
(4)
(5)
式中,0<α<1<β,為自己確定的參數(shù)值。當α=0.5,β=1.2,Δt(0)=0,Δtmin=1×10-6,Δtmax=50時,算法可以取得比較好的效果。
綜合上述幾種算法的優(yōu)點,提出一種新的算法,該算法的推導(dǎo)過程為
W(t+1)=W(t)+ΔW(t)
(6)
(7)
簡化得
(8)
所以,有
(9)
又因為
(10)
定義
(11)
所以有
(12)
考慮變學習率f(λ)的加入,
(13)
使得
(14)
式中,s(t-1)為第(t-1)次學習率的步長。
所以,最終更新的網(wǎng)絡(luò)權(quán)值為
(15)
式中,W(t)為網(wǎng)絡(luò)第t次的權(quán)值;E(t)為網(wǎng)絡(luò)的均方誤差函數(shù);f(λ)為變學習速率;g(x)為自定義分段函數(shù):
(16)
式中,α=0.5,β=1.2。
① 獲取M個n維的數(shù)據(jù)樣本構(gòu)成M×n的矩陣XM×n,其中每行表示一個樣本,取前N行用于訓練,剩下n-N行用于測試。所以訓練集為XM×N,測試集為XM×(n-N)。
② 求取訓練集XM×N每維的均值為
(17)
③ 對RM×n進行零均值化處理,得
(18)
并且構(gòu)造協(xié)方差矩陣為
(19)
④ 求出協(xié)方差矩陣的特征值λ1≥λ2≥…≥λn及對應(yīng)的已經(jīng)正交化的特征向量[u1,u2,…,un],其中ui=[ui1,ui2,…uin]。計算單個成分貢獻率為
(20)
前i個貢獻率的和是累計貢獻率,即
(21)
如果γ≥a(取a=85%)時,就認為前i個主成分為所求,構(gòu)成了投影向量子空間。
⑤ 主成分的個數(shù)是i,測試數(shù)據(jù)向主成分向量進行投影,得F=[F1,F2,…,F(xiàn)i],其中Fi為
Fi=ui1Y1+ui2Y2+…+uinYn
(22)
⑥ 對F進行歸一化處理,利用歸一化后的F建立i-p-q層神經(jīng)網(wǎng)絡(luò),其中i,p,q分別為輸入層、隱含層、輸出層神經(jīng)元的數(shù)目,具體根據(jù)題目決定。
⑦ 以所提出的改進的RPROP算法作為網(wǎng)絡(luò)訓練的權(quán)值更新算法訓練網(wǎng)絡(luò)。
⑧ 測試集數(shù)據(jù)XM×(n-N)向投影向量子空間進行投影,并進行歸一化處理后,輸入訓練好的網(wǎng)絡(luò)進行測試,得到能正確識別的數(shù)目(n-N)′,網(wǎng)絡(luò)識別率為
(23)
為了驗證算法的有效性,對音樂分類的問題進行實驗。采用所提出的PCA-改進BP神經(jīng)網(wǎng)絡(luò)和附加動量法改進的BP神經(jīng)網(wǎng)絡(luò)及標準神經(jīng)網(wǎng)絡(luò)從最高識別率、達到最高識別率90%的用時和平均識別率3個方面進行比較。實驗環(huán)境是PC機,Intel Xeon E3-1230 v2 CPU,四核心八線程,主頻3.3 GHz。Windows 10操作系統(tǒng),Matlab 7.1實驗平臺。
選擇的4類音樂為:重金屬樂,山歌,通俗歌曲,笛子。每類音樂選擇一首樂曲并截取其中1段音樂,4段音樂信號分別用梅爾頻率倒譜系數(shù)法提取20維語音特征信號各2000幀,提取的音樂特征信號如圖1所示。
運用主成分分析法,對訓練集樣本數(shù)據(jù)R6400×20降維,得到的特征值、貢獻率和累計貢獻率如表1所示。
由表1可以看出,前11個特征值的貢獻率為87.52%,所以選擇協(xié)方差矩陣的前11個特征值對應(yīng)的個特征值對應(yīng)的特征向量組成的空間作為投影空間,對訓練和測試樣本集數(shù)據(jù)R20×8000進行降維,得到R11×8000,之后進行歸一化處理。
經(jīng)過多次嘗試,隱含層節(jié)點數(shù)選擇13時,可以取得比較好的效果。建立11-13-4的BP神經(jīng)網(wǎng)絡(luò),分別用不同的權(quán)值更新方法訓練網(wǎng)絡(luò),用測試樣本進行測試。進行50次測試后,分別找出改進后的BP神經(jīng)網(wǎng)絡(luò)和標準梯度下降BP神經(jīng)網(wǎng)絡(luò)能達到的最高識別率,最高識別率對比如表2所示。
序號特征值貢獻率/%累計貢獻率/%序號特征值貢獻率/%累計貢獻率/%165.2131.5831.58116.763.2787.52223.3811.3242.90126.413.1090.62315.767.2650.16136.032.9193.53413.216.4056.56145.612.7196.24511.925.7762.33155.062.4598.69611.435.5367.86160.914.4×10-399.0379.494.6072.46170.713.4×10-3100.0088.664.1976.65180.188.7×10-4100.0098.194.0080.65190.136.2×10-4100.00107.443.6084.25
表2 最高識別率對比
由表2可以看出,在最高識別率方面,改進的BP神經(jīng)網(wǎng)絡(luò)與標準BP神經(jīng)網(wǎng)絡(luò)相比,對每類音樂均有更高的識別率。
分別選擇1,2,3,…,9 s的訓練時間訓練網(wǎng)絡(luò),對應(yīng)每個訓練時間訓練和測試10次,分別做出每類音樂識別率和訓練時間的關(guān)系如圖2~圖5所示,兩種神經(jīng)網(wǎng)絡(luò)訓練時間和平均識別率的關(guān)系如圖6所示。
由圖2可以看出,在重金屬音樂識別方面,標準算法與改進算法相比,開始有較高的識別率,訓練結(jié)束時,標準算法的識別率高于改進算法;由圖3可以看出,標準算法和改進算法在山歌音樂方面均有很高的識別率;由圖4和圖5可以看出,改進算法與標準算法相比,具有更高的識別率。3種算法的對比如表3所示。
圖2 重金屬音樂識別率和訓練時間的關(guān)系
圖3 山歌音樂識別率和訓練時間的關(guān)系
圖4 笛子音樂識別率和訓練時間的關(guān)系
圖5 通俗歌曲音樂識別率和訓練時間的關(guān)系
圖6 神經(jīng)網(wǎng)絡(luò)訓練時間和平均識別率的關(guān)系
表3 3種算法的對比
由圖6和表3可以看出,當訓練時間在1s時,算法1平均識別率達78.8%,其識別率遠高于算法2的67.4%和算法3的69.0%,并且在整個訓練過程中一直保持最高識別率。最后算法1的識別率為93.4%,算法2的識別率為91.0%,算法3的識別率為91.6%。分別高出算法1識別率2.6%,算法3識別率1.9%。在達到最高識別率90%用時方面,算法1為2 s,算法2為5 s,算法3為3 s。算法2節(jié)省時間60%,算法3節(jié)省時間33%。而算法3的識別率在訓練過程中有較大波動,算法1的波動較小。
本文推導(dǎo)出一種PCA-改進RPROP方法的BP算法,通過對重金屬音樂、山歌音樂、流行音樂、笛子音樂四種音樂進行識別實驗,證明了算法的可行性,同時可以看出算法在收斂速度,平均識別率方面均高于標準算法及其部分改進算法。但在重金屬音樂的最終識別率方面,改進算法要低于標準算法及其改進算法。