滤波器设计(4):自适应滤波器之最小均方误差(LMS)滤波器的设计

引言


前面的文章简要介绍了系数一旦确定就不能改变的一种现代滤波器——维纳滤波器的设计。

Review:维纳滤波器的设计

事实上(又来啰嗦一遍,“事实上”的意思,就是提醒观众注意,后面即将要出现重要的内容了),

由于信号不一定是平稳的,因此Wiener-Hoff方程Ax=b的A和b不一定是不变的,很有可能是时变的,

导致方程的解x也应该是一个时变的量。

这就意味着,如果一直用一组固定的滤波器的值w,似乎不是很妥当。

好像,这组w应该还会随着时间的流逝而变换,即w其实是w(n),是时间n的函数。

于是,引出了最小均方误差(Least Mean Square)自适应滤波器(Adaptive Filter)。


字面解释


最小均方误差(Least Mean Square)自适应滤波器(Adaptive Filter)。
从字面上来看,具有两层含义。

1. 最小均方误差
前面也讲了,为了衡量滤波器的滤波效果,诞生了很多种评价标准。其中一种,客观的、量化的,就是考察均方误差。
若滤波后的信号与参考信号的均方误差越小,则滤波效果越好。参考信号一般是训练过程(学习过程,预先测量过程)人为提供的。
说这是数据辅助(data-aided)的信道均衡也好,监督学习(supervised learning)也好,大概都是那个意思。

2. 自适应
所谓自适应,就是说滤波器的系数,可以自己去自动地适应当前时刻的一些信号特征,适应所处环境的一些变化。通俗点讲,
就是它的系数可以随着环境的变化而改变,以达到更好的滤波效果。这种变化是它自己完成的。所以叫自适应。



与维纳滤波器不同的是,自适应滤波器多了反馈(feedback)回路。
反馈是一个非常重要的东西。
比如,同学们对老师的反馈,就可以告知老师授课难易程度,进度快慢,老师从而根据反馈信息进行适当调整。
模拟电子技术中,放大和反馈是两大基本问题。各种负反馈、正反馈,都能起到神奇的效果。
这里的自适应滤波器也类似。由于有了反馈,滤波器可以根据反馈信息进行系数的调制,从而达到更好的滤波效果。

梯度下降


那如何利用反馈,实现滤波器系数的更新呢?
目标函数是(或代价函数,看起来总是怪怪的,但是,名字而已,无所谓了)J(w) = E(|e(n)|^2)。
要求最小均方误差,就是要让J达到最小,于是,求最值问题。
使J达到最小的点w,就是极值点。
一些文章上,会把这个w叫做w_optimal,用数学式子来描述就是

argmin的意思是,让argmin(?)中的这个“?”取得最小值的时,此时的自变量的值。
也就是?的最小值点。
关于“梯度下降法”的资料,还是有很多的。这里就不展开了。
最基本的思想就是,假设有一个初值w=w0,经过一系列的迭代运算,使这个w尽量往最小点w_opt靠。
为了让函数下降,需要更新w的值。如何更新呢?w <-- w - grad(J)可以让J减小得最快。
因为梯度gradient方向是函数增长率最快的方向,所以前面加个负号就可以了。
所以,求J的梯度(对各个wi分量分别求偏导数)就好了。

LMS算法




其中,u是自己设定的一个参数。所谓的步长(step)。记得u要大于0。
取大取小,纯凭手感了。经验?
一定范围内,u越大,收敛越快,意思迭代次数比较少的时候,w也可以快速地趋近于w_opt。
但这样有可能会造成震荡,就是w还没有到w_opt,由于步长大,一步跨过了w_opt,又回来,又跨过了w_opt。
u小一点,收敛慢,但是最后的精度要高一些。
理论上,u还有一个取值范围。好像与x的自相关阵的特征值有关。
我个人觉得在我目前的实践中,好像还没有用到。反正就一个个试吧。有效果就行。
还是那句话。这里的LMS用到的d,应该是一个训练信号。这是有数据辅助的。监督学习的。
可能等到w变化得不是太大了,就固定w了吧,然后,开始对真正要处理的信号进行滤波了。
应用场景,可以参考《 维纳滤波器的设计》那篇文章。
后面,我会放些用LMS来去除噪声的文章上来。

最后,这里的LMS是恒定步长的。后来还有各种更高级炫酷的改版。比如什么变步长的LMS算法。
我目前具体也没有怎么看过。反正,LMS,梯度下降,挺简单的,但是效果确实是有的。不然怎么会这么流行呢?

你可能感兴趣的:(matlab,lms,Fir,滤波器设计,现代滤波器)