葉紅衛(wèi),戴光智
(1.河源職業(yè)技術(shù)學(xué)院 電子與信息工程學(xué)院,廣東 河源 517000;2.深圳職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)工程學(xué)院,廣東 深圳 518055)
基于SFLA優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的語(yǔ)音信號(hào)分類
葉紅衛(wèi),戴光智
(1.河源職業(yè)技術(shù)學(xué)院 電子與信息工程學(xué)院,廣東 河源 517000;2.深圳職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)工程學(xué)院,廣東 深圳 518055)
BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋網(wǎng)絡(luò),數(shù)據(jù)經(jīng)過(guò)網(wǎng)絡(luò)的輸入層、隱含層逐層處理后,由輸出層進(jìn)行輸出,通過(guò)和期望輸出的對(duì)比進(jìn)行反向傳播,調(diào)整網(wǎng)絡(luò)參數(shù)使輸出不斷逼近期望輸出;在使用BP神經(jīng)網(wǎng)絡(luò)對(duì)語(yǔ)音特征信號(hào)進(jìn)行分類的過(guò)程中,會(huì)出現(xiàn)BP神經(jīng)網(wǎng)絡(luò)易陷入局部最優(yōu)解、學(xué)習(xí)收斂速度慢的問(wèn)題;針對(duì)此問(wèn)題提出一種基于SFLA優(yōu)化BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閥值的方法,引入SFLA算法優(yōu)化網(wǎng)絡(luò)權(quán)值和閥值,利用SFLA優(yōu)化后的BP網(wǎng)絡(luò)模型進(jìn)行語(yǔ)音特征信號(hào)分類;仿真結(jié)果表明,經(jīng)SFLA優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)與未優(yōu)化的神經(jīng)網(wǎng)絡(luò)相比,不僅訓(xùn)練速度快, 而且誤差小,語(yǔ)音特征信號(hào)分類的正確率平均提高1.31%。
BP神經(jīng)網(wǎng)絡(luò);SFLA;優(yōu)化;分類
BP神經(jīng)網(wǎng)絡(luò)在工程領(lǐng)域有著廣泛的應(yīng)用,BP神經(jīng)網(wǎng)絡(luò)也存在自身的缺點(diǎn),在訓(xùn)練網(wǎng)絡(luò)時(shí)學(xué)習(xí)收斂速度慢。同時(shí),易陷入局部的最優(yōu)解而非全局最優(yōu)解。為了改進(jìn)BP神經(jīng)網(wǎng)絡(luò)的缺點(diǎn),提出了許多優(yōu)化BP網(wǎng)絡(luò)的方法,利用遺傳算法優(yōu)化[1]、基于粒子群算法優(yōu)化[2]、利用螢火蟲算法優(yōu)化[3]、克隆選擇粒子群優(yōu)化[4]。混合蛙跳算法(SFLA)廣泛應(yīng)用在優(yōu)化問(wèn)題的求解,SFLA算法結(jié)合了元算法和粒子群優(yōu)化算法的優(yōu)點(diǎn)[5],SFLA具有參數(shù)少,運(yùn)算速度快、尋優(yōu)能力強(qiáng)的特點(diǎn),對(duì)BP神經(jīng)網(wǎng)絡(luò)的各層之間的初始權(quán)值與閥值,采用SFLA算法進(jìn)行優(yōu)化。利用得到的最優(yōu)值去訓(xùn)練網(wǎng)絡(luò),應(yīng)用于語(yǔ)音特征信號(hào)分類。
1.1 算法簡(jiǎn)介
SFLA是以群體協(xié)同合作搜索的模因算法為基礎(chǔ),通過(guò)啟發(fā)式算法搜尋全局最優(yōu)解。基于模因之間或內(nèi)部可進(jìn)行經(jīng)驗(yàn)、知識(shí)和信息的共享和交流[6]。在SFLA中,種群由許多蛙構(gòu)成,每只蛙表示待解決問(wèn)題的解向量。種群被劃分成多個(gè)子群,由一定數(shù)量的蛙組成一個(gè)子群,稱為一個(gè)模因(memeplex)。蛙群由不同的模因構(gòu)成,每個(gè)模因中的蛙都有自己的信息,同時(shí)受到同一模因中蛙的影響,彼此之間進(jìn)行信息交流。通過(guò)Memetic算法來(lái)進(jìn)化發(fā)展。經(jīng)過(guò)一定次數(shù)的交流和跳躍后,不同的交流信息在所有模因組中進(jìn)行傳播。然后根據(jù)給定的優(yōu)化條件,繼續(xù)進(jìn)行局部迭代搜索和跳躍,直到達(dá)到迭代次數(shù)或滿足優(yōu)化目標(biāo)。
SFLA的流程如圖1所示。首先,隨機(jī)生產(chǎn)初始蛙群,對(duì)于一個(gè)S維解的優(yōu)化問(wèn)題,每個(gè)蛙表示為Xi=(xi1,xi2,…xiS),根據(jù)自由度對(duì)蛙群進(jìn)行降序排序,然后,整個(gè)蛙群劃分為m個(gè)模因組,每個(gè)模因組分配n只蛙。例如m=3,則分配原則為:第1只蛙劃分到模因組1,第2只蛙劃分到模因組2,第3只蛙劃分到模因組3,第4只蛙劃分到模因組1,第m只蛙劃分到模因組m,第m+1只蛙劃分到模因組1,以此類推[7-8]。在模因組中進(jìn)行設(shè)定次數(shù)的局部搜索,在每一個(gè)模因組中具有最好適應(yīng)度的蛙和最差適應(yīng)度的蛙分別記為Xb和Xω,具有全局最優(yōu)適應(yīng)度的蛙記為Xg。在每一輪的循環(huán)中,對(duì)具有最差適應(yīng)度的蛙進(jìn)行演化運(yùn)算,對(duì)其位置按式(1)和式(2)進(jìn)行更新。
(Di)=rand()·(Xb-Xw)
(1)
(2)
其中為[0,1]的隨機(jī)數(shù),為蛙的目前所處的位置,為更新后的位置,為更新的最大步長(zhǎng),在此演化過(guò)程中,用得到的更好的蛙去替代最差的蛙,否則,若更新后沒(méi)有得到更好的蛙,則隨機(jī)產(chǎn)生一只蛙替代Xω,在模因組中重新進(jìn)行迭代,達(dá)到局部搜索迭代次數(shù)為止。接著對(duì)全部模因組中的蛙重新混雜,并按適應(yīng)度進(jìn)行排序。更新種群最蛙的位置,然后重新劃分蛙群,進(jìn)行局部深度搜索,次數(shù)達(dá)到全局循環(huán)次數(shù)或滿足終止的優(yōu)化目標(biāo)[9]。

圖1 SFLA算法流程
1.2 算法實(shí)現(xiàn)
SFLA算法搜尋最優(yōu)解通過(guò)啟發(fā)式算法,實(shí)現(xiàn)SFLA算法首先初始化蛙群的各個(gè)參數(shù)。蛙群模因組個(gè)數(shù)為m,每個(gè)模因組中蛙的個(gè)數(shù)為n,種群中蛙的個(gè)數(shù)F=m*n;每只蛙包含解空間維數(shù)為S。全局迭代最大次數(shù)LoopMax,局部迭代最大次數(shù)(每個(gè)模因組的最大迭代次數(shù))Nmax,初始種群范圍上下限分別為Pmax、Pmin。模因組內(nèi)青蛙位置的最大變化步長(zhǎng)為Smax,適應(yīng)度f(wàn)itness的計(jì)算由自定義的fun函數(shù)決定。全局最優(yōu)蛙為Frog_GlobalBest,局部最優(yōu)蛙為Frog_LocalBest,局部最差蛙為Frog_localWorse,SFLA算法MATLAB實(shí)現(xiàn)的偽代碼如下:
Initialize:m,n,F,S,LoopMax,……
For LoopNum=1:LoopMax
Compute fitness
For im=1:m
For i=1:Nmax
Determine the Frog_LocalBest and Frog_localWorse
Improve the Frog_localWorse using equations (1) or (2)
End
End
Shuffle the evolved memeplexes
Sort(fitness)
Save the Frog_GlobalBest
Check if termination=true
End
BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋網(wǎng)絡(luò),BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,由輸入層、隱含層、輸出層組成。網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)包含了i個(gè)輸入節(jié)點(diǎn),j個(gè)隱含節(jié)點(diǎn)和k個(gè)輸出節(jié)點(diǎn),所有的輸入節(jié)點(diǎn)通過(guò)權(quán)值ωji和隱含節(jié)點(diǎn)相連,隱含節(jié)點(diǎn)通過(guò)權(quán)值ωkj相連。通過(guò)有監(jiān)督的訓(xùn)練,參數(shù)的調(diào)整在BP網(wǎng)絡(luò)中分為兩個(gè)階段,第一階段,在BP網(wǎng)絡(luò)中通過(guò)輸出層得到輸入層的預(yù)測(cè)值,通過(guò)預(yù)測(cè)值和實(shí)際值的比較,調(diào)整各層之間的連接權(quán)值和參數(shù),得到新的參數(shù)值。同時(shí),進(jìn)行不斷的更新學(xué)習(xí),若滿足設(shè)定的訓(xùn)練目標(biāo),則停止網(wǎng)絡(luò)的參數(shù)調(diào)整[10]。

圖2 BP網(wǎng)絡(luò)結(jié)構(gòu)
BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的具體步驟如下:
步驟1:BP網(wǎng)絡(luò)初始化,確定BP神經(jīng)網(wǎng)絡(luò)層次結(jié)構(gòu),輸入層節(jié)點(diǎn)個(gè)數(shù)n,隱含層節(jié)點(diǎn)個(gè)數(shù)p,輸出層節(jié)點(diǎn)個(gè)數(shù)q。初始化網(wǎng)絡(luò)輸入層和隱含層、隱含層和輸出層神經(jīng)元之間的連接權(quán)值ωij和ωjk,隱含層和輸出層的閥值分別為h和s。同時(shí),確定神經(jīng)元的激勵(lì)函數(shù)和學(xué)習(xí)速率。
步驟2:計(jì)算隱含層輸出,隱含層輸出Hj。

其中,p為隱含層節(jié)點(diǎn)個(gè)數(shù),f為隱含層的激勵(lì)函數(shù),x為輸入向量。
步驟4:計(jì)算預(yù)測(cè)誤差。ek=TK-Okk=1,2,…,qTK為期望輸出向量。
ωjk=ωjk+ηHjek
sk=sk+ekk=1,2,…q
步驟7:訓(xùn)練次數(shù)和設(shè)定的次數(shù)進(jìn)行比較,若沒(méi)有達(dá)到。返回步驟2。若達(dá)到,則BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)束。
3.1 數(shù)據(jù)處理
語(yǔ)音特征信號(hào)分類過(guò)程為:對(duì)獲取到語(yǔ)音信號(hào)進(jìn)行預(yù)處理后,采用合適的算法把語(yǔ)音特征信號(hào)從中提取出來(lái)。該語(yǔ)音特征信號(hào)可看成語(yǔ)音的一個(gè)模式,再通過(guò)對(duì)已有參考模式的比對(duì)。獲得最佳匹配的參考模式,從而得到該語(yǔ)音的分類結(jié)果。本實(shí)驗(yàn)選用了古箏、民歌、搖滾和流行四類不同音樂(lè),每段音樂(lè)采用倒譜系數(shù)法提取500組24維語(yǔ)音特征信號(hào)[11],部分語(yǔ)音特征數(shù)據(jù)如表1所示。

表1 部分語(yǔ)音特征數(shù)據(jù)
在訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)之前,為了減少數(shù)據(jù)對(duì)網(wǎng)絡(luò)預(yù)測(cè)誤差的影響,將各維的數(shù)據(jù)進(jìn)行數(shù)據(jù)歸一化處理,將各維數(shù)據(jù)轉(zhuǎn)換到在[0,1]的數(shù)。歸一化樣本數(shù)據(jù)計(jì)算由式(3)確定,Xn為歸一化后的數(shù)據(jù),xmin為語(yǔ)音類別序列最小值,xmax為語(yǔ)音類別序列最大值。
(3)
3.2 算法流程
實(shí)驗(yàn)流程如圖3所示,首先確定網(wǎng)絡(luò)結(jié)構(gòu)、網(wǎng)絡(luò)輸入?yún)?shù)和各層的節(jié)點(diǎn)數(shù),然后初始化網(wǎng)絡(luò)的各層之間的連接權(quán)值和閥值。通過(guò)SFLA進(jìn)行優(yōu)化,獲得優(yōu)化后網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)。

圖3 SFLA優(yōu)化BP網(wǎng)絡(luò)流程圖
網(wǎng)絡(luò)的預(yù)測(cè)精度與網(wǎng)絡(luò)隱含層節(jié)點(diǎn)數(shù)的選取有關(guān),節(jié)點(diǎn)數(shù)過(guò)大,訓(xùn)練時(shí)間久,易出現(xiàn)過(guò)擬合;節(jié)點(diǎn)數(shù)過(guò)小,訓(xùn)練時(shí)間短,但網(wǎng)絡(luò)訓(xùn)練過(guò)早結(jié)束,精度較低。最佳網(wǎng)絡(luò)隱含層節(jié)點(diǎn)數(shù)k由式(4)確定。其中,m為網(wǎng)絡(luò)輸入層節(jié)點(diǎn)數(shù),n為網(wǎng)絡(luò)輸出層節(jié)點(diǎn)數(shù),l為0~10的常數(shù)。取最佳網(wǎng)絡(luò)隱含層節(jié)點(diǎn)數(shù)k=9。
(4)
使用24-9-4的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),24個(gè)輸入層節(jié)點(diǎn),9個(gè)隱含層節(jié)點(diǎn),4個(gè)輸出層節(jié)點(diǎn)。網(wǎng)絡(luò)訓(xùn)練次數(shù)為20,網(wǎng)絡(luò)訓(xùn)練誤差值為0.000 1,網(wǎng)絡(luò)學(xué)習(xí)速率為0.1。共有2 000組樣本語(yǔ)音數(shù)據(jù),前1 500組數(shù)據(jù)為訓(xùn)練數(shù)據(jù),后500組為測(cè)試數(shù)據(jù)。蛙群的適應(yīng)度F由如式(5)確定。
(5)
其中,q為BP網(wǎng)絡(luò)輸出層的輸出節(jié)點(diǎn),yi為第i個(gè)測(cè)試數(shù)據(jù),oi為BP網(wǎng)絡(luò)的第i個(gè)預(yù)測(cè)數(shù)據(jù)。適應(yīng)度F越高,得到的BP網(wǎng)絡(luò)參數(shù)越優(yōu)。
3.3 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)硬件環(huán)境:CPU Intel(R) Core(TM)i5-6500 3.20 GHz,內(nèi)存:16 GB,軟件環(huán)境:Win7 x64操作系統(tǒng),算法實(shí)現(xiàn)軟件采用MATLAB R2012b。SFLA算法的初始參數(shù):m=5,n=5,LoopMax=5,Nmax=10,Smax=0.01。通過(guò)對(duì)算法的編程和MATLAB的仿真計(jì)算,得到了實(shí)驗(yàn)的仿真結(jié)果。BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的均方誤差如圖4所示,SFLA優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)均方誤差如圖5所示。未優(yōu)化的網(wǎng)絡(luò)在第14次訓(xùn)練時(shí)均方誤差達(dá)到最小值0.0494 78。優(yōu)化后的網(wǎng)絡(luò)在第12次訓(xùn)練時(shí)均方誤差達(dá)到最小值0.0334 84,誤差比未優(yōu)化的網(wǎng)絡(luò)優(yōu)。通過(guò)實(shí)驗(yàn)的數(shù)據(jù)分析與對(duì)比,SFLA-BP在訓(xùn)練次數(shù)和均方誤差,都比未優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)更優(yōu)。

圖4 BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練均方誤差
為了測(cè)試優(yōu)化后網(wǎng)絡(luò)的穩(wěn)定性,對(duì)樣本數(shù)據(jù)進(jìn)行混雜處理,進(jìn)行100次的優(yōu)化循環(huán)測(cè)試。最終的分類誤差如圖6所示,語(yǔ)音類別分類正確率如表2所示。第一類語(yǔ)音的分類正確率提高0.99%,第二類幾乎相同,第三類正確率提高2.35%,第四類正確率提高1.94%,語(yǔ)音特征信號(hào)分類的正確率平均提高1.31%。實(shí)驗(yàn)驗(yàn)結(jié)果表明,優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)在語(yǔ)音特征信號(hào)分類中取得了更好的分類效果。

圖5 SFLA-BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練均方誤差

圖6 分類誤差

語(yǔ)音類別1234正確率(BP)08284099990937509601正確率(SFLA-BP)08383099960961009795
使用BP神經(jīng)網(wǎng)絡(luò)對(duì)語(yǔ)音特征信號(hào)進(jìn)行分類,選取4類不同音樂(lè)類別數(shù)據(jù),建立了24-9-4的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),以24維的特征數(shù)據(jù)為輸入,以4類類別為輸出的BP神經(jīng)網(wǎng)絡(luò)分類模型,利用全局尋優(yōu)能力強(qiáng)的SFLA算法對(duì)網(wǎng)絡(luò)的權(quán)值和閥值進(jìn)行優(yōu)化。優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)誤差小、分類結(jié)果優(yōu),具有良好的穩(wěn)定性。
[1] 王志斌,等.遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的大功率LED結(jié)溫預(yù)測(cè)[J].光電子·激光,2014,25(7):1303-1309.
[2] 李祚泳,等.PSO 算法優(yōu)化BP 網(wǎng)絡(luò)的新方法及仿真實(shí)驗(yàn)[J].電子學(xué)報(bào),2008,36(11):2224-2228.
[3] 王改革,等.基于螢火蟲算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的目標(biāo)威脅估計(jì)[J].吉林大學(xué)學(xué)報(bào)(工學(xué)版),2013,43(4):1064-1069.
[4] 李 翔,等.克隆選擇粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)電力需求預(yù)測(cè)[J].湖南大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,35(6):41-45.
[5] 龍 騰,等.基于改進(jìn)蛙跳算法的WSN移動(dòng)節(jié)點(diǎn)部署研究[J].計(jì)算機(jī)工程,2012,38(5):96-98.
[6] Eusuff M M,Lansey K E.,Optimization of water distribution network design using the shuffled frog-leaping algorithm[J].J.water Resour.Planing Mgmt, 2003,19:43-53.
[7] Afzalan E, Taghikhani M A,Sedighizadeh M.Optimal Placement and Sizing of DG in Radial Distribution Networks Using SFLA[J].International Journal of Energy Engineering ,2012,2:73-77.
[8]Eusuff M M,Lansey K,Pasha F.Shuffled frog-leaping agorithm:a memetic meta-heuristic for discrete optimization[J].Engineering Optimization,2006,38:129-154.
[9] 駱劍平,等.求解TSP的改進(jìn)混合蛙跳算法[J].深圳大學(xué)學(xué)報(bào)(理工版),2010,2:173-179.
[10] Ennedy K,Eberhart J,R.Particle swarm optimization in Proceedings IEEE International Conference on Neural Networks [J].IEEE Service Center,Piscataway,NJ, 1995,1942-1948.
[11] MATLAB中文論壇.MATLAB神經(jīng)網(wǎng)絡(luò)30個(gè)案例分析[M].北京:北京航空航天大學(xué)出版社,2010.
Classification of Speech Based on BP Neural Network Optimized by SFLA
Ye Hongwei,Dai Guangzhi
(1.School of Electronic and Information Engineering,Heyuan Polytechnic, Heyuan 517000, China 2.School of Computer engineering,Shenzhen Polytechnic, Shenzhen 518055, China)
A back-propagation (BP) neural network consists of an input layer,one or more hidden layers and an output layer.An input vector is presented to the network, it is propagated forward through the network, layer by layer, until it reaches the output layer. The output of the network is then compared to the desired output, using a loss function, The error values are then propagated backwards, starting from the output, until each neuron has an associated error value which roughly represents its contribution to the original output.The BP neural network easily falls into a local extreme values and the slow convergence,during the Classification of Speech using it.A new method is put forward to optimize weights and threshold of BP neural network using SFLA. The new model was used in the classification of four typical speech, results of which were analysed and compared with that BP neural network. BP neural network based on SFLA has both fast training speed and small number of errors, produced average increase of 1.31 % in the accuracy.
BP neural network; SFLA; optimization; Classification
2017-02-20;
2017-03-13。
國(guó)家自然科學(xué)基金(61671309)。
葉紅衛(wèi)(1979-),男,廣東省河源市人,講師,碩士,主要從事智能算法、機(jī)器學(xué)習(xí)方向的研究。
戴光智(1974-),男,內(nèi)蒙人,副教授,博士,主要從事計(jì)算機(jī)視覺(jué)方向的研究。
1671-4598(2017)05-0225-03
10.16526/j.cnki.11-4762/tp.2017.05.062
TP273
A