LMS自适应滤波算法1960年Widrow和Hoff提出最小均方误差算法(LMS),LMS算法是随机梯度算法中的一员。使用“随机梯度”一词是为了将LMS算法与最速下降法区别开来。该算法在随机输入维纳滤波器递归计算中使用确定性梯度。LMS算法的一个显著特点是它的简单性。此外,它不需要计算有关的相关函数,也不需要矩阵求逆运算。由于其具有的简单性、鲁棒性和易于实现的性能,在很多领域得到了广泛的应用。1LMS算法简介LMS算法是线性自适应滤波算法,一般来说包含两个基本过程:(1)滤波过程:计算线性滤波器输出对输入信号的响应,通过比较输出与期望响应产生估计误差。(2)自适应过程:根据估计误差自动调整滤波器参数。如图1-1所示,用X(n)=[x(n)x(n−1)…x(n−N+1)]𝑇表示n时刻输入信号矢量,用W(n)=[w_0(n)w_1(n)…w_(N−1)(n)]𝑇表示n时刻N阶自适应滤波器的权重系数,d(n)表示期望信号,e(n)表示误差信号,v(n)是主端输入干扰信号,u是步长因子。则基本的LMS算法可以表示为e(n)=d(n)−𝑋𝑇(𝑛)𝑊(𝑛)(1)W(n+1)=W(n)+2ue(n)X(n)(2)图1-1自适应滤波原理框图由上式可以看出LMS算法实现起来确实很简单,一步估计误差(1),和一步跟新权向量(2)。2迭代步长u的作用2.1理论分析尽管LMS算法实现起来较为简单,但是精确分析LMS的收敛过程和性能却是非常困难的。最早做LMS收敛性能分析的是Widrow等人,他们从精确的梯度下降法出发,研究权矢量误差的均值收敛特性。最终得到代价函数的收敛公式:J(n)=𝐽𝑚𝑖𝑛+∑𝜆𝑖(1−𝑢𝜆𝑖)2𝑛𝐿−1𝑖=0𝑔𝑖′2(0)(3)式(3)揭示出LMS算法代价函数的收敛过程表现为一簇指数衰减曲线之和的形式,每条指数曲线对应于旋转后的权误差矢量的每个分量,而他们的衰减速度,对应于输入自相关矩阵的每个特征值,第i条指数曲线的时间常数表示为τi=−1ln(1−u𝜆𝑖)2≈12𝑢𝜆𝑖小特征值对应大时间常数,即衰减速度慢的曲线。而大特征值对应收敛速度快的曲线,但是如果特征值过大以至于(1−u𝜆𝑖)21则导致算法发散。从上式可以明显看出迭代步长u在LMS算法中会影响算法收敛的速度,增大u可以加快算法的收敛速度,但是要保证算法收敛。最大步长边界:𝑢max=2𝑇𝑟𝑎𝑐𝑒{𝑅}稳态误差时衡量LMS算法的另一个重要指标,稳定的LMS算法在n时刻所产生的均方误差,其最终值J(∞)是一个常数。用𝐽𝑚𝑖𝑛来表示维纳解对应的均方误差,则稳态误差可以定义为:𝑀=𝐽(∞)−𝐽min𝐽𝑚𝑖𝑛Widrow给出的失调误差:M=𝑢2𝑇𝑟𝑎𝑐𝑒{𝑅}可见LMS算法的失调误差恒不为零。也可以看出u越大失调误差会越大。收敛速度和稳态误差不可兼得,由步长u控制两者的折衷。2.2实验验证白噪声经过AR模型的输作为LMS算法的输入,AR模型参数:a1=1.558;a2=-0.81算法迭代次数2048(1)给出了固定步长u=0.001单次运算和200次运算的权值随n变换曲线。(2)u=0.001和u=0.003学习曲线图2-1单次运算与200次运算200次独立仿真集平均后权重系数随n变化的曲线比较平滑。最终权重系数收敛结果确实在1.558和-0.81附近。迭代步长对收敛速度和稳态误差的影响:图2-2不同迭代步长下LMS学习曲线从图2-2很容易看出u=0.003时比u=0.001收敛速度要快,但是稳态误差也比较大。05001000150020002500-1-0.500.511.52抽头权值单次运算200次运算平均05001000150020002500012345678910平方误差LMS学习曲线u=0.001u=0.0033一种变步长LMS算法3.1理论分析由迭代步长u对LMS算法的影响可知,减小步长因子u可减少自适应滤波算法的稳态噪声,提高算法的收敛精度。同时也会降低算法的收敛速度和跟踪速度。为了同时获得较好地收敛速度和稳态误差,变步长算法被提出,在算法运行过程中动态地调整步长因子u,调整的原则是在初始收敛阶段或者系统参数发生变化时,步长应该比较大,以便有较快的收敛速度和对时变系统的跟踪速度;而在算法收敛后,不管主输入端干扰信号v(n)有多大,都应该保持很小的调整步长以达到很小的稳态失调噪声。根据这一调整原则,很多变步长算法被提出。其中一种是Sigmoid函数的简化版,步长u和e(n)关系如下:u(n)=β(1−exp(−α|e(n)|2))其中参数α0控制函数的形状,参数β0控制函数的取值范围。u(n)和e(n)的函数曲线如图3-1和图3-2图3-1参数α对曲线的影响图3-2参数β对曲线的影响参数α,β选择原则,使初始误差|e(n)|对应的步长u值较大(在使算法收敛的范围内),如果需要较高的收敛速度,可选取较大的α值。3.2实验验证仿真实验条件:未知系统FIR系数𝑊∗=[0.8,0.5]𝑇;参考输入信号x(n)是零均值,方差为1的高斯白噪声;v(n)是与x(n)不相关的高斯白噪声,均值是零,方差为0.04;200次独立仿真,采样点数为1000。参数α=300,β=0.1和不同迭代步长下固定步长的LMS曲线做了对比,仿真结果如下图3-3,图3-4,图3-5图3-3u=0.010100200300400500600700800900100010-210-1100迭代次数均方误差LMS学习曲线固定步长u=0.01变步长图3-4u=0.02图3-5u=0.050100200300400500600700800900100010-210-1100迭代次数均方误差LMS学习曲线固定步长u=0.02变步长0100200300400500600700800900100010-210-1100迭代次数均方误差LMS学习曲线固定步长u=0.05变步长观察图3-3、图3-4和图3-5,看到变步长LMS算法收敛速度优于固定步长收敛速度。参考文献【1】谷源涛.LMS算法收敛性能研究与应用【博士毕业论文】【2】Simon.Haykin.自适应滤波器原理(中文第四版)【3】高鹰,谢胜利.一种变步长自适应滤波算法及分析.电子学报.August2001