前面学习的LMS自适应滤波器的核心思想是最速下降法,并根据当前输入信号和期望输出对代价函数的瞬时梯度进行估计。但LMS只使用了当前时刻的输入和期望信号,没有充分利用过去的信息。这就导致LMS自适应滤波器误差大、收敛慢。
一个直接的想法就是,如果能把过去的信息也都利用起来,那么梯度估计的误差就会大大减小,算法便会很快收敛。最小二乘(Least Squares,LS)算法正好就实现了这一过程,它旨在使期望输出与滤波器实际输出的残差平方和最小。
1. 最小二乘法
1.1 从维纳滤波器引出集平均
在前面介绍的维纳滤波器中提到,维纳滤波器是基于最小均方误差准则的,准则可表示为:
ξ
(
n
)
=
E
[
e
2
(
n
)
]
=
m
i
n
\xi(n)=E[e^2(n)]=min
ξ(n)=E[e2(n)]=min (1)
其中e(n)是估计误差,
e
(
n
)
=
s
(
n
)
−
y
(
n
)
e(n)=s(n)-y(n)
e(n)=s(n)−y(n) (2)
这里
ξ
(
n
)
\xi(n)
ξ(n)仅是基于当前时刻的信号。对
e
2
(
n
)
e^2(n)
e2(n)求期望,是基于维纳滤波器要求已知估计量(即不带噪信号)的前两阶矩这一事实。因此,维纳滤波器的优化准则本质上是仅基于当前时刻信号的统计意义上的最优,即集平均。
1.2 集平均 v . s . v.s. v.s.时间平均
集平均又称统计平均,是对一族样本进行均值估计。除了集平均外,还有一种平均方法——时间平均,它是对同一样本进行多次观察后进行均值估计。
二者区别与联系如下图所示:
集平均需要已知信号的统计特性(最起码要知道信号的一阶矩)。而时间平均则不需要知道信号的统计特性,因为它是靠多次观察来得到的。
1.3 从时间平均引出最小二乘法
和引入LMS自适应滤波器类似,重新回到前面介绍的最速下降法在维纳滤波器中的应用。
时刻
n
n
n的估计误差再一次列出来:
e
(
n
)
=
d
(
n
)
−
w
T
(
n
)
u
(
n
)
(
3
)
e(n)=d(n)-\bold w^T(n) \bold u(n) (3)
e(n)=d(n)−wT(n)u(n) (3)
最速下降法用于维纳滤波器时,是基于维纳滤波器的集平均思想,构造了基于线性最小均方误差(LMMSE)的代价函数,即需要使
E
[
e
2
(
n
)
]
E[e^2(n)]
E[e2(n)]最小。
这里,将集平均思想改为时间平均,构造新的代价函数:
J
=
∑
n
=
0
N
−
1
∣
e
(
n
)
∣
2
(
4
)
J=\sum_{n=0}^{N-1}{|e(n)|^2} (4)
J=∑n=0N−1∣e(n)∣2 (4)
式(4)便是最小二乘法的核心思想。除了这里介绍的自适应滤波外,它还有很多其它应用,比如曲线拟合、最优化等。
2.递归最小二乘(RLS)自适应滤波器
2.1 RLS的代价函数
若将前述最小二乘法直接用于滤波,所做的将是批处理(Batch),每一次接受到新测量值的时候,需要整个模型重新计算。这样的方法需要耗费大量内存存储所有历史数据,并且计算量很大,无法进行实时滤波。
递归最小二乘法(RLS)便是为解决实时滤波问题的,其代价函数为:
J
(
n
)
=
∑
i
=
1
n
λ
n
−
i
∣
e
(
i
)
∣
2
+
δ
λ
n
∣
∣
w
(
n
)
∣
∣
2
(
5
)
J(n)=\sum_{i=1}^{n}\lambda ^{n-i}{|e(i)|^2}+\delta \lambda^n{||\bold w(n)||^2} (5)
J(n)=∑i=1nλn−i∣e(i)∣2+δλn∣∣w(n)∣∣2 (5)
说明:
- 式(5)的第一项表示为残差的加权平方和。 λ n − i \lambda^{n-i} λn−i是呈指数衰减的加权系数,加入权值是为了保证“遗忘”掉久远的过去数据,而更及时的跟踪最新数据, 0 < λ < ≈ 1 0<λ<≈1 0<λ<≈1。事实上,经典最小二乘法假设每一时测量数据的权重相同,这样并不合理。假如一个测量值已经过去很久,那么它对计算结果的影响就应该削弱,反之影响应该加强。
- 式(5)的第二项是为了RLS算法推导方便加入的正则化项,随着时间的推移, λ n \lambda^{n} λn趋向于0,正则化项的影响越来越小。 δ δ δ是正则化系数。
2.2 计算步骤
RLS自适应滤波器的推导过程很复杂,这里直接给出推导结果,也就是实际工程应用时的计算步骤。
考虑同最速下降法用于维纳滤波同样的滤波器结构(滤波器系数长度为
M
M
M),计算步骤如下:
- 算法初始化
w ^ ( 0 ) = 0 \hat \bold{w}(0)=\bold 0 w^(0)=0
P ( 0 ) = δ − 1 I \bold P(0)=\delta ^{-1}\bold I P(0)=δ−1I
其中,当SNR较高时, δ \delta δ取小正数;当SNR较低时, δ \delta δ取大正数。
对每一时刻 n n n,按如下步骤迭代计算 - 计算中间量
π
(
n
)
\bm\pi(n)
π(n)
π ( n ) = P ( n − 1 ) u ( n ) \bm\pi(n)=\bold P(n-1)\bold u(n) π(n)=P(n−1)u(n) - 计算增益向量
k
(
n
)
\bold k(n)
k(n)
k ( n ) = π ( n ) λ + u T ( n ) π ( n ) \bold k(n)=\frac{\bm\pi(n)}{\lambda+\bold u^T(n)\bm \pi(n)} k(n)=λ+uT(n)π(n)π(n) - 计算先验估计误差
ξ
(
n
)
\bm \xi(n)
ξ(n)
ξ ( n ) = d ( n ) − w ^ T ( n − 1 ) u ( n ) \xi(n)=d(n)-\bold {\hat w}^T(n-1)\bold u(n) ξ(n)=d(n)−w^T(n−1)u(n) - 更新滤波器系数
w
(
n
)
\bold w(n)
w(n)
w ^ ( n ) = w ^ ( n − 1 ) + k ( n ) ξ ( n ) \bold {\hat w}(n)=\bold {\hat w}(n-1)+\bold k(n)\xi(n) w^(n)=w^(n−1)+k(n)ξ(n) - 更新逆相关矩阵
P
(
n
)
\bold P(n)
P(n)
P ( n ) = λ − 1 P ( n − 1 ) − λ − 1 k ( n ) u T ( n ) P ( n − 1 ) \bold P(n)=\lambda^{-1}\bold P(n-1)-\lambda^{-1}\bold k(n)\bold u^T(n)\bold P(n-1) P(n)=λ−1P(n−1)−λ−1k(n)uT(n)P(n−1)
说明如下:
-
M
×
M
M×M
M×M维矩阵
P
(
n
)
\bold P(n)
P(n)叫做逆相关矩阵,是输入信号相关矩阵加权和
Φ
(
n
)
\bm\Phi(n)
Φ(n)(考虑正则项)。
Φ
(
n
)
\bm\Phi(n)
Φ(n)的计算公式为:
Φ ( n ) = ∑ i = 1 n λ n − i u ( i ) u T ( i ) + δ λ n I \bm \Phi(n)=\sum^{n}_{i=1}\lambda^{n-i}\bold u(i)\bold u^T(i)+\delta\lambda^n\bold I Φ(n)=∑i=1nλn−iu(i)uT(i)+δλnI
虽然 P ( n ) \bold P(n) P(n)是逆相关矩阵,但因为迭代算法的存在,实际计算时并不需要矩阵求逆。 - M × 1 M×1 M×1维向量 k ( n ) \bold k(n) k(n) 叫做增益向量
- ξ ( n ) \xi(n) ξ(n)是先验估计误差,计算时用到的时上一时刻的滤波器系数。不同于维纳滤波器中用到的后验估计误差。后验估计误差的计算公式为 e ( n ) = d ( n ) − w ^ T ( n ) u ( n ) e(n)=d(n)-\hat{\bold w}^T(n)\bold u(n) e(n)=d(n)−w^T(n)u(n)
- π ( n ) \bm\pi (n) π(n)是计算的中间量,一般 k ( n ) \bold k(n) k(n)按2~3两个步骤分开计算,可减轻有限精度计算带来的问题。
2.3 RLS v . s . v.s. v.s. LMS自适应滤波器
RLS自适应滤波器比LMS计算复杂,但也还好,没有矩阵求逆(LMS也没有),只有大量的乘法运算。
RLS和LMS的主要区别如下:LMS算法中的步长参数
μ
μ
μ被
Φ
−
1
(
n
)
\bm\Phi^{-1}(n)
Φ−1(n)[即输入向量
u
(
n
)
\bold u(n)
u(n)的相关矩阵的逆]代替,它对输入信号有白化作用。
这一改进对平稳环境下RLS算法的收敛性能产生如下影响:
- RLS算法的收敛速率比LMS快一个数量级。
- 随着迭代次数 n n n趋于无线大,RLS算法的额外均方误差收敛于零。
参考文献:
- https://blog.csdn.net/qinruiyan/article/details/50793114
- 郑宝玉 等译,自适应滤波器原理,第四版,第8章、第9章
- 罗鹏飞 等译,统计信号处理基础——估计理论和检测理论,第8章