1. 前言
假设已知(可能是复数的)数据序列\(x(n)\)是由平稳随机过程中的样本组成,其自相关序列为
\[\begin{align}
\gamma _{xx} (m) = E\left[x(n)x^*(n-m) \right]
\end{align}
\]
通过长度为\(M\),系数为\(h(n)\)的FIR滤波器,\(0 \le n \le M-1\),期望信号的估计为
\[\begin{align}
\hat{d} (n)= \sum _{k=0}^{M-1}h(k)x(n-k)
\end{align}
\]
估计误差为
\[\begin{align}
e(n) &= d(n) - \hat{d(n)}\nonumber \newline
& = d(n) - \sum _{k=0}^{M-1}h(k)x(n-k)
\end{align}
\]
均方误差为
\[\begin{align}
\xi _M &= E \left[| e(n)\vert ^2 \right] \nonumber \\
&= E \left[|d(n) - \sum _{k=0}^{M-1}h(k)x(n-k) \vert^2 \right] \nonumber \\
&= E\left\{|d(n)|^2 -2Re\left[\sum_{k=0}^{M-1}h^*(l)d(n)x^*(n-l) \right] +\sum_{k=0}^{M-1}\sum_{l=0}^{M-1}h^*(l)h(k)x^*(n-l)x(n-k) \right\} \nonumber\\
&= \sigma_d^2 -2Re\left[\sum_{l=0}^{M-1}h^*(l)\gamma_{dx}(l) \right] + \sum_{l=0}^{M-1}\sum_{k=0}^{M-1}h^*(l)h(k)\gamma_{xx}(l-k)
\end{align}
\]
其中\(\sigma_d^2 = E\left\{|d(n)|^2 \right\}\)
由上面的式子,可以看出MSE是滤波器系数的二次函数,因此,关于系数最小化\(\xi_M\)将得出\(M\)元线性方程组,
\[\begin{align}
\sum_{k=0}^{M-1}h(k)\gamma _{xx}(l-k) = \gamma_{dx}(l), ~~ l = 0,1,\cdots,M-1
\end{align}
\]
该方程组表示成矩阵形式,
\[\begin{align}
\pmb{\varGamma_M}\pmb{h}_M = \pmb{\gamma}_d
\end{align}
\]
其中,\(\pmb{h}_M\)表示矢量系数(向量),\(\pmb{\varGamma_M}\)为一个\(M \times M\)的Hermitian自相关矩阵(复数共轭对称矩阵)
\(\pmb{\gamma}_d\)是元素为\(\gamma_{dx}(l)\)的\(M\times 1\) 的互相关矩阵。
最优滤波器的系数解为
\[\begin{align}
\pmb{h}_{opt} = \pmb{\varGamma}^{-1}_M \pmb{\gamma}_d
\end{align}
\]
可以通过通过梯度方法递归地求解\(\pmb{h}_{opt}\),即为本节介绍的LMS算法。
2. LMS算法
接下来讲述设计用于寻找多变量函数最小值的递归方法,在这种方法中,性能指标是MSE,即代价函数,因此,
该函数具有唯一的最小值,也就是我们要通过迭代搜索求解的值。
先假定自相关矩阵\(\pmb{\varGamma}_M\)和互相关向量\(\pmb{\gamma}_d\)是已知的,因此,\(\xi_M\)是系数为\(h(n)\)的已知函数,\(0 \le n \le M-1\),则滤波器系数更新迭代方程:
\[\begin{align}
\pmb{h}_M(n+1) = \pmb{h}_M(n) + \frac{1}{2}\Delta(n)\pmb{S}(n)
\end{align}
\]
其中,\(\pmb{h}_M(n)\)为第n次迭代的滤波器系数向量,\(\Delta(n)\)是第n次迭代的步长,\(\pmb{S}(n)\)是第n次迭代的方向向量,起始向量\(\pmb{h}_M(0)\)是任意选择的。
最简单的寻找\(\xi_M\)最小值的递归方法是基于最陡下降搜索,在该方法中,方向向量\(\pmb{S}(n)=-\pmb{g}(n)\),其中\(\pmb{g}(n)\)是第n次迭代的梯度向量,定义为:
\[\begin{align}
\pmb{g}(n) &= \frac{d \xi_M(n)}{d \pmb{h}_M(n)} \nonumber\\
&= 2\left[\pmb{\Gamma}_M \pmb{h}_M(n)- \pmb{\gamma}_d \right] , ~~ n=0,1,2,\cdots
\end{align}
\]
因此,每次迭代时都要计算梯度向量,并在梯度反方向上修改\(\pmb{h}_M(n)\)的值,这样基于最陡下降方法的递归算法就是
\[\begin{align}
\pmb{h}_M(n+1) = \pmb{h}_M(n) - \frac{1}{2}\Delta(n)\pmb{g}(n)
\end{align}
\]
加入步长序列绝对可和,即当\(n\to\infty\)时,\(\Delta(n)\to 0\),\(\pmb{h}_M\to\pmb{h}_{opt}\),\(\pmb{g}(n)\to \mathbf{0}\)
3. 使用条件
\(\Delta\)步长应满足条件:
\[\begin{align}
|1-\Delta\lambda_k| \le 1 \nonumber \\
0 \le \Delta \le \frac{2}{\lambda_{max}}
\end{align}
\]
其中\(\lambda_{max}\)是自相关矩阵\(\pmb{\varGamma}_M\)的最大特征值。因为\(\pmb{\varGamma}_M\)是自相关矩阵,
所以它的特征值是非负的,由于计算特征值比较复杂,有时为了避免计算特征值,可采用计算矩阵迹的方法,因此有:
\[\begin{align}
\lambda_{max} < t_r[\pmb{\varGamma }_M]
\end{align}
\]
这里\(t_r[\pmb{\varGamma }_M]\)是的迹,可以用输入信号的取样进行估计,即:
\[\begin{align}
t_r[\pmb{\varGamma }_M] = \sum_{k=0}^{M-1}E[x_i^2(n)]
\end{align}
\]
因此有
\[\begin{align}
0 \le \mu \le t_r^{-1}[\pmb{\varGamma}_M]
\end{align}
\]