NLMS 自适应滤波与噪声消除
NLMS 自适应滤波与噪声消除

NLMS 自适应滤波与噪声消除

1. NLMS 最小化的目标

NLMS/LMS 的理论目标是最小化均方误差:

\[J(\mathbf w)=E[e^2(n)]\]

即:

\[J(\mathbf w)=E[(d(n)-\mathbf x^T(n)\mathbf w)^2]\]

展开:

\[\begin{aligned}
J(\mathbf w)
&=
E[d^2(n)]
-2E[d(n)\mathbf x^T(n)]\mathbf w
+\mathbf w^T E[\mathbf x(n)\mathbf x^T(n)]\mathbf w
\end{aligned}\]

定义:

\[R=E[\mathbf x(n)\mathbf x^T(n)]\]
\[\mathbf p=E[d(n)\mathbf x(n)]\]

则:

\[J(\mathbf w)=E[d^2(n)]-2\mathbf p^T\mathbf w+\mathbf w^TR\mathbf w\]

\(\mathbf w\) 求梯度:

\[\nabla_{\mathbf w}J
=
-2\mathbf p+2R\mathbf w\]

令梯度为零:

\[2R\mathbf w-2\mathbf p=0\]

所以最优解满足:

\[R\mathbf w_{\text{opt}}=\mathbf p\]

也就是 Wiener 解:

\[\mathbf w_{\text{opt}}=R^{-1}\mathbf p\]

2. 关键:\(\mathbf p\) 里面到底有什么?

因为:

\[d(n)=s(n)+v(n)\]

所以:

\[\mathbf p=E[d(n)\mathbf x(n)]\]

代入:

\[\mathbf p=E[(s(n)+v(n))\mathbf x(n)]\]

展开:

\[\mathbf p=E[s(n)\mathbf x(n)]+E[v(n)\mathbf x(n)]\]

现在引入噪声消除的核心假设:

\[E[s(n)\mathbf x(n)]=0\]

也就是:

Danger

有用信号 与参考噪声 不相关。

于是:

\[\mathbf p=E[v(n)\mathbf x(n)]\]

所以最优权值变成:

\[\mathbf w_{\text{opt}}
=
R^{-1}E[v(n)\mathbf x(n)]\]

这说明:

权值 \(\mathbf w\) 学到的是“如何用参考输入 \(\mathbf x(n)\) 预测主通道噪声 \(v(n)\)”。


3. 当有用信号与参考噪声相关时会怎样?

如果:

\[E[s(n)\mathbf x(n)]\ne 0\]

那么 NLMS 的最优权值不再只学习噪声路径,而会变成:

\[\mathbf w_{\text{opt}}=\mathbf w_v+\mathbf w_s\]

其中:

\[\mathbf w_v=R^{-1}E[v(n)\mathbf x(n)]\]
\[\mathbf w_s=R^{-1}E[s(n)\mathbf x(n)]\]

于是滤波器输出:

\[y(n)=\mathbf x^T(n)\mathbf w_{\text{opt}}\]

会变成:

\[y(n)
=
\underbrace{\mathbf x^T(n)\mathbf w_v}_{\text{噪声估计}}
+
\underbrace{\mathbf x^T(n)\mathbf w_s}_{\text{被误拟合的有用信号}}\]

所以误差输出:

\[e(n)=d(n)-y(n)\]

变成:

\[e(n)=s(n)+v(n)-\hat v(n)-\hat s_x(n)\]

如果噪声估计很好:

\[\hat v(n)\approx v(n)\]

则:

\[e(n)\approx s(n)-\hat s_x(n)\]

也就是:

NLMS 输出的不再是完整原信号,而是“原信号减去其中能被参考输入预测的那部分”。


4. 当有用信号与参考噪声相关时的补救措施1:限制滤波器阶数 \(L\)

阶数越高,\(\mathbf x(n)\) 张成的空间越大。

也就是说,滤波器越有能力拟合复杂成分。

如果 \(L\) 太大,NLMS 不只拟合噪声路径,也更容易拟合有用信号中的相关部分。

工程上:

  • \(L\) 只需要覆盖噪声路径延迟和相位差;
  • 不要无限加长。

5. 当有用信号与参考噪声相关时的补救措施2:使用泄漏 NLMS

更新:

\[\mathbf w(n+1)
=
(1-\mu\lambda)\mathbf w(n)
+
\mu\frac{e(n)\mathbf x(n)}{\mathbf x^T(n)\mathbf x(n)+\epsilon}\]

其中:

\[\lambda>0\]

作用是抑制权值过度增长,减少对弱相关有用信号的追踪。


6. 小结

NLMS 的核心是让滤波器输出 \(y(n)\) 尽量逼近主通道中的噪声分量,使误差输出 \(e(n)\) 尽量保留有用信号。

但这个结论依赖一个关键条件:有用信号 \(s(n)\) 与参考输入 \(\mathbf x(n)\) 不相关。

如果两者相关,NLMS 会把有用信号中能被参考输入预测的部分也一起抵消,因此需要通过限制滤波器阶数、使用泄漏项等方式降低误伤。

发表回复