RLS自适应滤波器中用矩阵求逆引理来避免求逆运算
在RLS自适应滤波器的实现过程中,难免不涉及矩阵的求逆运算。而求逆操作双是非常耗时的,一个很自然的想法就是尽可能的避免直接对矩阵进行求逆运算。那么,在RLS自适应滤波器的实现中,有没有一种方法能避免直接求逆运算呢?答案当然是用的:使用矩阵求逆引理来避免对矩阵进行直接求逆。
这里先对矩阵求逆引理做下介绍,也叫做Woodbury矩阵恒等式(或者称做Sherman–Morrison formula,这里统一称矩阵求逆引理)在线性代数中:
\[{\left( {A + UCV} \right)^{ - 1}} = {A^{ - 1}} - {A^{ - 1}}U{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}}\]
其中,A、C必须是可逆方阵,U、V可以是方阵也可以不是方阵。先不忙着记公式,这个不是最重要的,首先要弄明白的是,矩阵求逆引理的写成这个样子,它要解决的是什么样的问题,其思想是什么?
矩阵求逆引理要解决的问题是:已知一个高维矩阵A的逆矩阵,当A矩阵产生了一个非常小的变化(维数远低于A或者低于A)时,能不能根据已知的A的逆矩阵,求产生微小变化后的矩阵的逆。
现在我们知道当然是可以的,这里的微小变化,指的就是恒等式中的矩阵UCV。
知道了矩阵求逆引理解决的是什么样的问题,主要思想后,感觉还是有点不得足,最好能证明一下,好让自己有个“底”,同时满足下好奇心。知其然同时又知其所以然,有什么不好!这里只对其中一种证明方法做下详细的介绍,以方便理解,考虑以下方程组:
\[\left\{ {\begin{array}{*{20}{c}}
{AX + UY = I} \\
{VX - {C^{ - 1}}Y = 0} \\
\end{array}} \right.\]
及其矩阵形式
\[\left[ {\begin{array}{*{20}{c}}
A & U \\
V & { - {C^{ - 1}}} \\
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
X \\
Y \\
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
I \\
0 \\
\end{array}} \right]\]
根据第2个方程可知:$Y = CVX$,代入第1个方程得到$X = {A^{ - 1}}(I - UY)$,再将X的表达式代回第二个方程,得到
\[{C^{ - 1}}Y = V{A^{ - 1}}(I - UY) = V{A^{ - 1}} - V{A^{ - 1}}UY\]
将$V{A^{ - 1}}$与${C^{ - 1}}Y$交换等式两边位置
\[V{A^{ - 1}} = {C^{ - 1}}Y + V{A^{ - 1}}UY = \left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)Y\]
可得到Y的表达式$Y = {\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}}$,这里将Y再次第1个方程$AX + UY = I$,得到
\[\begin{array}{l}
AX + U{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}} = I \\
AX = I - U{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}} \\
X = {A^{ - 1}}\left[ {I - U{{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)}^{ - 1}}V{A^{ - 1}}} \right] \\
X = {A^{ - 1}} - {A^{ - 1}}U{\left( {{C^{ - 1}} + V{A^{ - 1}}U} \right)^{ - 1}}V{A^{ - 1}} \\
\end{array}\]
关于其它证明部分,建议可以参考wiki中对Woodbury矩阵恒等式的介绍,里面有好几种不同的证明方法(直接证明、代数证明、矩阵分块推导、LDU分解推导),写的都非常好,建议喜欢追根究底的朋友认真看下。
另外,矩阵求逆引理更通用的是二项式反转定理(Binomial inverse theorem),很多的变种都可以视为二项式反转定理的特殊情况,这些变种icoolmedia还没有整理完毕,先不一一说明了。
下面就用矩阵求逆引理来解决RLS滤波器中的求逆问题,这里假定读者有最小二乘法的基础,首先给出更新滤波器输入向量相关矩阵的公式和矩阵求逆引理的表达式(下面的推导过程来自于Simon Haykin《自适应滤波器原理》第10章的学习)。
\[{\bf{\Phi }}(n) = \lambda {\bf{\Phi }}(n - 1) + {\bf{u}}(n){{\bf{u}}^{\bf{H}}}(n)\]
\[{{\bf{A}}^{ - 1}} = {\bf{B}} - {\bf{BC}}{\left( {{\bf{D}} + {{\bf{C}}^{\bf{H}}}{\bf{BC}}} \right)^{ - 1}}{{\bf{C}}^{\bf{H}}}{\bf{B}}\]
可以看到,上面的矩阵求逆引理与本文开始里介绍的不同,这也是一个求逆引理的变种。不多做介绍,先记下来就好,后面另在博客中详述吧。如果设:${\bf{A}} = \Phi (n)$,${{\bf{B}}^{ - 1}} = \lambda \Phi (n - 1)$,${\bf{C}} = {\bf{u}}(n)$,${\bf{D}} = 1$。对波器输入向量相关矩阵迭代更新公式应用矩阵求逆引理公式,可得
\[{{\bf{\Phi }}^{ - 1}}(n) = {\lambda ^{ - 1}}{{\bf{\Phi }}^{ - 1}}(n - 1) - \frac{{{\lambda ^{ - 2}}{{\bf{\Phi }}^{ - 1}}(n - 1){\bf{u}}(n){{\bf{u}}^{\bf{H}}}(n){{\bf{\Phi }}^{ - 1}}(n - 1)}}{{1 + {\lambda ^{ - 1}}{{\bf{u}}^{\bf{H}}}(n){{\bf{\Phi }}^{ - 1}}(n - 1){\bf{u}}(n)}}\]
如果设
\[{\bf{P}}(n) = {{\bf{\Phi }}^{ - 1}}(n)\]
\[{\bf{k}}(n) = \frac{{{\lambda ^{ - 1}}{\bf{P}}(n){\bf{u}}(n)}}{{1 + {\lambda ^{ - 1}}{{\bf{u}}^{\bf{H}}}(n){{\bf{\Phi }}^{ - 1}}(n - 1){\bf{u}}(n)}}\]
这里对增益k(n)做如下变换,得到其简化形式:
\[\begin{array}{l}
{\bf{k}}(n) = {\lambda ^{ - 1}}{\bf{P}}(n - 1){\bf{u}}(n) - {\lambda ^{ - 1}}{\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1){\bf{u}}(n) \\
= \left[ {{\lambda ^{ - 1}}{\bf{P}}(n - 1) - {\lambda ^{ - 1}}{\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1)} \right]{\bf{u}}(n) \\
= {\bf{P}}(n){\bf{u}}(n) \\
\end{array}\]
或者也可以表示为:${\bf{k}}(n) = {\Phi ^{ - 1}}(n - 1){\bf{u}}(n)$。由线性最小二乘估计可知,滤波器的系数估计表示为:${{\bf{\hat w}}(n) = {\Phi ^{ - 1}}(n){\bf{z}}(n)}$,把增益k(n)代入,得到
\[\begin{array}{l}
{\bf{\hat w}}(n) = {\Phi ^{ - 1}}(n){\bf{z}}(n) = {\bf{P}}(n){\bf{z}}(n) = \lambda {\bf{P}}(n){\bf{z}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= \lambda \left[ {{\lambda ^{ - 1}}{\bf{P}}(n - 1) - {\lambda ^{ - 1}}{\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1)} \right]{\bf{z}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= {\bf{P}}(n - 1){\bf{z}}(n - 1) - {\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1){\bf{z}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= {\Phi ^{ - 1}}(n - 1){\bf{z}}(n - 1) - {\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\Phi ^{ - 1}}(n - 1){\bf{z}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= {\bf{\hat w}}(n - 1) - {\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{\hat w}}(n - 1) + {\bf{P}}(n){\bf{u}}(n){d^*}(n) \\
= {\bf{\hat w}}(n - 1) + \left[ {{\bf{k}}(n){d^*}(n) - {\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{\hat w}}(n - 1)} \right] \\
= {\bf{\hat w}}(n - 1) + {\bf{k}}(n)\left[ {{d^*}(n) - {{\bf{u}}^{\bf{H}}}(n){\bf{\hat w}}(n - 1)} \right] \\
= {\bf{\hat w}}(n - 1) + {\bf{k}}(n)\xi (n) \\
\end{array}\]
这就是递归最小二乘(RLS)滤波器的系数更新公式,可以看到,这个过程,并没有对输入向量相关矩阵进行直接求逆,避免了直接求逆运算带来的复杂性。还有最后一个问题没有解决。P的初始化问题,这里简单给出来:${\bf{\hat w}}(n) = 0$,${\bf{P}}(0) = {\delta ^{ - 1}}{\bf{I}}$ 。这里$\delta $是正则化参数,是为了在求解反问题或者最优化问题时解决不适定性,增加抗绕动能力时引入的,这里不做详细介绍。下面总结下递归最小二乘法的实现步骤。
\[{\bf{k}}(n) = \frac{{{\lambda ^{ - 1}}{\bf{P}}(n){\bf{u}}(n)}}{{1 + {\lambda ^{ - 1}}{{\bf{u}}^{\bf{H}}}(n){\Phi ^{ - 1}}(n - 1){\bf{u}}(n)}}\]
\[\begin{array}{l}
\xi (n) = {d^*}(n) - {{\bf{u}}^{\bf{H}}}(n){\bf{\hat w}}(n - 1) \\
{\bf{\hat w}}(n) = {\bf{\hat w}}(n - 1) + {\bf{k}}(n)\xi (n) \\
{\bf{P}}(n) = {\lambda ^{ - 1}}{\bf{P}}(n - 1) - {\lambda ^{ - 1}}{\bf{k}}(n){{\bf{u}}^{\bf{H}}}(n){\bf{P}}(n - 1) \\
\end{array}\]
终于推导完毕,以上步骤的实现代码及工程可以在博文下面的QQ交流群的群文件中找到(TestRLS_using the matrix inversion lemma.rar)。本人水平有限,如以上证明和推导过程及代码如有错误之误,还请大家及时给予批评指正。
RLS自适应滤波器中用矩阵求逆引理来避免求逆运算的更多相关文章
- 自适应滤波器(Adaptive Filter)
======= Wikipedia的解释 ======= 自适应滤波器是能够根据输入信号自动调整性能进行数字信号处理的数字滤波器.作为对比,非自适应滤波器有静态的滤波器系数,这些静态系数一起组成传递函 ...
- 论文翻译:2020_A Robust and Cascaded Acoustic Echo Cancellation Based on Deep Learning
论文地址:https://indico2.conference4me.psnc.pl/event/35/contributions/3364/attachments/777/815/Thu-1-10- ...
- 论文翻译:2021_Semi-Blind Source Separation for Nonlinear Acoustic Echo Cancellation
论文地址:https://ieeexplore.ieee.org/abstract/document/9357975/ 基于半盲源分离的非线性回声消除 摘要: 当使用非线性自适应滤波器时,数值模型与实 ...
- 自适应滤波:最小均方误差滤波器(LMS、NLMS)
作者:桂. 时间:2017-04-02 08:08:31 链接:http://www.cnblogs.com/xingshansi/p/6658203.html 声明:欢迎被转载,不过记得注明出处哦 ...
- 自适应滤波:维纳滤波器——GSC算法及语音增强
作者:桂. 时间:2017-03-26 06:06:44 链接:http://www.cnblogs.com/xingshansi/p/6621185.html 声明:欢迎被转载,不过记得注明出处哦 ...
- 自适应滤波:维纳滤波器——LCMV及MVDR实现
作者:桂. 时间:2017-03-24 06:52:36 链接:http://www.cnblogs.com/xingshansi/p/6609317.html 声明:欢迎被转载,不过记得注明出处哦 ...
- 自适应滤波:维纳滤波器——FIR及IIR设计
作者:桂. 时间:2017-03-23 06:28:45 链接:http://www.cnblogs.com/xingshansi/p/6603263.html [读书笔记02] 前言 仍然是西蒙. ...
- 基于Opencv的自适应中值滤波函数selfAdaptiveMedianBlur()
7.3.3 自适应滤波器 自适应中值滤波器 对于7.3.2节所讨论的中值滤波器,只要脉冲噪声的空间密度不大,性能还是可以的(根据经验需Pa和Pb小于0.2).本节将证明,自适应中值滤波器可以处理更大概 ...
- 图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波
原 https://blog.csdn.net/alwaystry/article/details/52756051 图像算法五:[图像小波变换]多分辨率重构.Gabor滤波器.Haar小波 2018 ...
随机推荐
- dos命令(入门)
先说一下dos命令在很多情况下的共有特性 1.大小写一样,如dir和DIR 2.盘符后不加目录时,像"dir E:"和"dir E:\"没什么区别 3.使用形如 ...
- 奥酷HTML5视频直播系统AMS6.0
今日,北极星通自主研发的流媒体服务系统Aoku Media Server6.0发布了,将正式支持HTML5直播,这使得网页中无需有flash播放插件或者其他插件,可直接观看直播,HTML5直播也会使得 ...
- asp.net core 使用 swagger 生成接口文档
参考地址:http://www.cnblogs.com/daxnet/p/6181366.html http://www.jianshu.com/p/fa5a9b76f3ed 微软参考文档:https ...
- Spring中的注解@Service @Component @Controller @Repository区别
@Service用于标注业务层组件, @Controller用于标注控制层组件(如struts中的action), @Repository用于标注数据访问组件,即DAO组件, @Component泛指 ...
- iOS中蓝牙的使用
Core Bluetooth的使用 1,建立中心设备 2,扫描外设(Discover Peripheral) 3,连接外设(Connect Peripheral) 4,扫描外设中的服务和特征(Disc ...
- Redis的两种持久化方式-快照持久化和AOF持久化
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为"持久化"效 ...
- 使用stringstream对象简化类型转换
< sstream>库定义了三种类:istringstream.ostringstream和stringstream,分别用来进行流的输入.输出和输入输出操作.另外,每个类都有一个对应的宽 ...
- flask项目开发中,遇到http 413错误
在flask项目中,上传文件时后台报http 413 Request Entity Too Large 请求体太大错误! 解决的2种方法: 1.在flask配置中设置 MAX_CONTENT_LENG ...
- TCP/IP读书笔记(4) IPv4和IPv6 路由选择
TCP/IP读书笔记(4) IPv4和IPv6 路由选择 网络层是位于链路层之上,TCP/IP模型中网络层的核心协议是IP协议(Internet protocol). 目前主流的IP协议是IPv4(I ...
- ajax的缺点
平时我们大多注意的都是ajax给我们所带来的好处诸如用户体验的提升.对ajax所带来的缺陷有所忽视. 下面所阐述的ajax的缺陷都是它先天所产生的. 1.ajax干掉了back按钮,即对浏览器后退机制 ...