作者:桂。
時間:2017-04-01 06:39:15
鏈接:http://www.cnblogs.com/xingshansi/p/6654372.html
聲明:歡迎被轉載,不過記得注明出處哦~

【學習筆記07】
前言
西蒙.赫金的《自適應濾波器原理》第四版第四章:最速下降算法。優化求解按照有/無約束分類:如投影梯度下降算法((Gradient projection)便是有約束的優化求解;按照一階二階分類:梯度下降(Gradient descent)、Newton法等;按照偏導存在與否分類:如梯度下降、次梯度下降(Subgradient descent)等.本文主要整理:梯度下降法在維納濾波中的應用.
一、原理思想
對於准則函數:
![]()
需要尋找最優解$w_o$,使它對所有$w$滿足$J(w_o) \le J(w)$。可以利用迭代下降的思路求解:
從初始值$w(0)$出發, 產生一系列權向量$w(1)$,$w(2)$...,使得准則函數每一次迭代都是下降的:$J(w(n+1)) < J(w(n))$,其中$w(n)$是權向量的過去值,$w(n+1)$是更新值。
定義梯度:
$g = \nabla J\left( w \right) = \frac{{\partial J\left( w \right)}}{{\partial w}}$
負梯度方向為減小方向:
$w(n + 1) = w(n) - \mu \cdot g(n)$
為了說明准則函數隨着迭代下降,從一階泰勒展開可以觀察:

二、應用實例
仍然借助維納濾波一文的例子:
已知:
含有噪聲的正弦波:$y(n) = x(n) + w(n) = \sin (2\pi fn + \theta ) + w(n)$.
其中$f = 0.2$為歸一化頻率[-1/2, 1/2],$\theta$為正弦波相位,服從[0,2$\pi$]的均勻分布,$w(n)$為具有零均值和方差$\sigma^2 = 2$的高斯白噪聲。
求:
時域維納濾波器。假設濾波器為時域濾波器時$M=2$.
首先求解相關矩陣:
$x(n)$為廣義平穩隨機過程,可以計算其自相關函數:
${r_{xx}}\left( m \right) = \cos (2\pi fn)$
得到關於均方誤差的准則函數:

代入數值:

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

得到梯度$\nabla J = - 2{\bf{r}}_{yd}^{ - 1} + 2\;{{\bf{R}}_{yy}}{\bf{h}}$.

對應搜索代碼:
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
即可得出最優解$h = [0.197 , 0.0495]'$。
三、穩定性
上文中$\mu$取0.001,$\mu$如何取值才能保證梯度正常下降呢?事實上,如果$\mu$過大結果會往外發散而不是收斂於最優點。
借助維納濾波一文可以知道,
${w_o} = \;{\bf{R}}_{_{yy}}^{ - 1}{\bf{r}}_{yd}^ - $
從而有:
記$c(n) = w_o - w(n)$:
$c(n + 1) = c(n)\left( {{\bf{I}} - 2\mu {{\bf{R}}_{yy}}} \right)$
對於正定矩陣,存在正交矩陣:
${{\bf{R}}_{yy}} = {\bf{Q\Lambda }}{{\bf{Q}}^{ - 1}}$
即${\bf{I}} - 2\mu {{\bf{R}}_{yy}}{\rm{ = }}{\bf{Q}}\left( {{\bf{I}} - 2\mu {\bf{\Lambda }}} \right){{\bf{Q}}^{ - 1}}$,為此保證最大特征值小於1即可保證收斂:
![]()
如對應上面$h$的求解,$\frac{1}{{{\lambda _{\max }}}}= 0.3768$,用上面的程序容易驗證$\mu = 0.37$時滿足條件,可以收斂;$\mu = 0.38$則發散,無法得到最優值。
四、理論擴展
如果沿着曲線直接尋優,我們稱為:精確直線搜索。如計算:
:

這是就是$\Delta x$與$x$固定后,該問題就是$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
對於相關矩陣:來自統計均方誤差,但實際應用中通常無法得知概率分布以及相關矩陣,通常是基於遍歷性假設,以便利用時間換取空間。即:
${{\bf{R}}_{yy}} \approx \frac{{{{\bf{y}}^T}{\bf{y}}}}{N}$
與之對應的統計誤差也不再是均方意義上,假設時間換空間的序列長$N$:

簡單來說:當$N$較大時,對應的梯度下降稱之為——批量(Batch)梯度下降,當$N=1$即每次來一個樣本,對應稱之為——隨機梯度下降。
通過上面的小程序可以得出兩點結論:
- 初始值
- 迭代步長
- 特征尺寸(一維無此問題)
二者都對尋優產生影響。事實上對於高維數據,不同特征尺寸不同,對尋優也有影響,通常需要分別對特征進行歸一化。

A-批量梯度下降
仍然以線性回歸為例:
![]()
這里$x_0 = 1$,給出准則函數,便於求導通常添加$1/2$:
![]()
求偏導:

從而:
![]()
可以寫為:
![]()
迭代至滿足收斂條件即可求解。
B-隨機梯度下降
對應批量梯度下降,當$m = 1$即一次只接受/處理一個樣本,對應為隨機梯度下降。
事實上,當引入噪聲時,時間換空間只能是一種近似,即批量/隨機梯度下降的最優解,通常不是維納濾波的最優解。基於隨機梯度的最小均方誤差(Least mean square,LMS)通常稱為LMS算法,以示與梯度下降的區別。
C-Newton-Raphson法
梯度下降法基於一階近似,如果二階逼近收斂是否會更快一些?即尋找梯度的梯度——走一步想兩步。

再次給出梯度下降的一階Taylor近似:
$f\left( {{\bf{x}} + \Delta {\bf{x}}} \right) \approx f\left( {\bf{x}} \right) + {\left( {\nabla f\left( {\bf{x}} \right)} \right)^T} \cdot \Delta {\bf{x}}$
給出二階Taylor近似:
![]()
${\nabla ^2}f\left( {\bf{x}} \right)$對應的矩陣稱為Hessian矩陣,該方法成為牛頓法(Newton),也稱Newton-Raphson法。
對於點$x_k$,選擇下降方向:

參考:
- Simon Haykin 《Adaptive Filter Theory Fourth Edition》.
- Philipos C.Loizou《speech enhancement theory and practice》.
- 張賢達《矩陣分析與應用》.
