李雅林,谭立辉
(广东工业大学应用数学学院,广东广州510520)
最小均方算法(Least Mean Square,LMS)是一种非常简便、运用极为普遍的自适应算法,最早是被Widrow及Hoff于1960年得到的。该算法的最大优点在于刚开始不用知道算法的期望响应及采样信号的特性。“前一时刻”的权矢量加上一个负的均方误差梯度的倍数等于“目前时刻”的权矢量。该算法的长处在于原理简单,且拥有良好的稳定性能、简单的结构及小的计算量。因此,它在通信、声纳、雷达自适应均衡及系统辨识等领域[1-3]应用非常广泛。LMS算法主要是在最陡下降法这一思想上产生的,也即顺着权矢量梯度的估值负方位搜寻,以此得到最好的权值向量。具体流程如下:设定时间n处系统的输入信号为X(n)=[x(n),x(n-1),…,x(n-m)]T,系统的权值矢量为W(n)=[w0(n),w1(n),…,wm(n)]T,系统的输出信号为y(n)=WT(n)X(n),期望的响应为d(n),误差信号为e(n)=d(n)-WT(n)X(n)。LMS算法的权值向量更新公式为
其中,μ为步长因子。要使得LMS算法可以收敛到某一个数值,就需要步长参数因子μ满足限制条件0<μ<1/λmax(其中,λmax为输入信号的相关矩阵的最大特征值)。在具体的操作方案中,采样信号无法幸免地会受到滋扰噪音的影响,在采用LMS算法进行滤波时,将产生稳态误差。参数因子μ选择的大小不一样,就可以使得LMS算法收敛的速率、稳态误差及时变系统的跟踪速率都会有所改变。一般来说,选择的参数因子μ较大时,收敛速率会相对较快,但稳态误差波动会非常大。反之,选择的参数因子较小时,稳态误差波动幅度会比较小,但是会有比较慢的收敛速率。由此可以看出,算法的收敛速率和稳态误差是LMS算法中存在的主要矛盾[4-6]。另一方面,LMS算法收敛速率比较慢,严重影响了系统的机能。为了克服这些难题,人们在此算法的基础上尝试用了各种各样的改进算法,近年来,这些改进算法中用得最多的就是各种各样的变步长LMS算法[7-9],虽然这些变步长算法的优化方式各有不同,但是变步长LMS算法整体上都有如下方式的优化准则:也即当未知系统参数因子产生改变时或者在收敛刚开始的时候,应该选择较大的参数因子,这样可以获得快的收敛速率及跟踪速率。当变步长LMS算法将要收敛的时候,自适应滤波器的权矢量也会随之靠近最优值,此时应该选择较小的参数因子,这样就可以减小算法的稳态误差。众所周知,NLMS算法[10]作为非常经典的变步长LMS算法就是其中的一种改进方案,它是用输入矢量的2范数对步长因子的归一化处理得到的,可以看作是一种特殊的变步长LMS算法,由于在NLMS算法里仍然有着固定不变的全局步长因子,算法的收敛速率还是受到固定步长的影响,收敛速率较慢,影响着系统的性能。所以,覃景繁等[11]通过理论推导与Matlab仿真实验得到了另外一种形式的变步长LMS算法,此改进算法是在Sigmoid函数基础之上通过一定的变形得到的。最近,文献[12]结合文献[10]和文献[11]这两种变步长算法的思想,得到了另外一种新形式的变步长算法(SVSNLMS),通过仿真分析可以发现这种算法不仅可以有低的稳态误差,而且收敛速率也相对加快了许多。也即该改进算法不但吸取了SVSLMS收敛速率快的优点,而且也吸取了NLMS稳定性好的长处。本文受此改进措施的启示,得到了另外一种新的改进变步长LMS算法(VSNLMS)。
通过分析NLMS算法的构造,可以认为其是一种特殊化的LMS算法。NLMS算法的基本原理可以看作是用抽头输入信号矢量的功率来对步长进行归一化处理,这样可以加速收敛和改善其稳定性能。同时,由于在算法迭代更新时去除采样信号的估计功率值,因此也可以有效地去除由于采样信号太大而引起的不相关滋扰噪音的增加。NLMS算法权系数迭代公式为
其中,μ(0<μ<1)可以看作是决定无序的固定的收敛因子,对于一个小的正常数γ(0<γ≤1),加上它是为了防止X(n)TX(n)小而导致步长值过大。NLMS算法因为其本身构造非常简便,输入幅度比较大和稳态误差相对比较低而被普遍应用[13-15]。另一方面,NLMS算法也主要用来解决算法对梯度噪音的敏感性如何减小。然而,在NLMS算法中,由于其步长因子仍是唯一不变的,所以该算法的稳态误差和收敛速率之间的矛盾依旧不能很好地得到折衷。
为了使算法尽可能快速地取到收敛值,许多学者做了大量有关模型的仿真实验。通过观察Sigmoid函数的图像,可以知道该函数有很好的收敛性能。因此,在1996年覃景繁等[11]基于这一模型,大胆提出了另外一种形式的变步长LMS算法(SVSLMS),通过仿真实验证实,该算法确实比固定步长的NLMS算法在收敛速率方面得到了极大地提高。该算法与固定步长算法的最大不一样的地方在于其步长因子是时刻改变的,这样就保证了可以更好地调整参数因子,使算法达到最好的状态。该改进算法的步长因子μ是误差 e(n)的Sigmoid函数,公式为
根据式(3),可以知道当误差减小时,步长因子也随之逐渐减小。当算法刚开始收敛的时候,算法误差会比较大,所以迭代步长因子也会随之比较大,这样可以使得样本快速地达到收敛状态。当算法逐步到达收敛的状态时,误差随之不断减小,这也促使步长因子不断减小,此时,算法的稳态误差也相应地减小。通过仿真实验,分析并比较了参数α和β对步长因子的影响,可以知道函数的形态被参数α(α>0)所调控,且α控制着曲线变化的快慢,影响着算法的稳定误差,算法的收敛速率和函数的取值范围被参数β所调控,由于0<μ<1/λmax是固定步长LMS算法的收敛条件,所以可以得到参数β的最大值应该满足βmax=2/λmax,当参数β在上面范围内取值时,就可以使SVSLMS算法收敛。由此可以发现,一方面,NLMS算法虽然可以通过输入功率因素的归一化处理步骤,进而实现收敛速率与稳态误差的平衡,但却把步长因子固定为仅由输入功率唯一决定的固定量,并不能很好地改善算法的性能。另一方面,我们知道SVSLMS算法虽然可以起到加快算法的收敛速率的功效,但收敛速率也只随着误差的改变而改变,并不能很好地均衡收敛速率与稳定性能两者间的矛盾。鉴于此,杨坡等[12]得到了改进的NLMS(SVSNLMS)算法,通过巧妙地结合NLMS算法和SVSLMS算法,得到其步长因子的表达形式为
此算法不但包括了NLMS算法稳定误差较小的特点,而且也吸取了SVSLMS算法快速收敛的特点。
通过对式(4)的分析可以知道,由于Sigmoid函数本身的构造过于繁琐,并且在误差信号e(n)趋向于0的时候,其步长幅度波动过大,并没有慢慢改变的特点,这就会促使SVSNLMS算法仍然有较大的步长改变在自适应稳态阶段,导致算法的不稳定。这就需要我们在此基础上寻求一种能够消除这一缺点的改进措施。因此,本文在此算法的基础上给出了满足步长调整准则的另外一种形式的算法(VSNLMS),其步长因子的表达形式为
权系数迭代过程为
其中,参数β应该满足β<1/λmax才能保证此算法收敛,然而,并不是在β<1/λmax范围内,参数α和参数β取任意值时都能够使算法收敛,它们的最优值也是需要大量的仿真实验择优选取的。通过仿真实验验证,在算法的收敛速率方面,新算法(VSNLMS)明显比改进之前的SVSNLMS算法快了许多,并且计算量也相应地随之减少。
通过分析比较NLMS算法、SVSNLMS算法及其改进算法(VSNLMS)在信号自适应处理中的运用,可以了解改进算法的性能。仿真实验中取信号为余弦信号,幅度为1,噪声为20 db的高斯白噪声,采样信号分别被SVSNLMS算法及VSNLMS算法进行滤波处理,期望信号是没有加噪声的余弦信号,幅度为4。对于在收敛速率方面的差异,图1给出了VSNLMS算法、NLMS算法和SVSNLMS算法三种不同算法的曲线比较图。其中,NLMS算法的收敛曲线图是最上面的那一条,此时选取的步长因子是μ=0.1,SVSNLMS算法的收敛曲线为中间的那条曲线,选取的最优参数分别为α=10,β=0.3(本文算法最佳值),VSNLMS算法的收敛曲线图是最下面的那条,选取的最优参数分别为α=20,β=0.5。通过分析该比较图,可以知道在三种算法的稳态误差大概一致的情况下,本文的算法(VSNLMS)在收敛速率方面明显优于NLMS算法和SVSNLMS算法。
图1 三种不同算法的曲线比较图
本文首先介绍了固定步长的LMS算法,接着又介绍了变步长的NLMS算法和SVSNLMS算法,最后又详细分析了本文新的改进算法。通过一系列的描述与分析比较,可以知道衡量自适应滤波算法性能好坏的三个最明显的参数指标分别是:收敛速率、稳态误差以及计算量的大小。三者的稳态误差基本一致,没有太大区别。但是改进的VSNLMS算法的优越性在于其收敛速率明显比SVSNLMS算法和NLMS算法加快了许多,除此之外,计算量也在很大程度上下降了许多。此改进算法的性能得到了一定的提高,这就使得VSNLMS算法的应用更加广泛。