现代信号处理 10 - 自适应应用与LMS变种
Posted Ciaran-byte
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现代信号处理 10 - 自适应应用与LMS变种相关的知识,希望对你有一定的参考价值。
自适应应用与LMS变种
1. 自适应应用的基本框架
如果信号处理中没有自适应的话,我们的框架是这样的。输入一个信号Z,经过滤波器,得到信号Y。
但是现在的问题是Z是随时变的,Y也是随时变的,一个固定的滤波器没有办法解决问题。因此我们引入了自适应模块。
引入了自适应模块以后,通过滤波器以后得到的估计就不一定是最优估计了,我们与真实值进行比较,得到了误差e,然后把误差送人自适应滤波器中,得到一个新的系数ω,从而调整滤波器,通过不断的对滤波进行更新,使得最终的误差变小。
误差大的原因主要来自于两个方面,一方面可能是滤波器还没用调整好,训练时间不够。另一方面是因为数据Z在不断的变动,即使这样,也不代表之前训练的数据没有用,基于前面的数据进行调整,才能够得到更好的结果。
2. 自适应滤波与机器学习
自适应滤波的思想与机器学习极其的相似。
比如我们现在产生了一个误差,我们是通过误差去驱动自适应的,这个在机器学习中就是监督学习。监督学习就必须要给标准答案。监督学习的结果与标准答案之间会产生误差,通过误差来驱动学习,就是监督学习。
如果还没训练好,还在不断的对滤波器进行调整,这个在机器学习中就是训练。
调整好了,但是我们发现信号变了,我们需要去追踪信号的变化,这个在机器学习中就叫做迁移学习。比如我们做机器学习的时候,先去github先去找找open source的东西,看看有没有现成的model,然后以这个为基础和初值,继续训练,训练它没有训练过的东西,就叫做迁移学习。这就相当于在已经调整好的滤波器的基础上,去跟踪新信号的变化。
Error-Driver ⇒ Supervised Learning Adaptive Adjustment ⇒ Training Tracking Variation ⇒ Transfert Learning \\textError-Driver \\Rightarrow \\text Supervised Learning \\\\ \\textAdaptive Adjustment \\Rightarrow \\text Training \\\\ \\textTracking Variation \\Rightarrow \\textTransfert Learning Error-Driver⇒ Supervised LearningAdaptive Adjustment⇒ TrainingTracking Variation⇒Transfert Learning
3. 自适应思想的应用
自适应的根本就是在改变输入和输出的方式。
3.1 预测
第一种应用,就是预测。
信号Zn作为输入,正常输出就是Y,另一边,对信号进行延时,通过构造预测器,产生预测信号\\hat Y,与真值进行比较,得到误差,根据这个误差进行自适应,从而调整预测器。
信号预测最重要的应用是做语音编码。前面讲过线性预测编码,通过莱文森迭代和维纳滤波来实现,但是要求系统必须是平稳的。而使用自适应滤波的方法,就没有平稳性的限制了。
3.2 系统辨识
有一个等待辨识的系统,输入一个Z,输出是Y。我们构造一个系统的模板,自己实现一个系统,让他去接近与我们需要辨识的系统。可能与需要辨识的系统不一样,但是只要输入输出是一致的就行。
我们的系统也会输出一个Y,两者进行比较,得到误差e,就可以让我们来自适应了,通过输入和误差,调整我们设计的系统。
系统辨识的最主要的应用在自适应控制上。如果我们想对系统进行有效的控制,我们首先要做的就是被控制的系统是什么样子的。
知道了控制系统是什么样子,才能够根据输出推断输入控制量是什么样子的。
3.3 逆滤波
信号通过一个变化,又引入了一些噪声,通过滤波器,输出一个信号。然后我们试图用滤波以后的信号去恢复原始的信号,利用恢复过程中产生的误差去做自适应,调整滤波器。
逆滤波是把被污染了、被畸变过的信号作为输入,试图去把这个信号进行恢复。
逆滤波的应用就是通信。通信在信道发送的过程中,就会发生畸变,我们希望把这种畸变消除掉。这种操作就叫做均衡。
因为信道很难是平稳不变的,因此一定有自适应的需求。移动通讯中,信道的均衡技术是核心技术。
3.4 干扰消除
我们有一个信号和噪声的信号,我们又有一个驱动信号。
我们试图以驱动信号作为起点,构造消除器。
消除器信号与信号和噪声信号进行比较,得到的误差进行自适应。
消除器是为了把信号和噪声复现出来。最终的输出会把这个复现的信号减掉,这样的话,其他的信号里面就没有这部分了。
这个应用就是回声抵消。我们希望能够在电话系统中,复制出回声,然后把它减去。
4. LMS的变种
4.1 从步长角度考虑的变种
4.1.1 步长的重要性
ω ( k + 1 ) = ω ( k ) + μ Z ( k ) e ( k ) \\omega(k+1) = \\omega(k) + \\mu Z(k)e(k) ω(k+1)=ω(k)+μZ(k)e(k)
在自适应滤波器中,我们通过输入和误差构建搜索方向,但是另外一个问题就是,步长怎么选。
我们在前面其实已经得到了步长的限制条件了,因为我们有收敛的条件,所以要求底数小于1,因此就可以得到
0 < μ < 2 λ m a x 0 < \\mu < \\frac2\\lambda_max 0<μ<λmax2
步长的这个限制条件是下式得到的。
( 1 − μ λ k ) n (1-\\mu \\lambda_k)^n (1−μλk)n
实际上,我们在选择步长的时候,不能太大,大了不满足限制条件。同时也不能太小,太小的话,一方面搜索速度满,另外一方面,有可能陷入局部极小值。
不收敛的意思有两种,一种是反复震荡,震荡幅度很大,步长太大可能存在这个问题。两个一种不收敛是指不收敛到我们需要的极值,步长小可能会出现这个问题,进入局部极小的坑里,就很难出来。
4.1.2 归一化LMS
4.1.2.1 概述
实际上,关于自适应滤波器,有些人的观点认为,其步长也应该是自适应的,应该根据输入数据去调整步进值。
于是就有了这样的式子
ω ( k + 1 ) = ω ( k ) + 1 ∑ i = 1 N Z i 2 ( k ) Z ( k ) e ( k ) \\omega(k+1) = \\omega(k) + \\frac1\\sum_i=1^N Z_i^2(k) Z(k)e(k) ω(k+1)=ω(k)+∑i=1NZi2(k)1Z(k)e(k)
这个式子中,我们把步长和输入数据联系到了一起,当输入数据比较长的时候,步子就比较小;当输入数据比较短的时候,步长就比较大。也就相当于实现了步长的自适应。这个LMS叫做归一化的LMS。
ω ( k + 1 ) = ω ( k ) + Z ( k ) ∑ i = 1 N Z i 2 ( k ) e ( k ) \\omega(k+1) = \\omega(k) + \\frac Z(k)\\sum_i=1^N Z_i^2(k)e(k) ω(k+1)=ω(k)+∑i=1NZi2(k)Z(k)e(k)
4.1.2.2 感性理解
我们先从感性上来理解这个式子在做什么。我们知道,误差e其实是个标量,也就是说,优化的方向只与Z有关,我们希望Z代表优化方向,e代表优化大小。因此,我们有理由要求Z是一个归一化的方向向量,我们不希望Z是个有大小的向量。本来我们的愿望是,希望步长也是个自适应的,但是我们有更好的选择,我们直接让Z除以他的模做归一化就好了。
4.1.2.3 公式证明
我们再来从数据公式上对归一化的LMS进行证明。因为我们对步长有这样的要求,首先希望他尽可能小,不然会不收敛;然后,我们也希望步长不能太小,否则就会原地踏步。
为了使得步子足够小,我们有这样的目标函数
ω ( k ) ⇒ ω ( k + 1 ) m i n ( ω ( k + 1 ) − ω ( k ) ) 2 \\omega(k) \\Rightarrow \\omega(k+1) \\\\ min(\\omega(k+1)-\\omega(k))^2 ω(k)⇒ω(k+1)min(ω(k+1)−ω(k))2
为了不固步自封,我们增加一个约束条件
m i n ( ω ( k + 1 ) − ω ( k ) ) 2 s . t . ω ( k + 1 ) T Z ( k ) = d ( k ) min(\\omega(k+1)-\\omega(k))^2 \\\\ s.t. \\quad \\omega(k+1)^T Z(k) = d(k) min(ω(k+1)−ω(k))2s.t.ω(k+1)TZ(k)=d(k)
这个约束条件的意思是这样的。我们计算出来一个新的权重,但是新的数据还没到来,我们就要求这个新计算得到的权,能够对老数据进行线性组合,得到对目标的估计。也就是要求新产生的方向,能够在当前数据和目标的基础上得到满足。
我们来计算条件极值,在约束条件下,极小化均方误差。因为我们希望得到的结果是个+号项,所以这里求条件极值的时候写了个-λ。
L ( ω ( k + 1 ) , λ ) = ∣ ∣ ω ( k + 1 ) − ω ( k ) ∣ ∣ 2 − λ ( ω ( k + 1 ) T Z ( k ) − d ( k ) ) = ω T ( k + 1 ) ∗ ω ( k + 1 ) − 2 ∗ ω T ( k + 1 ) ∗ ω ( k ) + ω T ( k ) ∗ ω ( k ) − λ ( ω ( k + 1 ) T Z ( k ) − d ( k ) ) L(\\omega(k+1),\\lambda) = ||\\omega(k+1) - \\omega(k)||^2 - \\lambda(\\omega(k+1)^T Z(k)-d(k)) \\\\ = \\omega^T(k+1)* \\omega(k+1) - 2*\\omega^T(k+1)* \\omega(k) + \\omega^T(k)*\\omega(k)- \\lambda(\\omega(k+1)^T Z(k)-d(k)) L(ω(k+1),λ)=∣∣ω(k+1)−ω(k)∣∣2−λ(ω(k+1)TZ(k)−d(k))=ωT(k+1)∗ω(k+1)−2∗ωT(k+1)∗ω(k)+ωT(k)∗ω(k)−λ(ω(k+1)TZ(k)−d(k))
求导
∇ ω k + 1 L = 2 ∗ ω ( k + 1 ) − 2 ∗ ω ( k ) − λ Z ( k ) = 0 ω ( k + 1 ) = ω ( k ) + λ 2 Z ( k ) \\nabla _\\omega_k+1 L = 2* \\omega(k+1) - 2* \\omega(k) -\\lambda Z(k) = 0 \\\\ \\omega(k+1) = \\omega(k) + \\frac\\lambda2 Z(k) ∇ωk+1L=2∗ω(k+1)−2∗ω(k)−λZ(k)=0ω(k+1)=以上是关于现代信号处理 10 - 自适应应用与LMS变种的主要内容,如果未能解决你的问题,请参考以下文章