大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
题目:压缩感知中的数学知识:投影矩阵(projection matrix)
========================背景========================
关注于投影矩阵主要是看以下两个文献注意到的:
【1】杨海蓉,张成,丁大为,韦穗. 压缩传感理论与重构算法[J]. 电子学报,2011,39(1):142-148.
【2】Rachel Zhang. “压缩感知”之“Helloworld”[EB/OL] .http://blog.csdn.net/abcjennifer/article/details/7775284 .
文献1写的还是很不错的,综述了很多压缩感知重构算法,且都是以表格的形式给出,总结的很好,以后写论文也要向这个方向挺近,但是这篇论文需要有一定基础的人才能才明白,因为我感觉总是突然冒出一个符号来(比如第1步的Λ0代表什么没说,Λ0等于的那个符号后来才知道是空矩阵的意思,当然这并不影响这篇论文的价值,推荐!),当然这可能是由于我的数学功底太差。下面是OMP重构算法:
要完全看懂文献1需要反复去读,要随着对压缩感知的理解越来越深反复去看,慢慢地才能消化的,看论文时也没懂什么,只是感觉写的不错,后来看文献2时发现代码里的重构算法是OMP,为了读懂代码于是又回来看文献1,前面三步都能明白,但第四步无论如何也理解不了:“张成空间”?正交投影?呃,实在是不懂……
当然文献2我从另一个角度弄明白了,就是广义逆,这个在前面的已发过博客了,有兴趣可以看Rachel_Zhang的“压缩感知”之“HelloWorld”解读。
但这里的张成空间和正交投影是什么呢?为此我开始翻书,最后锁定查看矩阵分析类的书,先期是看书是:
(美)合恩(Horn,R.A.) 等著,杨奇 译.矩阵分析[M]. 机械工业出版社,2005.
这本书的第2页就说了张成空间的概念,但没看懂,而且后面想要看广义逆时发现居然没讲,一气之下就换了本书,这次的书是:
史荣昌,魏丰 编著.矩阵分析(第3版)[M]. 北京理工大学出版社,2010.
这本书写的自认为比较经典,现在仍然在拜读当中……
从史荣昌的矩阵分析里面我知道了张成空间又称为生成子空间,这在书的第13页1.3节线性子空间中讲到,似乎这的确是一个很简单的概念,一笔带过:
现在我的理解是:所谓生成子空间实际上就是由向量α1,α2,。。。,αs这些向量确定的平面(如果是两个向量的话就是一个普通的平面,如果是三个向量就是一个立体空间吧),当然这组向量很多时候并不是标准正交基,因此有很多时候并不能用它们的线性组成去表示任一个与它们同维的向量,所以才有今天要说的投影矩阵。
正交投影的概念本身其实并不复杂,在史荣昌的矩阵分析第3版中,第106页起的3.4节幂等矩阵、正交投影中就系统地讲解了正交投影的概念。但我看了N多遍也没理解到底是什么意思,其实是不理解正交投影和文献1中OMP重建算法第4步中说的正交投影有什么关系?因为按照文献2中的代码去理解,文献1中所谓的张成空间的正交投影该为:
在网上搜索正交投影,投到最接近的答案是百度知道里的一篇内容:什么是投影矩阵,这个对我的启发很重要,转载如下:
【问】什么是投影矩阵
关于投影矩阵,正交投影 及 超定线性方程组的 关系。谢谢了
【答】多给一点分吧!敲了半个小时,不过也整理了一下
看了之后其实本人也没看懂,可能主要是自己的数学不好,线性代数和矩阵理论都快忘光了。反正文献2的代码也看明白了,后来就想放弃所谓的“正交投影”这一知识点。
直到昨天看一篇论文时:(Joel A. Tropp,etc. RANDOM FILTERS FOR COMPRESSIVE SAMPLING AND RECONSTRUCTION[A]. Proc ICCASSP 2006[C]. Toulouse,France,2006.)
这里在步骤B时又出现了Pt,这里称之为 the orthogonal projector onto the span of the t columns,对于里面的orthogonal projector我在有道里查了一下解释为正交投影,但在有道的网络释义一项里解释为“正交射影算子”,这开始让我怀疑Pt的名字究竟应该是什么,于是又看了前面百度知道的内容,认识到问题是“什么是投影矩阵”,于是我开始在网上搜索“投影矩阵”,在百度知道里搜到了怎么计算投影矩阵呀?,如下:
这里的P就是我们要的结果一致了:P=A*(A^TA)^{-1}A^T,因此在文献1里提到的正交投影实际上应该是投影矩阵(正交投影和投影矩阵应该不是一个概念吧,至少我个人认为不是一个东东),绕了一大圈终于开始走向正轨了……
在搜索投影矩阵时搜到了一篇博客:投影矩阵与最小二乘(一),作者一共写了三篇,写的很不错,从作者第一篇中开头提到“Strang教授”,搜索一下此人可以搜到麻省理工的开放课程线性代数,在暴风影音里可以搜到,这个公开课共35讲,其中第16讲是投影矩阵和最小二乘,估计投影矩阵与最小二乘(一)就是基于这一讲内容的吧,今天我也看过了,讲得挺不错的,计划后续将35讲都看一下,学习压缩感知,线性代数的基础是必备的,35讲在国内也就是个2学分的课而已,坚持一下就可以了。
下面开始讲什么是投影矩阵,主要基于投影矩阵与最小二乘(一)和公开课16讲,所以思路和投影矩阵与最小二乘(一)也差不多了。
========================正文========================
公开课第16讲中提到,如果有三个点(1,1),(2,2),(3,2),希望有一条线y=C+Dt来逼近这些点,由这三个点实际上可以得到三个方程:
C+D*1=1
C+D*2=2
C+D*3=2
这个方程可以写成矩阵的形式:
这个方程组由于矩阵A的秩R(A)=2(秩等于列的个数,即矩阵A的列是线性无关的),小于增广矩阵的秩R(A,b)=3,因此方程组无解,即不存在一条直线穿过这三个点(1,1),(2,2),(3,2)。
所以我们就用最小二乘法拟合一条直线使这三个点到直线的距离的平方和最小。怎么求拟合曲线的C和D呢?
这个过程是从数学上来推导的,从几何意义上如何来理解这个问题呢?
首先对于矩阵A来讲共有两个列向量,A=[a1,a2],两个向量会确定一个平面(个人理解就此平面就是由A的列向量生成的子空间),而对于b来说也是一个向量,求C和D的过程实际上就是用向量a1和a2的线性组合来表示向量b的过程,即:
但实际上,向量b并不在向量a1和a2确定的平面上,即不能用向量a1和a2的线性组合来表示向量b,这时可以用向量a1和a2表示一个向量p,使向量p最接近于向量b,或者说使||b-p||2最小,即前面说的用最小二乘法拟合一条直线使这三个点到直线的距离的平方和最小。从几何上我们知道这个向量p就是向量b在由a1和a2所确定的平面上的正交投影。如何由向量b得到向量p呢?即如何得到向量b的正交投影p呢?我们可以通过一个矩阵变换来实现:
因此,正交投影和投影矩阵是不一样子的,正交投影p是向量b在平面(由矩阵A的列向量a1和a2确定)上正交投影,而投影矩阵是从向量b变换到其正交投影p过程中的变换矩阵P:
这里可以用一幅空间里的图来表示:
========================结语========================
至此,投影矩阵说完了,有新的感悟再继续写吧……
===================补充(2014.11.26)=================
百度了一下“压缩感知 投影矩阵”,发现会搜到好多论文,突然意识到他们论文里提到的“投影矩矩”不是我这里在数学上所说的“投影矩阵”:
y=Φx,其中x为信号,y为观测值,Φ即为他们所说的投影矩阵,一般还称为观测矩阵
x=Ψθ,其中Ψ为稀疏矩阵或稀疏基
从这个问题里也反应了叫法不一样的不利之处。
我们这里经过投影矩阵P的变换,由向量b得到向量p,由于p是b的正交投影,所以这个矩阵P应该称为正交投影矩阵吧,感觉再写长一点更好:正交投影变换矩阵,这样就混淆不了概念了。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185786.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...