自适应滤波器之 NLMS 算法
本文对 NLMS 作以介绍,如有表述不当之处欢迎批评指正。欢迎任何形式的转载,但请务必注明出处。
本文对 NLMS 作以介绍,如有表述不当之处欢迎批评指正。欢迎任何形式的转载,但请务必注明出处。
1. 引言
NLMS 即归一化 LMS(Normalized LMS)算法,是 LMS 算法(可参考 自适应滤波器之 LMS 算法)的改进版。在 LMS 算法中,抽头权值的调整量与抽头输入向量成正比。当抽头输入向量比较大的时候,LMS 会遇到梯度噪声放大的问题。为了克服这个问题,可以使用 NLMS 算法,之所以称为 “Normalized”,是因为它使用抽头输入向量的平方欧式范数对抽头权值调整量进行了归一化。
2. 传统的 NLMS 算法
NLMS 算法描述为以下公式:
h ⃗ ( n + 1 ) = h ⃗ ( n ) + μ ( n ) e ( n ) x ⃗ ( n ) (1) \vec{h}(n+1) = \vec{h}(n) + \mu(n) e(n) \vec{x}(n) \tag{1} h(n+1)=h(n)+μ(n)e(n)x(n)(1)
可以看出 NLMS 和 LMS 算法的不同之处在于步长:LMS 算法中的步长为一个给定的常数,NLMS 算法中的步长为一个随时间变化的量,且定义为:
μ ( n ) = α x ⃗ T ( n ) x ⃗ ( n ) = α ∥ x ⃗ ( n ) ∥ 2 (2) \mu(n) = \frac{\alpha}{\vec{x}^T(n)\vec{x}(n)} = \frac{\alpha}{{\Vert \vec{x}(n)\Vert}^{2}} \tag{2} μ(n)=xT(n)x(n)α=∥x(n)∥2α(2)
为了使算法收敛, α \alpha α 应该满足:
0 < α < 2 (3) 0<\alpha<2\tag{3} 0<α<2(3)
实际中,为了避免当 ∥ x ⃗ ( n ) ∥ 2 {\Vert \vec{x}(n)\Vert}^{2} ∥x(n)∥2 过小时产生大的步长 μ ( n ) \mu(n) μ(n),可进一步进行修改:
μ ( n ) = α ∥ x ⃗ ( n ) ∥ 2 + c (4) \mu(n) = \frac{\alpha}{{\Vert \vec{x}(n)\Vert}^{2} + c}\tag{4} μ(n)=∥x(n)∥2+cα(4)
其中 c c c 是一个很小的常数。
3. 推导
上一小节直接给出了 NLMS 算法的公式,可以认为它是 LMS 算法的一个很自然的改进版本。当然,它也可以被单独推导出来,这一小节将对推导过程作以介绍(如果读者不感兴趣,可以跳过本小节)。
NLMS 算法是最小扰动原理(the principle of minimal disturbance)的一种表现形式。该原理可以表述如下:
从一次自适应循环到下一次自适应循环中,自适应滤波器的权重向量应该以最小的方式改变,而且受到更新的滤波器的输出所施加的约束。
NLMS 算法的设计准则可以表述为带约束的优化问题:给定抽头输入向量 x ⃗ ( n ) \vec{x}(n) x(n) 和期望响应 d ( n ) d(n) d(n),确定更新后的权重向量 h ⃗ ( n + 1 ) \vec{h}(n+1) h(n+1),以使下式的平方欧式范数最小:
δ h ⃗ ( n + 1 ) = h ⃗ ( n + 1 ) − h ⃗ ( n ) (5) \delta \vec{h}(n+1) = \vec{h}(n+1) - \vec{h}(n)\tag{5} δh(n+1)=h(n+1)−h(n)(5)
并受制于以下约束条件:
h ⃗ T ( n + 1 ) x ⃗ ( n ) = d ( n ) (6) \vec{h}^{T}(n+1) \vec{x}(n) = d(n) \tag{6} hT(n+1)x(n)=d(n)(6)
可以使用拉格朗日乘子法(the method of Lagrange multipliers)解决该带约束的优化问题。根据这个方法,目前这个问题的代价函数可以描述为:
J ( n ) = ∥ δ h ⃗ ( n + 1 ) ∥ 2 + λ ( d ( n ) − h ⃗ T ( n + 1 ) x ⃗ ( n ) ) (7) J(n) = \Vert \delta \vec{h}(n+1) \Vert^{2} + \lambda (d(n) - \vec{h}^{T}(n+1) \vec{x}(n)) \tag{7} J(n)=∥δh(n+1)∥2+λ(d(n)−hT(n+1)x(n))(7)
其中, λ \lambda λ 为拉格朗日乘子。 ( 7 ) (7) (7) 可改写为:
J ( n ) = ( h ⃗ ( n + 1 ) − h ⃗ ( n ) ) T ( h ⃗ ( n + 1 ) − h ⃗ ( n ) ) + λ ( d ( n ) − h ⃗ T ( n + 1 ) x ⃗ ( n ) ) (8) J(n) = (\vec{h}(n+1) - \vec{h}(n))^{T} (\vec{h}(n+1) - \vec{h}(n)) + \lambda (d(n) - \vec{h}^{T}(n+1) \vec{x}(n)) \tag{8} J(n)=(h(n+1)−h(n))T(h(n+1)−h(n))+λ(d(n)−hT(n+1)x(n))(8)
为了寻找使 J ( n ) J(n) J(n) 最小化的 h ⃗ ( n + 1 ) \vec{h}(n+1) h(n+1),采用以下步骤:
1). 令 J ( n ) J(n) J(n) 对 h ⃗ T ( n + 1 ) \vec{h}^{T}(n+1) hT(n+1) 求导,并令其值为 0 0 0:
∂ J ( n ) ∂ h ⃗ T ( n + 1 ) = 2 ( h ⃗ ( n + 1 ) − h ⃗ ( n ) ) − λ x ⃗ ( n ) = 0 (9) \begin{aligned} \frac{\partial J(n)}{\partial \vec{h}^{T}(n+1)} &= 2(\vec{h}(n+1) - \vec{h}(n)) - \lambda \vec{x}(n) \\ &= 0 \end{aligned} \tag{9} ∂hT(n+1)∂J(n)=2(h(n+1)−h(n))−λx(n)=0(9)
可得:
h ⃗ ( n + 1 ) = h ⃗ ( n ) + 1 2 λ x ⃗ ( n ) (10) \vec{h}(n+1) = \vec{h}(n) + \frac{1}{2} \lambda \vec{x}(n) \tag{10} h(n+1)=h(n)+21λx(n)(10)
2). 将上一步的结果代入 ( 6 ) (6) (6),以求解 λ \lambda λ:
d ( n ) = h ⃗ T ( n + 1 ) x ⃗ ( n ) = ( h ⃗ ( n ) + 1 2 λ x ⃗ ( n ) ) T x ⃗ ( n ) = h ⃗ T ( n ) x ⃗ ( n ) + 1 2 λ x ⃗ T ( n ) x ⃗ ( n ) = h ⃗ T ( n ) x ⃗ ( n ) + 1 2 λ ∥ x ⃗ ( n ) ∥ 2 (11) \begin{aligned} d(n) &= \vec{h}^{T}(n+1) \vec{x}(n) \\ &= (\vec{h}(n) + \frac{1}{2} \lambda \vec{x}(n))^{T} \vec{x}(n) \\ &= \vec{h}^{T}(n) \vec{x}(n) + \frac{1}{2} \lambda \vec{x}^{T}(n) \vec{x}(n) \\ &= \vec{h}^{T}(n) \vec{x}(n) + \frac{1}{2} \lambda \Vert \vec{x}(n) \Vert^{2} \end{aligned} \tag{11} d(n)=hT(n+1)x(n)=(h(n)+21λx(n))Tx(n)=hT(n)x(n)+21λxT(n)x(n)=hT(n)x(n)+21λ∥x(n)∥2(11)
可得:
λ = 2 ( d ( n ) − h ⃗ T ( n ) x ⃗ ( n ) ) ∥ x ⃗ ( n ) ∥ 2 = 2 e ( n ) ∥ x ⃗ ( n ) ∥ 2 (12) \begin{aligned} \lambda &= \frac{2(d(n) - \vec{h}^{T}(n) \vec{x}(n))}{\Vert \vec{x}(n)\Vert^{2}} \\ &= \frac{2e(n)}{\Vert \vec{x}(n)\Vert^{2}} \end{aligned} \tag{12} λ=∥x(n)∥22(d(n)−hT(n)x(n))=∥x(n)∥22e(n)(12)
3). 结合上述两步的结果,以推导出 δ w ⃗ ( n + 1 ) \delta \vec{w}(n+1) δw(n+1) 的最优值。即由 ( 10 ) (10) (10) 和 ( 12 ) (12) (12) 可得:
δ w ⃗ ( n + 1 ) = h ⃗ ( n + 1 ) − h ⃗ ( n ) = 1 ∥ x ⃗ ( n ) ∥ 2 e ( n ) x ⃗ ( n ) (13) \begin{aligned} \delta \vec{w}(n+1) &= \vec{h}(n+1) - \vec{h}(n) \\ &= \frac{1}{\Vert \vec{x}(n)\Vert^{2}} e(n) \vec{x}(n) \end{aligned} \tag{13} δw(n+1)=h(n+1)−h(n)=∥x(n)∥21e(n)x(n)(13)
为了对抽头权向量的增量幅值进行控制,上式可改写为:
δ w ⃗ ( n + 1 ) = h ⃗ ( n + 1 ) − h ⃗ ( n ) = α ∥ x ⃗ ( n ) ∥ 2 e ( n ) x ⃗ ( n ) (14) \begin{aligned} \delta \vec{w}(n+1) &= \vec{h}(n+1) - \vec{h}(n) \\ &= \frac{\alpha}{\Vert \vec{x}(n)\Vert^{2}} e(n) \vec{x}(n) \end{aligned} \tag{14} δw(n+1)=h(n+1)−h(n)=∥x(n)∥2αe(n)x(n)(14)
在克服传统 LMS 算法引入的梯度噪声放大问题时,NLMS 算法自身也会引入一些问题。即当抽头输入向量 x ⃗ ( n ) \vec{x}(n) x(n) 特别小时, ( 14 ) (14) (14) 中的除法运算可能会出现数值计算困难。为了克服该问题,可将 ( 14 ) (14) (14) 可改写为:
h ⃗ ( n + 1 ) = h ⃗ ( n ) + α ∥ x ⃗ ( n ) ∥ 2 + c e ( n ) x ⃗ ( n ) (15) \vec{h}(n+1) = \vec{h}(n) + \frac{\alpha}{\Vert \vec{x}(n)\Vert^{2} + c} e(n) \vec{x}(n) \tag{15} h(n+1)=h(n)+∥x(n)∥2+cαe(n)x(n)(15)
其中 c c c 是一个很小的常数。
4. 功率归一化的 NLMS 算法
对步长的分子和分母均进行 M M M 倍的缩放之后,可进一步将 ( 15 ) (15) (15) 改写为:
h ⃗ ( n + 1 ) = h ⃗ ( n ) + α / M ∥ x ⃗ ( n ) ∥ 2 / M + c / M e ( n ) x ⃗ ( n ) (16) \vec{h}(n+1) = \vec{h}(n) + \frac{\alpha / M}{\Vert \vec{x}(n)\Vert^{2} / M + c / M} e(n) \vec{x}(n) \tag{16} h(n+1)=h(n)+∥x(n)∥2/M+c/Mα/Me(n)x(n)(16)
可以使用 p ( i ) p(i) p(i) 近似代替 ∥ x ⃗ ( n ) ∥ 2 / M \Vert \vec{x}(n)\Vert^{2} / M ∥x(n)∥2/M,其中:
p ( i ) = β p ( i − 1 ) + ( 1 − β ) ∣ x ( n ) ∣ 2 , p ( − 1 ) = 0 a n d 0 < β ≤ 1 (17) p(i) = \beta p(i-1) + (1-\beta) \left| x(n) \right|^{2}, \quad p(-1)=0 \; and \; 0 < \beta \leq 1 \tag{17} p(i)=βp(i−1)+(1−β)∣x(n)∣2,p(−1)=0and0<β≤1(17)
可以被解释为输入序列 { x ( n ) } \{x(n)\} {x(n)} 的功率估计, M M M 表示抽头输入向量 x ⃗ ( n ) \vec{x}(n) x(n) 的长度。 ( 16 ) (16) (16) 可进一步改写为:
h ⃗ ( n + 1 ) = h ⃗ ( n ) + α p ( i ) + c e ( n ) x ⃗ ( n ) (18) \vec{h}(n+1) = \vec{h}(n) + \frac{\alpha}{p(i) + c} e(n) \vec{x}(n) \tag{18} h(n+1)=h(n)+p(i)+cαe(n)x(n)(18)
需要注意的是, ( 18 ) (18) (18) 中的 α \alpha α 和 c c c 是 ( 15 ) (15) (15) 中相应值的 1 / M 1/M 1/M。
5. 总结
NLMS 是归一化的 LMS 算法,即乘积向量 e ( n ) x ⃗ ( n ) e(n) \vec{x}(n) e(n)x(n) 相对于抽头输入向量的平方欧式范数(或输入序列的功率)进行了归一化。可把 NLMS 看作时变步长参数的 LMS。无论对于不相关数据还是相关数据,NLMS 要比标准 LMS 可能呈现出更快的收敛速度。
关于 NLMS 算法的论文可参考 论文笔记之 NLMS,该论文从几何角度对 NLMS 算法进行了介绍,提供了一个较新的理解思路,感兴趣的读者可进一步学习。
6. 参考文献
[1]《数字信号处理理论,算法与实现》(第三版) 作者:胡广书
[2]《自适应滤波器原理》(第五版) 原作者:Simon Haykin
[3]《Fundamentals of Adaptive Filtering》 作者:Ali H. Sayed
更多推荐
所有评论(0)