?

一種粒子群算法在語音識別中的應用?

2024-01-29 02:23胡宏梅別玉霞
電子器件 2023年6期
關鍵詞:慣性適應度全局

胡宏梅,別玉霞

(1.蘇州健雄職業技術學院人工智能學院,江蘇 太倉 215411;2.沈陽航空航天大學電子信息工程學院,遼寧 沈陽 110136)

1 粒子群算法的基本原理

粒子群優化算法(Particle Swarm Optimization,PSO)是Kennedy 和Eberhart 受鳥群覓食的啟發而提出來的一種算法,將鳥群作為PSO 算法中的種群,每一只鳥相當于PSO 算法中一個粒子,鳥的覓食過程看作為粒子迭代進化過程,將鳥覓到的食物看作為PSO 算法欲求解問題的目標,找到食物的鳥即為所有粒子所追隨的對象,即最優解。PSO 算法模擬鳥之間的個性化學習和彼此協作交互,促使整個群體不斷搜索并向最優解靠近,常用來解決一些優化問題。

PSO 算法初始化為一群隨機粒子,而每個粒子對應到優化問題中都會得到一個適應值,同時,粒子的移動是通過不斷更新速度和位置完成的,而這兩個參數的更新是由當前的最優粒子和個體最優值來決定的,通過跟蹤這兩個極值從而達到搜索最優解的目的。

假設欲求解問題的目標函數為:

記群體中粒子i的位置Xi=(xi1,xi2,…,xin),速度Vi=(vi1,vi2,…,vin),且該粒子所經歷的最好位置記為Pi=(pi1,pi2,…,pin),整個群里所經歷過的最好位置記為Pg=(pg1,pg2,…,pgn),則在跟蹤兩個極值移動過程中,該粒子第t+1 次迭代中速度和位置更新如式(2)所示:

式中:c1、c2為學習因子,也稱為加速常數;r1、r2是在(0,1)之間產生的隨機數;w為慣性權重;vij(t+1)為粒子i在第t+1 次迭代中第j維速度,vij∈[-vmax,vmax],其中,vmax是常數,用來限定粒子的飛行速度。

速度更新公式中,包括了三個部分,第一部分是粒子i的慣性部分,反映出了粒子i的運動習慣,使其維持之前的運動速度,保證算法的全局搜索性;第二部分是認知部分,讓粒子i能記住自己所經歷過的最好位置,并向其不斷逼近的趨勢,具有一定的目標性,防止隨機搜索而偏離最優解;第三部分為社會部分,反映出粒子之間的協同合作性,使得粒子在保持自身移動的同時還能關注全局最優值,并向其移動靠近,進而能達到搜索全局最優的目的。

粒子i所經歷過的最好位置Pi是由式(3)確定:

而整個群體所經歷過的最好位置Pg(t)由式(4)決定:

PSO 算法的基本流程如下:

步驟1 初始化種群大小為M,維數為n及參數c1、c2、r1、r2。

步驟2 初始化M個粒子的速度V={V1,V2,…,VM}和位置X={X1,X2,…,XM}。

步驟3 計算每個粒子所對應的目標函數f(Xi(t)),并根據式(3)和式(4)更新個體最優Pi和全局最優Pg。

步驟4 根據式(2)更新粒子的速度Vi(t)和位置Xi(t)。

步驟5 是否達到最大迭代次數或最大閾值,如果是,則結束算法,輸出全局最優解;如果否,則跳到步驟3 繼續執行。

2 粒子群算法中參數分析

PSO 算法中主要涉及到的參數有:學習因子c1、c2,慣性權重w以及最大速度等。

2.1 慣性權重的設置[1]

慣性權重w是PSO 算法中比較重要的參數之一,它的大小決定了本次迭代中粒子飛行速度受上次迭代中飛行速度影響的程度,也間接決定了粒子全局和局部的搜索能力。

分析可知,w取較大值有利于全局搜索,但增大算法開銷,降低算法效率;w取較小值有利于局部搜索,加速算法收斂,但容易陷入局部最優,因此設置一個合適的w即可平衡全局和局部搜索能力,兼顧算法收斂速度和收斂精度,降低陷入局部最優解的可能性,提高算法的整體性能。

Shi 等[2]通過一系列的實驗,得出慣性權重函數的線性下降范圍為[0.9,0.4],慣性權重范圍的確定使得粒子在搜索的前期能夠迅速明確最優解所處的搜索范圍。根據慣性權重的變化,粒子的搜索速度和范圍也隨之變化,從而實現更加精確的搜索。但這種方法存在一個問題,即若粒子前期未能搜索到最優位置,則后期隨著粒子全局搜索能力的下降,局部搜索能力的增強,則容易出現局部收斂,針對這一現象,提出了一種非線性慣性權重算法[3],其表示為

式中:wstart和wend分別為慣性權重的起始值和終點值,即最大值和最小值,k為控制因子,控制著慣性權重隨迭代次數的變化,文獻中指出k的取值為3.0~4.0 時,算法所達到的效果較好。

如圖1 所示,當迭代次數在0 到200 之間時,慣性權重w從慢到快變化;而當迭代次數在250 以上時,慣性權重w由快到慢變化,故粒子在搜索前期無法保持較大的搜索范圍,后期的收斂速度也受到一定的影響,同時,兩者慣性權重的交接點即0.675也處于這個范圍內,故在慣性權重近于交接點值時,可以通過增加迭代次數來擴大粒子的搜索范圍。

圖1 線性和非線性慣性權重函數曲線

如圖2 所示,可以看出k的取值不同,慣性權重的結果也會受到影響,k=0.5、1.5、3 和3.6 時,對應的慣性權重如圖2 所示,當k=0.5 時,慣性權重取值較大,搜索范圍較為廣泛,不易搜索到最優解;當k=1.5 時,慣性權重取值的前期變化較為緩慢,能夠獲得較大的搜索范圍,而后期慣性權重相對于k=3 和3.6 時,減小得較為緩慢,很難在局部搜索中獲取最優解。為了確保粒子在整個迭代過程中既能有效地進行全局搜索,又能有效進行局部搜索,讓粒子在前期能更精確獲得最優解搜索范圍,后期能獲得最優解,本文將采用非線性和線性相結合的方式來設置慣性權重,如式(7)所示:

圖2 k 取值不同時慣性權重的對比

2.2 學習因子的設置

學習因子c1使得粒子根據個體的歷史經驗向個體最優解靠近,而c2則使得粒子通過個體間的相互協作引導著粒子向全局最優方向靠近。

當c1=0、c2=0 時,粒子只靠自身速度在進行盲目搜索;當c1≠0、c2=0 時,粒子將失去與其他粒子間的協作關系,僅靠自身能力搜索整個空間,缺乏搜索指導,其他粒子的優勢將無法體現,易陷入局部收斂;當c1=0、c2≠0 時,粒子的搜索主要依靠與其他個體間的相互協作,而缺少了對自身經歷的學習,盲目跟隨群體中的最優粒子,易錯過最優解。因此,只有對c1、c2進行合理取值,才能使得粒子充分利用自身經驗和個體間協作有效搜索全局最優解。

本文以線性權重和非線性權重的交接點約為0.675 為分界點,當w大于等于交點時,則學習因子c1和c2分別取2.5 和0.5,而w小于交點時,學習因子c1和c2分別取0.5 和2.5,具體如式(8)所示:

2.3 最大速度vmax的設置

粒子群里的粒子速度主要是用來控制粒子在搜索空間中的移動距離。通常,粒子速度越大,其每次搜索跨越度就越大,全局搜索能力就越強。但如果粒子最大速度設置過大,在提高其全局搜索能力的同時也提高了粒子的自由度,這樣容易使粒子跳過最優解,很難搜索到全局最優;反之,如果粒子最大速度設置過小,每次迭代粒子在空間中移動就相對緩慢,局部搜索能力增強,全局搜索能力變弱,粒子容易陷入局部最優。vmax的選擇通常憑經驗給定,并一般設定為問題空間的10%~20%。

3 粒子群算法的應用

3.1 語音識別原理[4-6]

如圖3 所示,首先將語音信號分成訓練語音和識別語音,然后進行預處理和特征參數提取,得到兩組隨機向量序列;接著通過矢量量化器把兩組隨機向量序列轉化成兩組觀測序列,一組用于訓練DHMM 模型,一組用于識別,最后利用Viterbi 算法計算測試觀測序列在每個DHMM 上的輸出概率,輸出概率最大的詞就是識別結果。而本文所做工作對應的是圖3 識別過程中矢量量化里的碼書設計。

圖3 語音識別方法

3.2 編碼方式

從一段語音中提取M個特征矢量作為矢量量化碼書設計的訓練矢量,其維數為k,而碼書大小為N。粒子群算法采用的是基于碼書的編碼方式,每個編碼和可行解相互對應,每個粒子對應一個碼書,即每個粒子對應具有N個碼字的碼書。在這種編碼方式下,每個粒子都是由N個聚類中心(碼字)組成,故每個粒子的速度Vi和Xi位置都是N×k維矢量,均可表示為:

3.3 初始粒子的設置

數據維數為k,給定n個粒子,最大迭代次數為Tmax。最初將訓練矢量任意歸類,隨后將采用最近鄰條件和質心條件獲取初始粒子。初始化中,粒子i的位置矢量即為矢量量化碼書的胞腔質心,其速度矢量可隨機初始化為0,按照此過程循環n次,即可產生n個粒子速度和位置矢量。

3.4 適應度函數

在矢量量化碼書設計中,通常采用類內、類間離散度以及矢量不均勻來衡量碼書設計算法的性能,本文采用類內離散度的倒數作為適應度函數。設訓練矢量為Z={z1,z2,z3,…,zM},利用適應度函數確定最佳劃分,將訓練矢量聚類到每個胞腔中形成最終碼書為Y={y1,y2,y3,…,yN}。式(11)給出了類內離散度J的求解方法:

式中:d(zi,yj)為胞腔i內所有訓練矢量到其質心的距離,ziεRj表示胞腔j內的所有訓練矢量。

類間離散度是指碼書中各胞腔質心間的距離,其值越大,說明收斂性能越好,碼書質量越高,其計算公式如式(13)所示:

式中:yi和yj分別是指第i、j胞腔的質心,T為轉置。

適應度函數采用類內離散度的倒數表示,用f表示,如式(14)所示,c為一個調節常數。由適應度函數可知,類內離散度越小,則適應度值越大,碼書質量性能越好。

3.5 優化粒子群算法的應用[7-11]

為了避免算法陷入局部最優及過早收斂等問題,本文將引入柯西變異策略以改進算法的收斂速度和收斂精度等問題。

柯西變異公式如式(15)所示,其中CM 為柯西變異算子,rand 為均勻分布在(0,1)范圍內的任意實數。

若粒子的種群規模為N,f()代表第t次迭代中第i個粒子的適應度表示第t次迭代中粒子群適應度的平均值,根據式(15)計算粒子群的聚集度δ,當f()距離偏差越大時,δ值越大,說明群多樣性越好;當f()距離偏差越小時,δ值則越小,說明群多樣性越差。

當δ

步驟1 算法初始化。從一段語音中按要求提取M個訓練矢量Z={z1,z2,z3,…,zM},其中,zi為k維矢量。將其隨機劃分聚類,得到初始碼書,每個碼書有N個碼字,將此步驟循環L次,生成L個初始碼書,作為粒子群中L個粒子的初始位置X={x1,x2,x3,…,xL},粒子的初始速度V={v1,v2,v3,…,vL}、個體極值Pi和全局極值Pg設置為0。

步驟2 參照式(1)和式(2)更新粒子速度和位置,計算并比較其適應值,記錄下此次循環中所有粒子經歷的最好位置及其適應值,與全局極值Pg相比較,若適應度小于Pg時的適應度,則更新全局極值Pg;同時,記錄此次循環中每個粒子所經歷的最好位置及其適應值,將其與自身個體極值Pi相比較,若適應值小于自身Pi所對應的適應值,則更新該粒子的個體極值Pi,更新公式參照式(3)和式(4)。

步驟3 計算粒子群的聚集度δ和柯西變異算子CM,比較兩者大小,當δ

步驟4 根據最近鄰劃分原則,以粒子的更新位置為質心,重新將訓練矢量進行劃分聚類。聚類完成后,根據聚類結果更新確定新的質心,形成新的碼書,計算類間離散度。

步驟5 當算法達到最大迭代次數或最大閾值要求時,算法結束,比較類間離散度,輸出最優碼書,否則,t=t+1,轉到步驟2。

4 實驗結果

本文在MATLAB 平臺上運行,選取一段長60 s的語音信號,其中選取40 s 語音作為訓練信號,20 s語音作為測試信號,采樣頻率FS 為8000 次/s,采樣精度NBITS 為16 位精度的采樣,幀長frame 為160,采樣點sample 為500。

算法中的參數選取源于經驗值,粒子數N=30,c1、c2取值見式(8),慣性權重w的選取依據式(7),wmax取為0.9,wmin取為0.4。本文將從收斂性和重構信號兩個方面對比兩種算法的不同。

如圖4 和圖5 所示,收斂性對比:在codebook 為512 時,迭代次數為20,此時,標準PSO 出現了過早收斂現象,且全局最優值(距離)取值很大,收斂最小值為506.734 8,未達到收斂要求,而改進后的PSO 在迭代次數=20 時依然在遍歷搜索,未完成收斂,全局最優值(距離)取值最小為49.594 9;在codebook 為1 024 時,迭代次數為31,兩個算法均呈現逐步收斂,但標準PSO 收斂最小值為43.577 7,而改進后的PSO 收斂最小值卻達到了0.832 4,接近原始信號提取的特征值。

圖4 codebook=512 時

圖5 codebook=1 024 時

重構信號對比:通過標準PSO 和改進后的PSO兩個算法對原始信號進行量化重構,重構后的信號波形如圖6 所示,標準PSO 重構后的信號相對于原始信號丟了部分數據,改進后的PSO 重構后的信號雖然出現了雜波,但整體信號特征保留,同時,通過人的聽覺感知兩個信號的不同,標準PSO 重構后的信號丟失了部分信息,導致聽起來邊界不清,內容不易理解,而改進后的PSO 重構后的信號雖出現“吱吱啦啦”的聲音,但語音內容容易理解。

圖6 語音信號重構對比

5 結論

粒子群優化算法是受鳥群覓食的啟發而提出的一種群智能優化算法,常被用于解決多目標優化問題。本文將粒子群算法用于語音信號識別中,為了提升信號識別質量,提出一種柯西變異和粒子群聚集度混合擾動方法改進標準粒子群算法,實現當粒子群聚集度小于柯西變異算子時,則認為此時粒子群多樣性欠缺,通過變異當局最優值擾動粒子聚類,避免粒子的過早收斂,增加全局遍歷性,實驗結果從兩個方面驗證了改進粒子群算法的性能,證明了其有效性和改善度。

猜你喜歡
慣性適應度全局
你真的了解慣性嗎
改進的自適應復制、交叉和突變遺傳算法
Cahn-Hilliard-Brinkman系統的全局吸引子
量子Navier-Stokes方程弱解的全局存在性
沖破『慣性』 看慣性
落子山東,意在全局
無處不在的慣性
普遍存在的慣性
基于空調導風板成型工藝的Kriging模型適應度研究
新思路:牽一發動全局
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合