陳智國(guó),王忠策
(1.吉林化工學(xué)院 信息與控制工程學(xué)院,吉林吉林,132022;2.吉林農(nóng)業(yè)科技學(xué)院 電氣與信息控制工程學(xué)院,吉林吉林, 132101)
自適應(yīng)了濾波算法是信號(hào)處理中重要的組成部分[1],廣泛的應(yīng)用與系統(tǒng)的辨識(shí)、消除回波、自適應(yīng)譜線增強(qiáng)、自適應(yīng)信道均衡、語(yǔ)音線性預(yù)測(cè)、自適應(yīng)天線陣等諸多領(lǐng)域當(dāng)中。LMS算法是最小均方算法的簡(jiǎn)稱(chēng)英文全稱(chēng)為L(zhǎng)east Mean Square,算法以其實(shí)現(xiàn)方便,性能穩(wěn)定而聞名。LMS算法通過(guò)不斷更新濾波系數(shù)來(lái)實(shí)現(xiàn)多階單位沖擊響應(yīng)濾波器。
Adagrad算法是梯度下降的算法在近些年發(fā)展起來(lái),Adadrad的優(yōu)點(diǎn)就是它沒(méi)有了手動(dòng)調(diào)試學(xué)習(xí)率的方式,轉(zhuǎn)變?yōu)樵谒惴ǖ倪^(guò)程中自己不斷調(diào)整學(xué)習(xí)率,從而讓期望函數(shù)中每一個(gè)參數(shù)都擁有學(xué)習(xí)率。
針對(duì)LMS算法中收斂速度比較慢、濾波中誤差較大的問(wèn)題,在LMS算法中引入了Adagrad算法來(lái)改變LMS算法固定步長(zhǎng)。
LMS算法最先是由美國(guó)斯坦福大學(xué)的Widrow和Hoff在20世紀(jì)中期研究自適應(yīng)理論模型時(shí)率先研究提出,因?yàn)長(zhǎng)MS算法的工作計(jì)算量小,容易實(shí)現(xiàn)等優(yōu)點(diǎn)被廣泛地應(yīng)用于雷達(dá)、通信、醫(yī)藥、圖像處理等多個(gè)領(lǐng)域[2]。LMS算法不需要知道輸入的信號(hào)與所期望的信號(hào)的一些特征情況,而在某一時(shí)刻的權(quán)重系數(shù)是通過(guò)上一時(shí)刻的權(quán)重系數(shù)加上負(fù)均方誤差梯度與比例項(xiàng)的積來(lái)計(jì)算得到。自適應(yīng)濾波的基本結(jié)構(gòu)如圖1所示,其中內(nèi)部LMS算法矢量圖如圖2所示。其中x(n)為濾波器輸入的信號(hào),y(n)是由濾波器計(jì)算后輸出的信號(hào),d(n)是系統(tǒng)期望的信號(hào),e(n)是系統(tǒng)接收期望的信號(hào)與輸出信號(hào)之間的誤差值,w(n)是權(quán)向量。
圖1 自適應(yīng)濾波器結(jié)構(gòu)圖
圖2 算法矢量圖
LMS算法一般步驟如下[3]:
(1)初始化信號(hào)的權(quán)重系數(shù);
(2)計(jì)算與輸入信號(hào)相對(duì)應(yīng)的輸出信號(hào);
(3)輸出信號(hào)與期望信號(hào)之間的誤差值計(jì)算;
(4)自適應(yīng)濾波器權(quán)重系數(shù)的迭代及更新。
算法不斷迭代權(quán)重系數(shù),直到收斂。為了結(jié)果的收斂性步長(zhǎng)因子μ因滿(mǎn)足一定的條件限制即:0<μ<1λmax。
其中λmax為輸入信號(hào)自相關(guān)矩陣最大的特征值。由于LMS算法中的步長(zhǎng)為固定值,那么LMS算法的收斂速度和穩(wěn)態(tài)誤差之間的矛盾會(huì)難以解決。當(dāng)步長(zhǎng)因子μ較小時(shí)算法的穩(wěn)態(tài)誤差會(huì)較小,但是此時(shí)的收斂速度也會(huì)比較慢。當(dāng)步長(zhǎng)因子μ較大時(shí)算法收斂速度則會(huì)變快,而此時(shí)的穩(wěn)態(tài)誤差這會(huì)增大[4]。所以為了使這個(gè)問(wèn)題得到有效的解決,考慮了一些LMS算法的優(yōu)化思路:(1)固定步長(zhǎng)法:步長(zhǎng)參數(shù)μ是一個(gè)常數(shù),不隨迭代次數(shù)變化。這種方法簡(jiǎn)單易實(shí)現(xiàn),但是需要根據(jù)信號(hào)的特性選擇合適的 值,否則會(huì)影響收斂速度和穩(wěn)態(tài)誤差。(2)變步長(zhǎng)法:步長(zhǎng)參數(shù) 是一個(gè)變化的量,隨著迭代次數(shù)或者誤差信號(hào)的大小而調(diào)整。這種方法可以提高收斂速度和降低穩(wěn)態(tài)誤差,但是需要增加計(jì)算量和復(fù)雜度。(3)自適應(yīng)步長(zhǎng)法:步長(zhǎng)參數(shù)μ是一個(gè)自適應(yīng)的量,根據(jù)濾波器系數(shù)的變化而調(diào)整。這種方法可以適應(yīng)信號(hào)的非平穩(wěn)性和噪聲干擾,但是需要增加存儲(chǔ)空間和計(jì)算量。這里選擇自適應(yīng)的步長(zhǎng)優(yōu)化方法在LMS算法中引入一種深度學(xué)習(xí)Adagrad算法來(lái)對(duì)步長(zhǎng)μ進(jìn)行合理的優(yōu)化處理,從而實(shí)現(xiàn)加快收斂同時(shí)減少穩(wěn)態(tài)誤差的兩重效果。
Adagrad算法全稱(chēng):Adaptive Gradient是2011年由Duchi提出來(lái)的一種學(xué)習(xí)速率自適應(yīng)梯度下降算法,是梯度下降優(yōu)化算法的擴(kuò)展,算法的核心思路就是,在算法迭代訓(xùn)練過(guò)程中學(xué)習(xí)效率是衰減的,如果一個(gè)算法它的下降梯度一直都比較大那么Adagrad算法便會(huì)降低這個(gè)梯度參數(shù),防止過(guò)度的震蕩減小穩(wěn)態(tài)時(shí)的誤差。Adagrad算法是一種基于梯度下降的優(yōu)化算法,它能夠自適應(yīng)地調(diào)整每個(gè)維度的學(xué)習(xí)率,能夠合適的處理二次優(yōu)化等問(wèn)題,能夠有效地應(yīng)對(duì)梯度下降算法難以處理的拉長(zhǎng)的損失函數(shù)。LMS算法的主要缺點(diǎn)在于收斂速度慢,尤其是對(duì)于有噪聲的收斂速度,其次是LMS算法需要選擇合適的步長(zhǎng)參數(shù),對(duì)于非平穩(wěn)的信號(hào)需要不斷地調(diào)整步長(zhǎng)參數(shù),否則可能會(huì)導(dǎo)致不穩(wěn)定或過(guò)度調(diào)整的情況。LMS算法中因?yàn)椴介L(zhǎng)是固定值的原因,梯度下降總是固定值,所以造成收斂速度與穩(wěn)態(tài)誤差之間難以解決的矛盾。但是不同的情況所需的下降梯度也不同,算法進(jìn)行的過(guò)程中又不能人工參與地改變算法參數(shù),所以為了解決這個(gè)矛盾將Adagrad梯度下降優(yōu)化算法引入到LMS算法中,達(dá)到自適應(yīng)的梯度下降步長(zhǎng),首先是輸入較大的步長(zhǎng),以此來(lái)加快算法的收斂速度,然后步長(zhǎng)再逐漸地衰減來(lái)保證穩(wěn)態(tài)誤差減小,這樣就實(shí)現(xiàn)了加速收斂和同時(shí)減少穩(wěn)態(tài)誤差的雙重效果。Adadrad算法的迭代更新過(guò)程如下:
(1)計(jì)算目標(biāo)函數(shù)當(dāng)前的參數(shù)梯度gt;
(2)根據(jù)以及知道的梯度計(jì)算一階動(dòng)量mt,二階動(dòng)量vt;
(3)計(jì)算當(dāng)下時(shí)刻的學(xué)習(xí)率;
(4)根據(jù)計(jì)算的下降梯度進(jìn)行更新迭代優(yōu)化。
Adagrad算法的優(yōu)點(diǎn)在于在每次迭代更新的過(guò)程中都會(huì)把梯度記錄下來(lái),每一個(gè)梯度的學(xué)習(xí)效率不一樣并且每個(gè)梯度都是在不斷減小,在梯度大的維度中減小下降的速度,在梯度較小的維度中加快下降速度。
首先定義權(quán)向量W=[w1,w2,w3···wn]T,誤差信號(hào)式(3)中輸出信號(hào)的矢量和形式可以表達(dá)為:
所以對(duì)誤差函數(shù)的平方根可以得到如下形式:
對(duì)誤差函數(shù)兩邊進(jìn)行求數(shù)學(xué)期望,可得均方誤差:
由此可見(jiàn)均方誤差是權(quán)系數(shù)向量W的二次函數(shù),它由一個(gè)中間向上的拋物曲面構(gòu)成,所以它由唯一的最小值函數(shù),調(diào)節(jié)權(quán)系數(shù)使均方誤差最小,就相當(dāng)于沿拋物面下降來(lái)找到最小值。所以可以用梯度法來(lái)求得最小值。式(10)兩邊對(duì)權(quán)系數(shù)W求導(dǎo),可以得到均方誤差函數(shù)的梯度[5]:
所以令Δ(n)=0,即可得到最佳的權(quán)系數(shù)向量。由此得到的最佳權(quán)系數(shù)向量精確,但是需要知道Rxx和Rxd的先驗(yàn)統(tǒng)計(jì)知識(shí)而且還需要進(jìn)行矩陣的求逆運(yùn)算,會(huì)增加很大的運(yùn)算量,所以在LMS算法中根據(jù)最優(yōu)化算法中的最速下降法,“下一時(shí)刻”權(quán)系數(shù)向量w(n+1)應(yīng)等于“現(xiàn)在時(shí)刻”權(quán)系數(shù)向量w(n)加上一個(gè)負(fù)的誤差梯度-Δ(n)的比例項(xiàng)來(lái)計(jì)算得到[6],即:
式(12)中μ就是控制收斂速度與穩(wěn)態(tài)誤差的常數(shù),即收斂因子步長(zhǎng)。所以LMS算法中的兩個(gè)關(guān)鍵便是梯度Δ(n)的計(jì)算與μ的選擇。LMS算法中用到了一種十分有效的近似計(jì)算法求的Δ(n),即用作為均方誤差的估計(jì)再來(lái)計(jì)算得到:
改進(jìn)的算法通過(guò)在優(yōu)化步驟中使用Adagrad中的自適應(yīng)下降梯度的方式來(lái)代替LMS算法中的固定步長(zhǎng),最終改進(jìn)的算法具有加速收斂和同時(shí)減少穩(wěn)態(tài)誤差的雙重效果。根據(jù)公式(3)(4)(5)有以下優(yōu)化:
其中r是誤差平方和的累積,η是需要自己設(shè)置的初始學(xué)習(xí)率,α是為了維持?jǐn)?shù)值穩(wěn)定性而添加一個(gè)很小的常數(shù),如10-6。由此可見(jiàn),在算法迭代中隨著誤差函數(shù)的不斷累計(jì)那么r值就在逐漸增加,分母在不斷變大。所以整體步長(zhǎng)μ是一個(gè)由大變小的過(guò)程,那么對(duì)應(yīng)于收斂速度于穩(wěn)態(tài)誤差中的效果就是,初期步長(zhǎng)大算法的收斂速度快隨著誤差平方根的累計(jì)r增大,分母增大步長(zhǎng)減小那么收斂速度逐漸減小最后使得穩(wěn)態(tài)誤差減小。所以?xún)?yōu)化后的算法可以達(dá)到加速收斂和減小穩(wěn)態(tài)誤差的雙重效果。改進(jìn)后的LMS算法一般步驟如下:
(1)初始化濾波器:w(0)、x(0);
(2)對(duì)于輸入的樣本信號(hào)x(n)計(jì)算輸出信號(hào)y(n);
(3)由期望信號(hào)d(n)與輸出信號(hào)y(n)計(jì)算的誤差值e(n);
(4)將誤差值函數(shù)進(jìn)行累加計(jì)算;
(5)通過(guò)改進(jìn)后的LMS算法進(jìn)行濾波器示數(shù)w(n);
(6)返回步驟(2)直到收斂結(jié)束。
利用Mtalab仿真進(jìn)行仿真分析對(duì)比改進(jìn)前后的收斂速度與穩(wěn)態(tài)誤差,其中輸入信號(hào)為振幅為2的正弦函數(shù)如圖3所示,加入的誤差噪聲信號(hào)為高斯白噪聲信號(hào)如圖4所示。圖5、圖6分別為L(zhǎng)MS算法仿真結(jié)果和改進(jìn)后的LMS算法仿真結(jié)果。
圖3 輸入信號(hào)
圖4 高斯白噪聲干擾信號(hào)
圖5 LMS算法濾波結(jié)果
圖6 改進(jìn)后LMS算法濾波結(jié)果
由圖5和圖6可見(jiàn)LMS算法在迭代到100次的時(shí)候波形逐漸過(guò)濾掉噪聲信號(hào)出現(xiàn)了原本期望得到的信號(hào),而改進(jìn)后的LMS算法在跌打到50次左右的時(shí)候就可以呈現(xiàn)出期望信號(hào)可見(jiàn)在收斂速度上改進(jìn)后的LMS算法收斂速度更快。然后再對(duì)改進(jìn)前后的LMS算法誤差進(jìn)行仿真分析結(jié)果如圖7、圖8所示。
圖7 LMS算法誤差
圖8 改進(jìn)LMS算法誤差
收斂速度和穩(wěn)態(tài)誤差是判斷LMS算法性能優(yōu)劣的兩個(gè)重要指標(biāo),在收斂速度方面改進(jìn)后的LMS算法優(yōu)于原本的LMS算法,在誤差方面為了便于對(duì)比所以起始誤差都設(shè)置為0起初兩者誤差還是相對(duì)較大的,但是隨著迭代次數(shù)的增加可變步長(zhǎng)LMS算法的優(yōu)勢(shì)就體現(xiàn)了出來(lái)隨著步長(zhǎng)值減小誤差值也在不斷減小,在迭代到50次左右的時(shí)候誤差信號(hào)已經(jīng)穩(wěn)定在0上下波動(dòng),而原本的LMS算法因?yàn)楣潭ú介L(zhǎng)的原因在迭代到100次左右的時(shí)候出現(xiàn)誤差在0上下波動(dòng)且波動(dòng)幅度大于改進(jìn)后的LMS算法。由此可見(jiàn),在對(duì)LMS算法中固定步長(zhǎng)的改進(jìn)中將其與深度學(xué)習(xí)算法Adagrad算法中自適應(yīng)學(xué)習(xí)率的方式相結(jié)合,可以實(shí)現(xiàn)使LMS算法加快收斂速度和減小穩(wěn)態(tài)誤差的雙重效果。
LMS算法是當(dāng)前應(yīng)用最廣泛的自適應(yīng)濾波算法之一,本文介紹了LMS算法以及算法優(yōu)劣點(diǎn),并且從深度學(xué)習(xí)Adagrad算法的角度對(duì)LMS算法的劣勢(shì)固定步長(zhǎng)做了優(yōu)化,使改進(jìn)后的算法比原本的算法在收斂速度方面更快在穩(wěn)態(tài)誤差方面更小。并且通過(guò)Matlab仿真驗(yàn)證。結(jié)果表明改進(jìn)后算法收斂快誤差小,滿(mǎn)足了加速收斂和同時(shí)減少穩(wěn)態(tài)誤差的雙重效果,能有效地提高濾波器濾波效果。