遞歸最小二乘(RLS)算法詳解

本文首發在我的個人博客:宅到沒朋友,歡迎大家來玩!

1.最小二乘算法簡介

最小二乘算法基於確定性思想,該算法討論怎樣根據有限個觀測數據來尋找濾波器的最優解,即求如下圖這樣具有M個抽頭的橫向濾波器的最優權向量。
在這裏插入圖片描述
最小二乘算法的目的就是通過最小化誤差向量e\vec{e}的模的平方和,即最小化J=e2J = \| \vec{e} \| ^{2},來求解得到最優權向量:

w=[w0w1wM1]\vec{w}=[w_{0} \quad w_{1} \cdots w_{M-1}]

由於:

e=[e(M)e(M+1)e(N)]H=bb^=bAw\vec{e}=[e(M) \quad e(M+1) \cdots e(N)]^{H}=\vec{b}-\vec{\hat{b}}=\vec{b}-A \vec{w}

其中:

  • 濾波器階數:MM
  • 樣本點數:NN
  • 誤差向量:e=[e(M)e(M+1)e(N)]\vec{e}=[e(M) \quad e(M+1) \cdots e(N)]
  • 期望向量:b=[d(M)d(M+1)d(N)]\vec{b}=[d(M) \quad d(M+1) \cdots d(N)]
  • 數據矩陣:AH=[u(M)u(M+1)u(N)]=[u(M)u(M+1)u(N)u(M1)u(M)u(N1)u(1)u(2)u(NM+1)]A^{H}=[\vec{u}(M) \quad \vec{u}(M+1) \cdots \vec{u}(N)]= \begin{bmatrix} u(M) & u(M+1) & \cdots & u(N) \\ u(M-1) & u(M) & \cdots & u(N-1) \\ \vdots & \vdots & \ddots & \vdots \\ u(1) & u(2) & \cdots & u(N-M+1) \\ \end{bmatrix}

由此可以得到:

J=e2=eHe=(bAw)H(bAw)J = \| \vec{e} \| ^{2}=\vec{e}^{H} \vec{e}=(\vec{b}-A \vec{w})^{H}(\vec{b}-A \vec{w})

化簡得:
J=bHbbHAwwHAHb+wHAHAwJ = \vec{b}^{H} \vec{b}-\vec{b}^{H} A \vec{w}-\vec{w}^{H} A^{H} \vec{b}+\vec{w}^{H} A^{H} A \vec{w}

要求JJ的最小值,首先要得到JJ關於w\vec{w}的梯度:

J=2AHb+2AHAw\bigtriangledown J=-2A^{H}\vec{b}+2A^{H}A\vec{w}

再令J=0\bigtriangledown J=0得:

AHAw^=AHb(1)A^{H}A \vec{\hat{w}} =A^{H}\vec{b}\quad (1)

上式被稱爲確定性正則方程

M<NM+1M<N-M+1時,若方陣AHAA^{H}A是非奇異(可逆)的,則可以得到確定性正則方程的解:

w^=(AHA)1AHb(2)\vec{\hat{w}}=(A^{H}A)^{-1}A^{H}\vec{b}\quad (2)

上式也被稱爲最小二乘(LS)(LS)解。

估計向量b^=Aw\vec{\hat{b}}=A \vec{w}被稱爲對期望響應向量b\vec{b}的最小二乘估計,簡稱LSLS估計。

2.遞歸最小二乘(RLS)(RLS)算法

在(2)式中,涉及矩陣AHAA^{H}A的求逆運算,運算量較大,遞歸最小二乘(RLS)(RLS)算法就是用迭代算法代替矩陣求逆達到降低運算量的目的。

將數據矩陣AHA^{H}做如下擴展:

AH=[u(1)u(2)u(M)u(N)0u(1)u(M1)u(N1)00u(1)u(NM+1)]A^{H}= \begin{bmatrix} u(1) & u(2) & \cdots & u(M) & \cdots & u(N) \\ 0 & u(1) & \cdots & u(M-1) & \cdots & u(N-1) \\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots\\ 0 & 0 & \cdots & u(1) & \cdots &u(N-M+1) \\ \end{bmatrix}

將期望向量b\vec b做如下擴展:
b=[d(1)d(2)d(M)d(N)]\vec{b}=[d(1) \quad d(2) \cdots d(M) \cdots d(N)]

定義輸入數據數據的時間相關矩陣:
Φ(N)=AHA=i=1Nu(i)uH(i)\Phi(N)=A^{H}A=\sum_{i=1}^{N}\vec{u}(i)\vec{u}^{H}(i)

定義時間互相關向量爲
z(N)=AHb=i=1Nu(i)d(i)\vec{z}(N)=A^{H}\vec{b}=\sum_{i=1}^{N}\vec{u}(i)d^{*}(i)

於是,如式(1)所示的確定性正則方程變成下式:
Φ(N)w^=z(N)(3)\Phi(N)\vec{\hat{w}}=\vec{z}(N)\quad(3)

(3)式就是N時刻的確定性正則方程

將N時刻變爲任意時刻n,並引入遺忘因子λ(0<λ1)\lambda(0<\lambda \leq1),則Φ\Phizz和(3)式變成如下所示:
Φ(n)=i=1nλniu(i)uH(i)+δλnI\Phi(n)=\sum_{i=1}^{n}\lambda^{n-i}\vec{u}(i)\vec{u}^{H}(i)+\delta \lambda ^{n}I

z(n)=i=1nλniu(i)d(i)z(n)=\sum_{i=1}^{n}\lambda^{n-i}\vec{u}(i)d^{*}(i)

Φ(n)w^=z(n)\Phi(n)\vec{\hat{w}}=\vec{z}(n)

注:Φ(n)\Phi(n)中引入δλnI\delta \lambda ^{n}I是爲了使Φ(n)\Phi(n)可逆。

P(n)=Φ1(n)P(n)=\Phi^{-1}(n),接下來需要的事情就是求出w^\vec{\hat{w}}的迭代公式,推導過程較爲繁瑣,在此不再展開,直接給出最後的迭代公式。
w^(n)=w^(n1)+k(n)ξ(n)\vec{\hat{w}}(n)=\vec{\hat{w}}(n-1)+\vec{k}(n) \xi ^{*}(n)
其中:
k(n)=λ1P(n1)u(n)1+λ1uH(n)P(n1)u(n)\vec{k}(n)=\frac{\lambda ^{-1}P(n-1)\vec{u}(n)}{1+\lambda ^{-1}\vec{u}^{H}(n)P(n-1)\vec{u}(n)}
ξ(n)=d(n)w^(n1)u(n)\xi(n)=d(n)-\vec{\hat{w}}(n-1)\vec{u}(n)
P(n)=λ1P(n1)λ1k(n)uH(n)P(n1)P(n)=\lambda ^{-1}P(n-1)-\lambda ^{-1}\vec{k}(n)\vec{u}^{H}(n)P(n-1)
可以看到w^(n)\vec{\hat{w}}(n)迭代式中的變量P(n)k(n))ξ(n)P(n)、\vec{k}(n))、\xi(n)都是可以迭代求解的。

2.1 (RLS)(RLS)算法步驟

1. 初始化:
P(0)=δIδP(0) = \delta I \quad, \delta 是小正數

w^(0)=0\vec{\hat{w}}(0)=\vec{0}

λ1\lambda取接近於1

2. n=1,2,,Nn=1,2,\cdots,N時,做如下迭代運算:
k(n)=λ1P(n1)u(n)1+λ1uH(n)P(n1)u(n)\vec{k}(n)=\frac{\lambda ^{-1}P(n-1)\vec{u}(n)}{1+\lambda ^{-1}\vec{u}^{H}(n)P(n-1)\vec{u}(n)}

ξ(n)=d(n)w^(n1)u(n)\xi(n)=d(n)-\vec{\hat{w}}(n-1)\vec{u}(n)

w^(n)=w^(n1)+k(n)ξ(n)\vec{\hat{w}}(n)=\vec{\hat{w}}(n-1)+\vec{k}(n) \xi ^{*}(n)

P(n)=λ1P(n1)λ1k(n)uH(n)P(n1)P(n)=\lambda ^{-1}P(n-1)-\lambda ^{-1}\vec{k}(n)\vec{u}^{H}(n)P(n-1)

3. 令n=n+1n=n+1,重複步驟2。

2.2 算例

考慮一階ARAR模型u(n)=0.99u(n1)+v(n)u(n)=-0.99u(n-1)+v(n)的線性預測。假設白噪聲v(n)v(n)的方差爲σv2=0.995\sigma_{v}^{2}=0.995,使用抽頭數爲M=2M=2FIRFIR濾波器,用RLSRLS算法實現u(n)u(n)的線性預測,選擇遺忘因子λ=0.98\lambda = 0.98

2.3 MatlabMatlab仿真結果

可以看到RLSRLS算法收斂的速度很快,收斂特性相當好。

在這裏插入圖片描述在這裏插入圖片描述

2.4 MatlabMatlab源碼下載

點此下載源碼!

歡迎搜索並關注微信公衆號“工科南”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章