陳智國,王忠策
(1.吉林化工學院 信息與控制工程學院,吉林吉林,132022;2.吉林農業科技學院 電氣與信息控制工程學院,吉林吉林, 132101)
自適應了濾波算法是信號處理中重要的組成部分[1],廣泛的應用與系統的辨識、消除回波、自適應譜線增強、自適應信道均衡、語音線性預測、自適應天線陣等諸多領域當中。LMS算法是最小均方算法的簡稱英文全稱為Least Mean Square,算法以其實現方便,性能穩定而聞名。LMS算法通過不斷更新濾波系數來實現多階單位沖擊響應濾波器。
Adagrad算法是梯度下降的算法在近些年發展起來,Adadrad的優點就是它沒有了手動調試學習率的方式,轉變為在算法迭代的過程中自己不斷調整學習率,從而讓期望函數中每一個參數都擁有學習率。
針對LMS算法中收斂速度比較慢、濾波中誤差較大的問題,在LMS算法中引入了Adagrad算法來改變LMS算法固定步長。
LMS算法最先是由美國斯坦福大學的Widrow和Hoff在20世紀中期研究自適應理論模型時率先研究提出,因為LMS算法的工作計算量小,容易實現等優點被廣泛地應用于雷達、通信、醫藥、圖像處理等多個領域[2]。LMS算法不需要知道輸入的信號與所期望的信號的一些特征情況,而在某一時刻的權重系數是通過上一時刻的權重系數加上負均方誤差梯度與比例項的積來計算得到。自適應濾波的基本結構如圖1所示,其中內部LMS算法矢量圖如圖2所示。其中x(n)為濾波器輸入的信號,y(n)是由濾波器計算后輸出的信號,d(n)是系統期望的信號,e(n)是系統接收期望的信號與輸出信號之間的誤差值,w(n)是權向量。

圖1 自適應濾波器結構圖

圖2 算法矢量圖
LMS算法一般步驟如下[3]:
(1)初始化信號的權重系數;
(2)計算與輸入信號相對應的輸出信號;
(3)輸出信號與期望信號之間的誤差值計算;
(4)自適應濾波器權重系數的迭代及更新。
算法不斷迭代權重系數,直到收斂。為了結果的收斂性步長因子μ因滿足一定的條件限制即:0<μ<1λmax。
其中λmax為輸入信號自相關矩陣最大的特征值。由于LMS算法中的步長為固定值,那么LMS算法的收斂速度和穩態誤差之間的矛盾會難以解決。當步長因子μ較小時算法的穩態誤差會較小,但是此時的收斂速度也會比較慢。當步長因子μ較大時算法收斂速度則會變快,而此時的穩態誤差這會增大[4]。所以為了使這個問題得到有效的解決,考慮了一些LMS算法的優化思路:(1)固定步長法:步長參數μ是一個常數,不隨迭代次數變化。這種方法簡單易實現,但是需要根據信號的特性選擇合適的 值,否則會影響收斂速度和穩態誤差。(2)變步長法:步長參數 是一個變化的量,隨著迭代次數或者誤差信號的大小而調整。這種方法可以提高收斂速度和降低穩態誤差,但是需要增加計算量和復雜度。(3)自適應步長法:步長參數μ是一個自適應的量,根據濾波器系數的變化而調整。這種方法可以適應信號的非平穩性和噪聲干擾,但是需要增加存儲空間和計算量。這里選擇自適應的步長優化方法在LMS算法中引入一種深度學習Adagrad算法來對步長μ進行合理的優化處理,從而實現加快收斂同時減少穩態誤差的兩重效果。
Adagrad算法全稱:Adaptive Gradient是2011年由Duchi提出來的一種學習速率自適應梯度下降算法,是梯度下降優化算法的擴展,算法的核心思路就是,在算法迭代訓練過程中學習效率是衰減的,如果一個算法它的下降梯度一直都比較大那么Adagrad算法便會降低這個梯度參數,防止過度的震蕩減小穩態時的誤差。Adagrad算法是一種基于梯度下降的優化算法,它能夠自適應地調整每個維度的學習率,能夠合適的處理二次優化等問題,能夠有效地應對梯度下降算法難以處理的拉長的損失函數。LMS算法的主要缺點在于收斂速度慢,尤其是對于有噪聲的收斂速度,其次是LMS算法需要選擇合適的步長參數,對于非平穩的信號需要不斷地調整步長參數,否則可能會導致不穩定或過度調整的情況。LMS算法中因為步長是固定值的原因,梯度下降總是固定值,所以造成收斂速度與穩態誤差之間難以解決的矛盾。但是不同的情況所需的下降梯度也不同,算法進行的過程中又不能人工參與地改變算法參數,所以為了解決這個矛盾將Adagrad梯度下降優化算法引入到LMS算法中,達到自適應的梯度下降步長,首先是輸入較大的步長,以此來加快算法的收斂速度,然后步長再逐漸地衰減來保證穩態誤差減小,這樣就實現了加速收斂和同時減少穩態誤差的雙重效果。Adadrad算法的迭代更新過程如下:
(1)計算目標函數當前的參數梯度gt;
(2)根據以及知道的梯度計算一階動量mt,二階動量vt;
(3)計算當下時刻的學習率;
(4)根據計算的下降梯度進行更新迭代優化。
Adagrad算法的優點在于在每次迭代更新的過程中都會把梯度記錄下來,每一個梯度的學習效率不一樣并且每個梯度都是在不斷減小,在梯度大的維度中減小下降的速度,在梯度較小的維度中加快下降速度。
首先定義權向量W=[w1,w2,w3···wn]T,誤差信號式(3)中輸出信號的矢量和形式可以表達為:
所以對誤差函數的平方根可以得到如下形式:
對誤差函數兩邊進行求數學期望,可得均方誤差:
由此可見均方誤差是權系數向量W的二次函數,它由一個中間向上的拋物曲面構成,所以它由唯一的最小值函數,調節權系數使均方誤差最小,就相當于沿拋物面下降來找到最小值。所以可以用梯度法來求得最小值。式(10)兩邊對權系數W求導,可以得到均方誤差函數的梯度[5]:
所以令Δ(n)=0,即可得到最佳的權系數向量。由此得到的最佳權系數向量精確,但是需要知道Rxx和Rxd的先驗統計知識而且還需要進行矩陣的求逆運算,會增加很大的運算量,所以在LMS算法中根據最優化算法中的最速下降法,“下一時刻”權系數向量w(n+1)應等于“現在時刻”權系數向量w(n)加上一個負的誤差梯度-Δ(n)的比例項來計算得到[6],即:
式(12)中μ就是控制收斂速度與穩態誤差的常數,即收斂因子步長。所以LMS算法中的兩個關鍵便是梯度Δ(n)的計算與μ的選擇。LMS算法中用到了一種十分有效的近似計算法求的Δ(n),即用作為均方誤差的估計再來計算得到:
改進的算法通過在優化步驟中使用Adagrad中的自適應下降梯度的方式來代替LMS算法中的固定步長,最終改進的算法具有加速收斂和同時減少穩態誤差的雙重效果。根據公式(3)(4)(5)有以下優化:
其中r是誤差平方和的累積,η是需要自己設置的初始學習率,α是為了維持數值穩定性而添加一個很小的常數,如10-6。由此可見,在算法迭代中隨著誤差函數的不斷累計那么r值就在逐漸增加,分母在不斷變大。所以整體步長μ是一個由大變小的過程,那么對應于收斂速度于穩態誤差中的效果就是,初期步長大算法的收斂速度快隨著誤差平方根的累計r增大,分母增大步長減小那么收斂速度逐漸減小最后使得穩態誤差減小。所以優化后的算法可以達到加速收斂和減小穩態誤差的雙重效果。改進后的LMS算法一般步驟如下:
(1)初始化濾波器:w(0)、x(0);
(2)對于輸入的樣本信號x(n)計算輸出信號y(n);
(3)由期望信號d(n)與輸出信號y(n)計算的誤差值e(n);
(4)將誤差值函數進行累加計算;
(5)通過改進后的LMS算法進行濾波器示數w(n);
(6)返回步驟(2)直到收斂結束。
利用Mtalab仿真進行仿真分析對比改進前后的收斂速度與穩態誤差,其中輸入信號為振幅為2的正弦函數如圖3所示,加入的誤差噪聲信號為高斯白噪聲信號如圖4所示。圖5、圖6分別為LMS算法仿真結果和改進后的LMS算法仿真結果。

圖3 輸入信號

圖4 高斯白噪聲干擾信號

圖5 LMS算法濾波結果

圖6 改進后LMS算法濾波結果
由圖5和圖6可見LMS算法在迭代到100次的時候波形逐漸過濾掉噪聲信號出現了原本期望得到的信號,而改進后的LMS算法在跌打到50次左右的時候就可以呈現出期望信號可見在收斂速度上改進后的LMS算法收斂速度更快。然后再對改進前后的LMS算法誤差進行仿真分析結果如圖7、圖8所示。

圖7 LMS算法誤差

圖8 改進LMS算法誤差
收斂速度和穩態誤差是判斷LMS算法性能優劣的兩個重要指標,在收斂速度方面改進后的LMS算法優于原本的LMS算法,在誤差方面為了便于對比所以起始誤差都設置為0起初兩者誤差還是相對較大的,但是隨著迭代次數的增加可變步長LMS算法的優勢就體現了出來隨著步長值減小誤差值也在不斷減小,在迭代到50次左右的時候誤差信號已經穩定在0上下波動,而原本的LMS算法因為固定步長的原因在迭代到100次左右的時候出現誤差在0上下波動且波動幅度大于改進后的LMS算法。由此可見,在對LMS算法中固定步長的改進中將其與深度學習算法Adagrad算法中自適應學習率的方式相結合,可以實現使LMS算法加快收斂速度和減小穩態誤差的雙重效果。
LMS算法是當前應用最廣泛的自適應濾波算法之一,本文介紹了LMS算法以及算法優劣點,并且從深度學習Adagrad算法的角度對LMS算法的劣勢固定步長做了優化,使改進后的算法比原本的算法在收斂速度方面更快在穩態誤差方面更小。并且通過Matlab仿真驗證。結果表明改進后算法收斂快誤差小,滿足了加速收斂和同時減少穩態誤差的雙重效果,能有效地提高濾波器濾波效果。