基于優(yōu)化神經(jīng)網(wǎng)絡的FIR濾波器的設計方案
引 言
IIR濾波器不易做成線性相位,FIR濾波器只要滿足一定條件就可做成線性相位,F(xiàn)IR濾波器有傳統(tǒng)的設計方法,如窗函數(shù)法、頻率采樣法、切比雪夫逼近法等;曾喆昭等人提出了一種基于余弦基神經(jīng)網(wǎng)絡的算法,給出了該算法的收斂條件,并將其應用到高階多通帶FIR濾波器中,用實例說明了該算法在精度、計算速度等方面的優(yōu)越性?;谶@種算法,有人分別將其在數(shù)域和維數(shù)上做出了推廣。
本文提出的方法,是基于余弦基神經(jīng)網(wǎng)絡設計方法的一種改良,其基本思想首先是使設計頻響與理想頻響之間的全局誤差在通帶和阻帶范圍最小,其次再使用模擬退火算法,以最小阻帶衰減為評價函數(shù)優(yōu)化網(wǎng)絡權(quán)值,使最后的結(jié)果朝著最優(yōu)值靠近。由該方法設計的濾波器,通帶和阻帶范圍無過沖、無波動,且阻帶的衰減高,初始條件隨機給定,算法速度快,因而是一種有效的設計方法。
1 I型線性相位FIR濾波器的幅頻特性
若脈沖響應h(n)是實序列,且滿足h(n)=h(N-1-n),N為脈沖響應h(n)的長度,并且N為奇數(shù),則有:
容易看出,此式是由(N+1)/2個余弦項迭加而成的函數(shù),而此函數(shù)在ω=0,π,2π處均不等于零,因此I型線性相位FIR濾波器既可以用作低通濾波器(在ω=0處,幅度函數(shù)不為零),也可用作高通濾波器(在ω=π處,幅度函數(shù)不為零),而且也可以用作帶通和帶阻濾波器,是應用最為廣泛的。
2 余弦基神經(jīng)網(wǎng)絡
在網(wǎng)絡結(jié)構(gòu)方面,如圖1所示,類似于BP網(wǎng)絡的結(jié)構(gòu):
輸入層和輸出層都只有一個節(jié)點,隱含層有M個節(jié)點,且各節(jié)點對應的激勵函數(shù)如下:
式中:M=(N-1)/2
再令輸入層到隱含層的全值都為1,而隱含層到輸出層的權(quán)值ω0~ωM分別取為a0~aM,于是神經(jīng)網(wǎng)絡的輸入/輸出關系就恰好為濾波器的幅度函數(shù)
首先定義權(quán)值矩陣:
設置性能指標:
為訓練樣本數(shù)。
于是權(quán)值修正的公式為:
式中:α為學習速率。
迭代的終止條件可設為性能指標J滿足一定條件,而關于學習速率α的選取會直接影響到神經(jīng)網(wǎng)絡的穩(wěn)定性。目前,已經(jīng)有人提出了其適當?shù)倪x取范圍,例如羅玉雄等人已經(jīng)證明,當滿足0<α<(2/|| C ||2)時(這里||·||2表示的是歐氏范數(shù)的平方),神經(jīng)網(wǎng)絡是穩(wěn)定的;曾喆昭等人也提出并證明了當滿足0<α<(4/N)時,神經(jīng)網(wǎng)絡是穩(wěn)定的。
3 模擬退火算法
由于以上的網(wǎng)絡學習算法從本質(zhì)上來說,還是一種BP算法,所以不可避免地會存在BP算法的缺陷,初始值的選取會影響最終結(jié)果,且容易陷入局部極小值。
模擬退火算法與初始值無關,算法求得的解與初始解狀態(tài)(是算法迭代的起點)無關;模擬退火算法具有漸近收斂性,在理論上已得到嚴格證明,當初溫充分高,降溫足夠慢,每一溫度下抽樣足夠長,最終溫度趨于零時,算法最終以概率1收斂到全局最優(yōu)解。模擬退火算法通過概率判斷來接受新狀態(tài)是算法在局部極小解處有機會跳出并最終趨于全局最優(yōu)的根本原因。于是將模擬退火算法加到前面的算法中去,就可以很好地彌補上述算法的不足。
模擬退火算法的步驟如下:
(1)由一個產(chǎn)生函數(shù)從當前解S產(chǎn)生一個位于解空間的新解S'。
(2)計算與新解所對應的目標函數(shù)差。這里以最小阻帶衰減為評價函數(shù)C(S),這個函數(shù)可以由所得解S輕易地求出,于是目標函數(shù)差△t=C(S')-C(S);
(3)判斷新解是否被接受,其依據(jù)是一個接受準則,最常用的接受準則是Metropolis準則。若△t≥0,則接受S'作為新的當前解S;否則,以概率exp(-△t/T)接受S'作為新的當前解S。
(4)當新解被確定接受時,用新解代替當前解,同時修正評價函數(shù)。此時,當前解實現(xiàn)了一次迭代,可在此基礎上開始下一輪試驗;當新解被判定為舍棄時,則在原當前解的基礎上繼續(xù)下一輪試驗。
將模擬退火融入原算法,其實主要是用原算法來實現(xiàn)模擬退火中第(1)步的產(chǎn)生解S,于是可得到總的算法:
(1)初始化,初始溫度T(充分大),初始解狀態(tài)S(是算法迭代的起點),每個T值的迭代次數(shù)L,初始權(quán)值W,性能指標J,學習速率α,并且設定目標向量(理想幅頻響應Hg(ωk));
(2)對k=1,2,…,L做第(3)~(8)步驟;
(3)計算誤差E(k),使用權(quán)值修正公式:W=W+αE(k)C(Ωk)修正權(quán)值;
(4)滿足性能指標J轉(zhuǎn)步驟(5),否則轉(zhuǎn)步驟(3);
(5)由步驟(4)產(chǎn)生的W得出新解S';
(6)以濾波器的最小阻帶衰減為評價函數(shù),計算△t,其中△t=C(S)-C(S);
(7)若△t>0,則接受S'作為新的當前解,否則以概率exp(-△t/T)接受S'作為新的當前解;
(8)如果滿足終止條件,則輸出當前解作為最優(yōu)解,終止條件通常取為連續(xù)若干個新解都沒有被接受;
(9)減小T,轉(zhuǎn)步驟(2)。當T→0時,終止算法。4 仿真實例
例1:設計一線性相位高通FIR濾波器,其理想幅頻特性為:
對Ω在[0,π]范圍內(nèi)均勻取樣,共取(N+1)/2=60個樣點,即Ωk=πk/59(k=0,1,2,…,59),為了使通帶和阻帶內(nèi)無過沖、無波動,在過渡帶內(nèi)取兩個點0.78和0.25,于是實際的幅頻取樣點為Hd(k)=[zeros(1,29),0.25,0.78,ones(1,29)];網(wǎng)絡結(jié)構(gòu)取為1×60×1,性能指標設置為J=10-8。
經(jīng)過計算機仿真得到如圖2和圖3的仿真圖。
例2:設計一線性相位帶阻FIR濾波器,其理想幅頻特性為:
與例1類似,對Ω在[0,π]范圍內(nèi)均勻取樣,共取(N+1)/2=60個樣點,即Ωk=πk/59,(k=0,1,2,…,59),同樣地,為了使通帶和阻帶內(nèi)無過沖,無波動,在過渡帶內(nèi)取兩個點0.78和0.25,于是實際的幅頻取樣點為Hd(k)=[ones(1,17),0.78,0.25,zeros(1,16),0.25,0.78,ones(1,23)];網(wǎng)絡結(jié)構(gòu)取為1×60×1,性能指標設置為J=10-8。
經(jīng)過計算機仿真得到如圖4和圖5的仿真圖。
文獻[2]中的算法:
兩者相比較可得,雖然在運行時間上本文的算法遜于文獻[2]中的算法,但這個運行時間本身也僅0.5 s左右,是可以接受的。在性能上本文的算法得出的結(jié)果幾乎都在-190 dB左右,而文獻E23中算法得出的結(jié)果則在-77~-93 dB之間波動,因此可以說用本文的算法可以得到更好、更穩(wěn)定的最小阻帶衰減。
5 結(jié) 語
本文方法的特點是先用類似BP網(wǎng)絡的方法調(diào)整神經(jīng)網(wǎng)絡權(quán)值,再用模擬退火技術(shù)進行優(yōu)化,獲取更好的FIR濾波器的脈沖響應,從而完成濾波器的設計。由文中給出的兩個范例可以看出,設計濾波器的幅頻響應在通帶與阻帶范圍均無過沖現(xiàn)象,衰耗特性好,阻帶最小衰減在190 dB以上,通帶沒有衰減。而且這種方法可以輕松地實現(xiàn)低通、高通、帶通、帶阻FIR濾波器的設計,程序運行時間均在0.5 s左右,是一種十分有效的設計方法。