自適應濾波器:最速下降算法

本文轉載自:http://www.cnblogs.com/xingshansi/p/6654372.html

 
前言

西蒙.赫金的《自適應濾波器原理》第四版第四章:最速下降算法。優化求解按照有/無約束分類:如投影梯度下降算法((Gradient projection)便是有約束的優化求解;按照一階二階分類:梯度下降(Gradient descent)、Newton法等;按照偏導存在與否分類:如梯度下降、次梯度下降(Subgradient descent)等.本文主要整理:梯度下降法在維納濾波中的應用.

一、原理思想

 對於準則函數:

                                      

需要尋找最優解w_{o},使它對所有w滿足。可以利用迭代下降的思路求解:

從初始值w_{o}出發, 產生一系列權向量w(1)w(2)...,使得準則函數每一次迭代都是下降的:,其中w(n)是權向量的過去值,w(n+1)是更新值。

定義梯度:

                                 

負梯度方向爲減小方向:

                              

爲了說明準則函數隨着迭代下降,從一階泰勒展開可以觀察:

                 

二、應用實例

 仍然藉助維納濾波一文的例子:

已知

含有噪聲的正弦波:.

其中爲歸一化頻率[-1/2, 1/2],θ爲正弦波相位,服從[0, 2π]的均勻分佈,w(n)爲具有零均值和方差的高斯白噪聲。

時域維納濾波器。假設濾波器爲時域濾波器時M=2.

首先求解相關矩陣:

x(n)爲廣義平穩隨機過程,可以計算其自相關函數:

                                    

得到關於均方誤差的準則函數:

                             

代入數值:

                           

迭代的時候,可以保留矩陣的形式,也可以利用代數的形式,形式不同但本質相同,以矩陣爲例:

                           

得到梯度.

                             

對應搜索代碼:

r_yd = [0.5 0.154]';
R_yy = [2.5 0.154;0.154 2.5];
h_est = [0 0]';
deltaJold = Inf;
mu = 0.001;
for i = 1:2000
    deltaJ = -2*r_yd+2*R_yy*h_est;
    if abs(deltaJ-deltaJold)<1e-5
        break;
    end
    h_est = h_est - mu*deltaJ
    deltaJold = deltaJ;
end
即可得出最優解

 

三、穩定性

上文中μ取0.001,μ如何取值才能保證梯度正常下降呢?事實上,如果μ過大結果會往外發散而不是收斂於最優點。

藉助維納濾波一文可以知道,

                                     

從而有:

                   

:

                               

對於正定矩陣,存在正交矩陣:

                                       

,爲此保證最大特徵值小於1即可保證收斂:

                             

如對應上面h的求解,,用上面的程序容易驗證μ=0.37時滿足條件,可以收斂;μ=0.38則發散,無法得到最優值。

  

四、理論擴展

如果沿着曲線直接尋優,我們稱爲:精確直線搜索。如計算:

                         

這是就是Δxx固定後,該問題就是t的函數,易求解。但實際情況中,準則函數並不總是這麼理想,因此藉助近似的思路去尋優,成了一種更普適的方式,梯度下降法、牛頓法都是基於該思路。

這裏給出一個更簡單的例子y=kx的擬合問題,其中k未知。

首先給出結果圖:

                          

100組隨機試驗,未添加噪聲。

給出code:

N = 100;
a = zeros(1,N);
mu =0.002;
flag = 2;
for k = 1:N
    xold = linspace(-10,10,60);
    nums = randperm(length(xold));
    x = xold(nums);
    y = 3*x +2*randn(1,length(x));
    switch flag
        case 1
            a_est = 0;
            batch = 10;
            for i=1:batch:length(x)
                a_est = a_est+mu*(x(i:i+batch-1)*(y(i:i+batch-1)-a_est*x(i:i+batch-1)).');
            end
        case 2
            a_est = 0;
            batch = 1;
            for i=1:batch:length(x)
                a_est = a_est+mu*(x(i:i+batch-1)*(y(i:i+batch-1)-a_est*x(i:i+batch-1)).');
            end
    end
    a(k) = a_est;
end
對於相關矩陣:來自統計均方誤差,但實際應用中通常無法得知概率分佈以及相關矩陣,通常是基於遍歷性假設,以便利用時間換取空間。即:

                                  

與之對應的統計誤差也不再是均方意義上,假設時間換空間的序列長N:

                              

簡單來說:當N較大時,對應的梯度下降稱之爲——批量(Batch)梯度下降,當N=1即每次來一個樣本,對應稱之爲——隨機梯度下降

通過上面的小程序可以得出兩點結論:

  • 初始值
  • 迭代步長
  • 特徵尺寸(一維無此問題)

二者都對尋優產生影響。事實上對於高維數據,不同特徵尺寸不同,對尋優也有影響,通常需要分別對特徵進行歸一化。

  A-批量梯度下降

仍然以線性迴歸爲例:

                          

這裏,給出準則函數,便於求導通常添加1/2:

                         

求偏導:

                      

從而:

                             

可以寫爲:

                         

迭代至滿足收斂條件即可求解。

  B-隨機梯度下降

對應批量梯度下降,當m=1即一次只接受/處理一個樣本,對應爲隨機梯度下降。

事實上,當引入噪聲時,時間換空間只能是一種近似,即批量/隨機梯度下降的最優解,通常不是維納濾波的最優解。基於隨機梯度的最小均方誤差(Least mean square, LMS)通常稱爲LMS算法,以示與梯度下降的區別。

  C-Newton-Raphson法

 梯度下降法基於一階近似,如果二階逼近收斂是否會更快一些?即尋找梯度的梯度——走一步想兩步。

                                       

再次給出梯度下降的一階Taylor近似:

                            

給出二階Taylor近似:

                      

對應的矩陣稱爲Hessian矩陣,該方法成爲牛頓法(Newton),也稱Newton-Raphson法。

對於點x_k,選擇下降方向:

                                

 

參考:

  • Simon Haykin 《Adaptive Filter Theory Fourth Edition》.
  • Philipos C.Loizou《speech enhancement theory and practice》.
  • 張賢達《矩陣分析與應用》.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章