隨機信號的參數建模法
爲隨機信號建立參數模型是研究隨機信號的一種基本方法。在對語音信號進行編碼時,往往通過分析不同種類語音信號的特點及產生,用數學模型表示信源,而編碼器根據輸入信號計算模型參數,然後對模型參數進行編碼,也就是說,只需要對編碼後的參數進行傳送(而不需要傳送語音信號本身),解碼器通過收到的模型參數,直接利用相同的數學模型即可重建出語音信號,大大減小了傳送的數據量。本文將主要介紹AR模型的參數估計以及L-D算法。
一. 概述
在隨機信號的參數模型中,我們認爲隨機信號x(n)是由白噪聲w(n)激勵某一確定系統的響應,只要w(n)的參數確定了,研究隨機信號就可以轉化成研究產生隨機信號的系統。
圖1-1 隨機信號的參數模型
對於平穩隨機信號,主要有三種常用的線性模型:AR(Auto-Regression,自迴歸)模型、MA(Moving Average,滑動平均)模型和ARMA(Auto-Regression-Moving Average,自迴歸滑動平均)模型。
1. MA模型
隨機信號x(n)由當前的激勵w(n)和若干次過去的激勵w(n−k)線性組合產生:
x(n)=k=0∑qbkw(n−k)(1-1)
兩邊進行z變換,可得系統函數:
H(z)=W(z)X(z)=k=0∑qbkz−k(1-2)
其中,q表示系統階數。
可以看出,MA模型的系統函數只有零點,沒有極點,所以該系統一定是穩定的系統,也稱爲全零點模型,表示爲MA(q)。
2. AR模型
隨機信號x(n)由本身的若干次過去值x(n−k)和當前的激勵值w(n)線性組合產生:
x(n)=w(n)−k=1∑pakx(n−k)(1-3)
該模型的系統函數爲:
H(z)=1+∑k=1pakz−k1(1-4)
其中,p爲系統階數。
該模型系統函數中只有極點,無零點,也稱爲全極點模型。系統由於極點的原因,要考慮到系統的穩定性,因而要注意極點的分佈位置。可表示爲AR(p)。
3. ARMA模型
ARMA模型是AR模型和MA模型的結合:
x(n)=k=0∑qbkw(n−k)−k=1∑pakx(n−k)(1-5)
其系統函數爲:
H(z)=1+∑k=1pakz−k∑k=0qbkz−k(1-6)
可以看出,它既有零點又有極點,所以也稱極零點模型,要考慮極零點的分佈位置,保證系統的穩定。可表示爲ARMR(p,q)。
二. AR模型的參數估計
以上三種模型實際上都可以進行相互轉換,實際中選用哪一種模型就要考慮到節約和計算量,剩下的任務就是用適當的算法估計模型參數(ak,bk,p,q),以便用模型對隨機信號進行預測。
實際應用中,使用較多的是AR模型,下面我們對AR模型進行參數估計,其它兩種模型可以進行類比計算。
1. AR模型參數與自相關函數的關係
推導過程
對式(1−3)兩邊同時乘以x(n−m)並求均值,得:
E[x(n)x(n−m)]=E[w(n)x(n−m)−k=1∑pakx(n−k)x(n−m)](2-1)
根據自相關函數的偶對稱特性,可進一步化簡爲:
Rxx(m)=Rxw(m)−k=1∑pakRxx(m−k)(2-2)
根據
x(n)=w(n)∗h(n)=k=0∑∞h(k)w(n−k)(2-3)
有:
Rxw(m)=E[x(n)w(n+m)]=E[k=0∑∞h(k)w(n−k)w(n+m)]=k=0∑∞h(k)E[w(n−k)w(n+m)]=k=0∑∞h(k)Rww(m+k)=k=0∑∞h(k)σw2δ(m+k)=σw2h(−m)(2-4)
由於系統的單位脈衝響應h(n)因果,故
Rxw(m)={σw2h(−m)0,m≤0,m>0(2-5)
帶入式(2−2)得:
Rxx(m)=⎩⎪⎨⎪⎧Rxx(−m)−∑k=1pakRxx(m−k)+h(0)σw2−∑k=1pakRxx(m−k),m<0,m=0,m>0(2-6)
將式(1−4)變換到時域得:h(n)+∑k=1pakh(n−k)=δ(n),故當n=0時有h(0)=δ(0)=1。
顯然,結合式(2−2)和式(2−5)可得出AR模型輸出信號的自相關函數的遞推性質:
Rxx(m)=−k=1∑pakRxx(m−k),m>0(2-7)
這就是著名的Yule-Walker(Y-W)方程,並將Y-W方程進行變換:
Rxx(m)+k=1∑pakRxx(m−k)=0,m>0(2-8)
由(2−6)可求得輸入的白噪聲方差爲
Rxx(0)+k=1∑pakRxx(−k)=σw2,m=0(2-9)
再將式(2−8)和(2−9)結合,把該式的下標簡化並寫成矩陣的形式,可寫成單一的正規矩陣方程:
⎣⎢⎢⎢⎡R(0)R(1)⋮R(p)R(−1)R(0)⋮R(p−1)⋯⋯⋱⋯R(−p)R(−p+1)⋮R(0)⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡1a1⋮ap⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡σw20⋮0⎦⎥⎥⎥⎤(2-10)
其中方程組的係數組成自相關矩陣[R]p+1,由於自相關函數是偶對稱函數,即Rxx(m)=Rxx(−m),因而自相關矩陣爲對稱矩陣,與主對角線平行的斜對角線上的元素都是相同的,故存在高效算法,其中廣泛應用的有Levinson-Durbin(L-D)算法。Y-W方程表明,只要已知輸出平穩隨機信號的自相關函數,就能求出AR模型中的參數{ak},並且需要的觀測數據較少。
實例
【例1】已知自迴歸信號模型AR(3)爲:
x(n)=2414x(n−1)+249x(n−2)−241x(n−3)+w(n)(2-11)
其中w(n)是方差σw2=1的平穩白噪聲,求:
- 自相關序列Rxx(m), m=0,1,2,3,4,5;
- 用上一問求出的自相關序列來估計AR(3)的參數{a^k},以及輸入白噪聲的方差σ^w2;
- 利用給出的AR模型,用計算機仿真給出32點觀測值x(n)=
[0.4282 1.1454 1.5597 1.8994 1.6854 2.3075 2.4679 1.9790 1.6063 1.2804 -0.2083 0.0577 0.0206 0.3572 1.6572 0.7488 1.6666 1.9830 2.6914 1.2521 1.8691 1.6855 0.6242 0.1763 1.3490 0.6955 1.2941 1.0475 0.4319 0.0312 0.5802 -0.6177]
並用觀測值的自相關序列直接來估計AR(3)的參數{a^k}以及輸入白噪聲的方差σ^w2。
【解】
-
由式(2−11)可知模型參數{ak},即a1=−2414, a2=−249, a3=241,我們只需要代入(2−10)並利用其偶對稱特性:
⎣⎢⎢⎡R(0)R(1)R(2)R(3)R(1)R(0)R(1)R(2)R(2)R(1)R(0)R(1)R(3)R(2)R(1)R(0)⎦⎥⎥⎤⎣⎢⎢⎡1a1a2a3⎦⎥⎥⎤=⎣⎢⎢⎡1000⎦⎥⎥⎤(2-12)
並重新整理,即可求出Rxx(m):
⎣⎢⎢⎡1a1a2a3a11+a2a1+a3a2a2a31a1a3001⎦⎥⎥⎤⎣⎢⎢⎡R(0)R(1)R(2)R(3)⎦⎥⎥⎤=⎣⎢⎢⎡1000⎦⎥⎥⎤(2-13)
對應的MATLAB程序爲:
a = [-14 / 24, -9 / 24, 1 / 24];
A = [1, a(1), a(2), a(3);...
a(1), 1 + a(2), a(3), 0;...
a(2), a(1)+a(3), 1, 0;...
a(3), a(2), a(1), 1];
b = [1; 0; 0; 0];
Rxx = A \ b
運行結果:
Rxx =
4.9377
4.3287
4.1964
3.8654
對於R(4),R(5),⋯,可以根據式(2−7):Rxx(m)=−∑k=1pakRxx(m−k),m>0求出:
for m = 5 : 6
Rxx(m) = 0;
for k = 1 : 3
Rxx(m) = Rxx(m) - a(k) * Rxx(m - k);
end
end
Rxx
運行結果:
Rxx =
4.9377
4.3287
4.1964
3.8654
3.6481
3.4027
-
現在已知R(0),R(1),R(2),R(3),則只需要代入到(2−12),即可反求出a^1,a^2,a^3。相應代碼如下:
R = [Rxx(1) Rxx(2) Rxx(3) Rxx(4);...
Rxx(2) Rxx(1) Rxx(2) Rxx(3);...
Rxx(3) Rxx(2) Rxx(1) Rxx(2);...
Rxx(4) Rxx(3) Rxx(2) Rxx(1)];
R \ b
結果爲:
ans =
1.0000
-0.5833
-0.3750
0.0417
其中後三個元素爲參數{a^k}。可以看出對AR模型參數是無失真的估計,因爲已知AR模型,我們可以得到完全的輸出觀測值,因而求得的自相關函數沒有失真,當然也就可以不失真地估計。
-
根據
Rxx(m)=n1i=1∑nxixi+m(2-14)
可求出自相關序列Rxx(m), m=0,1,⋯,31。
代碼如下:
clear; clc;
xn = [0.4282 1.1454 1.5597 1.8994 1.6854 2.3075 2.4679 1.9790...
1.6063 1.2804 -0.2083 0.0577 0.0206 0.3572 1.6572 0.7488...
1.6666 1.9830 2.6914 1.2521 1.8691 1.6855 0.6242 0.1763...
1.3490 0.6955 1.2941 1.0475 0.4319 0.0312 0.5802 -0.6177];
Rxx_obs = xcorr(xn) ./ length(xn);
Rxx_obs = Rxx_obs(length(xn) : end)
結果如下:
Rxx_obs =
列 1 至 8
1.9271 1.6618 1.5381 1.3545 1.1349 0.9060 0.8673 0.7520
列 9 至 16
0.7637 0.8058 0.8497 0.8761 0.9608 0.8859 0.7868 0.7445
列 17 至 24
0.6830 0.5808 0.5622 0.5134 0.4301 0.3998 0.3050 0.2550
列 25 至 32
0.1997 0.1282 0.0637 0.0329 -0.0015 -0.0089 -0.0143 -0.0083
將Rxx(0),Rxx(1),Rxx(2),Rxx(3)代入(2−12)可求得估計值:a^1=−0.6984, a^2=−0.2748, a^3=0.0915, a^4=0.4678,與真實AR模型參數誤差爲:e1=0.1151, e2=0.1002, e3=0.0498,原因在於我們只有一部分的觀測數據,使得自相關序列值有偏差。輸入信號的方差誤差比較大:eσ=0.5322,造成的原因比較多,如計算機仿真的白噪聲由於只有32點長,其方差不可能剛好等於1。給出一段觀測值求AR模型參數這樣直接解方程組,當階數越高時直接解方程組計算就越複雜,因而要用特殊的算法減小計算量並提高精度。
2. Yule-Walker方程的解法——Levinson-Durbin算法
準備工作
在上面的例子中,爲了得到更精確的估計值並減小計算量,就要建立更高階的AR模型。因此把 AR 模型和預測系統聯繫起來,換個方法來估計 AR 參數。
由式(1−3):x(n)=w(n)−∑k=1pakx(n−k)知,模型的當前輸出值與它過去的輸出值有關。預測是推斷一個給定序列的未來值,即利用信號前後的相關性來估計未來的信號值。
若序列的模型已知,而用過去觀測的數據來推求現在和將來的數據的模型稱爲前向預測器,表示爲:
x^(n)=−k=1∑mam(k)x(n−k)(2-15)
其中{a(k)},k=1,2,⋯,m表示m階預測器的預測係數,負號是爲了與技術文獻保持一致。顯然預測出來的結果與真實的結果存在預測誤差(或前向預測誤差),設誤差爲e(n):
e(n)=x(n)−x^(n)=x(n)+k=1∑mam(k)x(n−k)(2-16)
把e(n)看成是系統的輸出,x(n)看成是系統的輸入,得到系統函數
X(z)E(z)=1+k=1∑mam(k)z−k(2-17)
設m=p,且預測係數與AR模型參數相同,比較(1−4):H(z)=1+∑k=1pakz−k1與上式,可以看出系統函數互爲倒數。結合圖2-1,則有w(n)=e(n),即前向預測誤差系統中的輸入爲x(n),輸出爲預測誤差e(n)等於白噪聲。也就是說前向預測誤差系統對觀測信號起了白化的作用。由於AR模型和前向預測誤差系統函數互爲倒數,所以求AR模型參數就可以通過求預測誤差系統的預測係數來實現。
圖2-1 左:前向預測誤差系統;右:AR模型
對(2−16)求預測誤差均方值:
E[e2(n)]=E⎣⎡(x(n)+k=1∑mam(k)x(n−k))2⎦⎤=Rxx(0)+2[k=1∑mam(k)Rxx(k)]+k=1∑ml=1∑mam(l)am(k)Rxx(l−k)(2-18)
要使均方誤差最小,將上式右邊對預測係數求偏導並且等於零,得到m個等式:
Rxx(l)=−k=1∑mam(k)Rxx(l−k)l=1,2,⋯m(2-19)
並代入(2−18),可得最小均方誤差:
Em[e2(n)]=Rxx(0)+k=1∑mam(k)Rxx(k)(2-20)
由於
Ep[e2(n)]=Rxx(0)+k=1∑pakRxx(k)(2-21)
則有
ak=am(k),m=p(2-22)
也就是p階預測器的預測係數等於p階AR模型的參數,由於e(n)=w(n),所以最小均方預測誤差等於白噪聲方差,即Ep[e2(n)]=σw2。
使用L-D算法估計AR模型參數
有了上面的知識後,我們再看如何使用L-D模型估計AR模型參數,即如何估計參數{ak,p,σw2}。L-D算法的基本思想基於Y-W方程式或(2−19),(2−20),(2−21)和自相關序列具有遞推的性質。L-D遞推算法是模型階數逐漸加大的一種算法,先計算階次m=1時的預測係數{am(k)}=a1(1)和σw12,再計算m=2時的預測係數{am(k)}=a2(1), a2(2)和σw22,一直計算到m=p階時的ap(1),ap(2),⋯,ap(p)及σwp2。這種遞推算法的特點是,每一階次參數的計算是從低一階次的模型參數推算出來的,既可減少工作量又便於尋找最佳的階數值,滿足精度時就停止遞推。
經過一系列推到,最終可以得到:
⎩⎪⎪⎪⎨⎪⎪⎪⎧am(k)=am−1(k)+am(m)am−1(m−k)am(m)=−Em−1R(m)+∑k=1m−1am−1(k)R(m−k)Em=σwm2=[1−am2(m)]Em−1=R(0)∏k=1m[1−ak2(k)](2-23)
其中,am(m)稱爲反射係數,從上式知道整個迭代過程需要已知自相關函數,給定初始值E0=R(0), a0(0)=1以及AR模型的階數p,就可以按照圖2-2所示的流程圖進行估計。
圖2-2 Levinson-Durbin算法流程圖
L-D算法的特點
L-D算法的優點就是計算速度快,求得的AR模型必定穩定,且均方預測誤差隨着階次的增加而減小。
由於使用L-D算法在求自相關序列時,我們假設除了觀測值之外的數據都爲零,因此必然會引入較大誤差。
實例
【例2】已知自迴歸信號模型AR(3)爲:
x(n)=2414x(n−1)+249x(n−2)−241x(n−3)+w(n)(2-11)
其中w(n)是方差σw2=1的平穩白噪聲。利用給出的AR模型,用計算機仿真給出32點觀測值x(n)=
[0.4282 1.1454 1.5597 1.8994 1.6854 2.3075 2.4679 1.9790 1.6063 1.2804 -0.2083 0.0577 0.0206 0.3572 1.6572 0.7488 1.6666 1.9830 2.6914 1.2521 1.8691 1.6855 0.6242 0.1763 1.3490 0.6955 1.2941 1.0475 0.4319 0.0312 0.5802 -0.6177]
,用L-D算法來估計AR(3)的參數{a^k}以及輸入白噪聲的方差σ^w2。
【解】
-
步驟1:求Rxx(m), m=0,1,⋯,31,這部分計算的方法與例1中第3問完全相同,這裏不再贅述。
-
步驟2:初始化:E0=Rxx(0)=1.9271,a0=1
-
步驟3:根據(2−23)有:
m=1:⎩⎨⎧a1(1)=−E0R(1)=−1.92711.6618=−0.8623E1=R(0)[1−a12(1)]=0.4942m=2:⎩⎪⎪⎨⎪⎪⎧a2(2)=−E1R(2)+a1(1)R(1)=−0.2127a2(1)=a1(1)[1+a2(2)]=−0.6789E2=E1[1−a22(2)]=0.4718m=3:⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧a3(3)=−E2R(3)+a2(1)R(2)+a2(2)R(1)=0.0914a3(1)=a2(1)+a3(3)a2(2)=−0.6983a3(2)=a2(2)+a3(3)a2(1)=−0.2748E3=E2[1−a32(3)]=0.4679
因而當p=3時,估計得到的AR模型參數爲:a^1=−0.6983, a^2=−0.2748, a^3=0.0914,估計的輸入信號方差爲σw2=E3=0.4679,這與例1的第3問結果一致。
在MATLAB中,有專門的函數[a E] = aryule(x, p)
來實現L-D算法的AR模型參數估計,其中x
表示觀測信號,p
表示階數,a
表示估計的模型參數,E
表示噪聲信號的方差估計。本例的代碼爲:
[a E] = aryule(xn, 3)
運行結果爲:
a =
1.0000 -0.6984 -0.2748 0.0915
E =
0.4678
我們也可以使用更高階的AR模型來進行估計,如p=12:
a =
列 1 至 8
1.0000 -0.6703 -0.3254 -0.0793 0.1407 0.3676 -0.2451 0.0483
列 9 至 13
-0.0912 -0.0522 0.0515 0.0186 -0.0955
E =
0.3783
可見階數越高,均方誤差就越小(0.3783<0.4678)。
3. AR模型參數估計的各種算法的比較和階數的選擇
Burg算法
爲了克服L-D算法導致的誤差,1968年Burg提出了Burg算法,其基本思想是對觀測的數據進行前向和後向預測,然後讓兩者的均方誤差之和爲最小作爲估計的準則估計處反射係數,進而通過L-D算法的遞推公式求出AR模型參數。Burg算法的優點是,求得的AR模型是穩定的,較高的計算效率,但遞推還是用的L-D算法,因此仍然存在明顯的缺點。
MATLAB中也有專門的函數來實現Burg算法的AR模型參數估計:[a E] = arburg(x, p)
,例如上面例2在p=3時和p=12時的計算結果分別爲
a =
1.0000 -0.6982 -0.2626 0.0739
E =
0.4567
和
a =
列 1 至 8
1.0000 -0.6495 -0.3066 -0.0934 0.0987 0.4076 -0.1786 -0.0126
列 9 至 13
-0.0805 -0.0899 0.0382 0.1628 -0.2501
E =
0.3237
結果與L-D算法略有不同,Burg算法略微更精確些。
Marple算法
1980年Marple在前人的基礎上提出一種高效算法,Marple算法或者稱不受約束的最小二乘法(LS),該算法的思想是,讓每一個預測係數的確定直接與前向、後向預測的總的平方誤差最小,這樣預測係數就不能由低一階的係數遞推確定了,所以不能用L-D算法求解,實踐表明該算法比L-D、Burg算法優越。由於該算法是從整體上選擇所有的模型參數達到總的均方誤差最小,與自適應算法類似,不足是該算法不能保證AR模型的穩定性。
AR模型階數的選擇
AR模型的階數選擇對模型效果有有較大的影響,因而如何選擇階數很重要。因此國內外學者在這方面都做了許多研究工作,其中基於均方誤差最小的最終預測誤差(FPE)準則是確定AR模型階次比較有效的準則。
最終預測誤差準則定義如下:給定觀測長度爲N,從某個過程的一次觀測數據中估計到了預測係數,然後用該預測係數構成的系統處理另一次觀察數據,則有預測均方誤差,該誤差在某個階數p時爲最小,其表達式爲:
FPE(p)=σ^wp2(n−p−1N+p+1)(7-24)
上式中估計的方差隨着階數的增加而減小,而括號內的值隨着p的增加而增加,因而一定存在一個最佳的p,使得FPE最小。
我們還可以使用試驗的方法來進行階數的選擇。如果某一個p值滿足預先規定的某些要求,則認爲該p值是最優的。在短數據情況下,根據經驗,AR模型的階次選在3N∼2N的範圍內較好。