什么是特征向量,特征值,矩阵分解
[1.特征的数学意义]
还是太抽象了,具体的说,求特征向量的关系,就是把矩阵A所代表的空间,进行正交分解,使得A的向量集合可以表示为每个向量a在各个特征向量上面的投影长度。例如A是m*n的矩阵,n>m,那么特征向量就是m个(因为秩最大是m),n个行向量在每个特征向量E上面有投影,其特征值v就是权重。那么每个行向量现在就可以写为Vn=(E1*v1n,E2*v2n...Em*vmn),矩阵变成了方阵。如果矩阵的秩更小,矩阵的存储还可以压缩。再:由于这些投影的大小代表了A在特征空间各个分量的投影,那么我们可以使用最小2乘法,求出投影能量最大的那些分量,而把剩下的分量去掉,这样最大限度地保存了矩阵代表的信息,同时可以大大降低矩阵需要存储的维度,简称PCA方法。
举个例子,对于x,y平面上的一个点(x,y),我对它作线性变换,(x,y)*[1,0;0,-1],分号代表矩阵的换行,那么得到的结果就是(x,-y),这个线性变换相当于关于横轴x做镜像。我们可以求出矩阵[1,0;0,-1]的特征向量有两个,[1,0]和[0,1],也就是x轴和y轴。什么意思呢?在x轴上的投影,经过这个线性变换,没有改变。在y轴上的投影,乘以了幅度系数-1,并没有发生旋转。两个特征向量说明了这个线性变换矩阵对于x轴和y轴这两个正交基是线性不变的。对于其他的线性变换矩阵,我们也可以找到类似的,N个对称轴,变换后的结果,关于这N个对称轴线性不变。这N个对称轴就是线性变换A的N个特征向量。这就是特征向量的物理含义所在。所以,矩阵A等价于线性变换A。
对于实际应用的矩阵算法中,经常需要求矩阵的逆:当矩阵不是方阵的时候,无解,这是需要用到奇异值分解的办法,也就是A=PSQ,P和Q是互逆的矩阵,而S是一个方阵,然后就可以求出伪逆的值。同时,A=PSQ可以用来降低A的存储维度,只要P是一个是瘦长形矩阵,Q是宽扁型矩阵。对于A非常大的情况可以降低存储量好几个数量级。
什么是特征矩阵和特征值?我们用整体论来考虑,假设P(A)=(1,2,3)是A的3个特征向量。那么P(A^2)就是(1^2,2^2,3^2),P可以看作是一种算子。当然,算子的特性是需要用部分/细节详细证明的。一旦证明,就可以作为整体的特征。特征值有什么特性?说明矩阵可以分解成N维特征向量的投影上面,这N个特征值就是各个投影方向上的长度。由于n*n矩阵A可以投影在一个正交向量空间里面,那么任何N维特征向量组成的矩阵都可以是线性投影变换矩阵,那么I就是一个同用的线性变换投影矩阵。所以对于特征值m,一定有是够成了一个没有线性无关向量的矩阵Aa=ma两边同乘以I得到Aa=maI,所以(A-mI)a=0有非0解,那么|A-mI|=0(可以用反正法,如果这个行列式不是0,那么N个向量线性无关,在N维空间中只能相交于原点,不可能有非0解)。所以可以推出一些很有用的性质,例如A=[1/2,1,1;0,1/3,1;0,0,1/5],那么只要满足|A-mI|=0的值就是特征值,显然特征值数组立即可以得到(1/2,1/3,1/5)。一个n*n的矩阵A,秩=1,那么最大线性无关组=1组,特征向量=1个,任意n维非零向量都是A的特征向量。特征向量本身不是定死的,这就好比坐标系可以旋转一样。一旦特征向量的各个方向确定了,那么特征值向量也就确定了。求特征值的过程就是用特征方程:|A-mE|=0,P(1/A)=1/P(A),可以证明。有什么物理含义呢?一个N维线性无关的向量,去掉其中的一维,那么就有至少两个向量是线性相关的了,所以行列式=0。特征矩阵有什么作用?把矩阵变化为正定矩阵,也就是A=P^-1BP,这样的变换,A是对角阵。
线性代数的研究,是把向量和矩阵作为一个整体,从部分的性质出发,推到出整体的性质,再由整体的性质得到各种应用和物理上的概念。当矩阵A是一个符号的时候,它的性质会和实数a有很多相似的地方。科学的定理看起来总是递归着的。再举一个例子,高数的基本概念有微分,积分,倒数,那么我立刻可以想到中值定理就应该有3个,形式上分别是微分,积分和倒数。
2.今后在识别的时候同一类的图像(例如,来自同一个人的面部照片),认为是A的线性相关图像,它乘以这个特征向量,得到n个数字组成的一个矢量b,也就是B在特征空间的投影。那么a和b之间的距离就是我们判断B是不是A的准则。
不过,PCA有天生的缺点,就是线性矢量的相关性考察有"平移无关性"优点的同时,也完全忽略了,2维图形中,矢量分量之间的顺序是有意义的,顺序不同可以代表完全不同的信息。还有,就是图像B必须是A的某种伸缩(由特征向量空间决定的),才能被很好的投影到A的特征向量空间里面,如果B包含了A中的某种旋转因素,那么PCA可以彻底失效。所以实际应用中PCA的方法做图像识别,识别率并不高,它要求图像有某种严格的方向对齐和归一化。所以PCA一般不用来做直接的特征提取而是用来做特征矩阵的降维。当然,降维的结果用于分类并不理想,我们可以进一步做最小二承法拉开类间距离的Fisher变换。但是Fisher变换会引入新的弱点,那就是对于训练类别的数据变得更敏感了,分类效果上升的代价是通用性下降,当类型数量急剧膨胀的时候,分类效果的函数仍然是直线下降的----但是还是比直接PCA的分类效果好得多。PCA"主观"的认为,一个类型的第N+1个矩阵可以由之前已知的[1,N]个矩阵通过拉成向量来线性表出。显然这只是一个美好的主观愿望,因为即使新的输入矩阵是原有矩阵作了一些行列的初等变换如交换等,这种拉直以后的线性表出也可能根本就不存在(2维的PCA同样无法克服这个客观不存在的设定),于是,当应用到实际的时候,只能试图做优化没,用最小二乘距离来判定,"认为"那个矩阵就是属于某个分类。由于PCA训练的特征矩阵是一个类别一个矩阵,这些矩阵构成的子空间之间又无法保证正交,于是投影的结果也不具有根本意义上的分类特性。这个算法是个实用的算法,但是理论上根本就是无解。
K-L变换是PCA的一个应用形式。假设图像类型C有N个图像,那么把每个图像拉直成一个向量,N个图像的向量组成一个矩阵,求矩阵的特征向量(列向量)。那么用原来的N个图像乘以这些列向量求出平均值,就是我们的特征图像。可以看到特征图像和原图像有相似的地方,但是去掉了和拉伸,平移相关的一些形变信息。在得到了鲁棒性的同时,牺牲了很多精确性。所以它比较适合特定范围图像的Verification工作,也就是判断图像P是不是属于类型C。对比一下神经网络:说白了把函数y=f(x)的映射,变成了[y]=[f(x)]的向量映射。输入输出的点(entry)是固定的。而真实的神经系统,并没有明显的内部处理和外部接口的区分。所以所有的神经网络理论,名字上是神经网络,实质上,差得很远。
在图像处理的问题域中,把图像看成矩阵本身,那么图像的分类问题就是同类矩阵被认为有相同或者代数近似的"不变量"。显然,"同类"是一个主观假设划定的类,而不是通过计算来"确定"的类。这导致了一个问题,所谓的不同类型,其意义是对于人的主观理解能力而言,是先验的,不是通过计算得到的后验,它本身不代表任何数理逻辑上的可判定信息。如果以矩阵的特征向量或者特征值矩阵作为分类的信息,没有任何证据能够避免不同的"类"的矩阵能够有更加近似的特征值。所谓的矩阵分解方法,类内最小距离方法(Fisher),都有一个令人不愉快地前提,那就是本身就要保证类内的矩阵,其欧式距离足够小----这个欧式距离的大小往往又和人的几何拓扑直观不符)。由于矩阵本身不具有预定义的拓扑学信息,那么同类图像间欧式距离增加的时候,无法做到良好的分类。同时,图像的类要分的越多,那么这种子空间之间的交叠现象就越严重,及时再去从每个类别的子空间中去寻找线性不变的子空间或者因子,也无法消除这种交叠性----Fisher算法试图绕过去,但是却付出了严重依赖初始数据的代价和失去通用性的代价。PCA算法试图在统计的意义上得到最好的分类,但是当类型数目增加的时候,以前的参数就作废了,根本无法得到有用的计算流程。由于子空间之间的重叠无法解决,于是分类性便持续下降。原因是什么?就是因为分类本身不是根据线性变换本身的代数特性去得到的,而是先验的非线性"智慧"的人的判断。于是,由于二元运算为离散集合作分类,必须在线性空间的正交划分中进行,导致了逻辑上的不可调和的悖论。非线性的判定是连续的,几何拓扑的,无穷维德,不可分离变量的,根本就不可建模,于是也就是一个不可判定的问题。
那么不用高等代数的思想,实用信号处理的办法提取局部的特征做比较可以达到分类么?这个仍然没有回答"先验"分类的问题,仍然是在一个糟糕的前提下试图寻找勉强能用的途径。如何知道一个矩阵的局部其实对应于另一个矩阵上不同位置的局部呢?这仍然只是一个主观的,直觉主义的判定!计算机不过是纸和笔的变形,它不能理解意义---即使1+1=2这样的运算结果,它本身也不能判定对错。如果它咨询别的计算机来判断对错呢----别的计算机又如何能自我证明对错?根本不能,必须等到一个主体的"人"来观察这个结果,这个结果才会变得有意义。于是就像薛定谔的那只猫一样,她正懒洋洋的晒着太阳冲我微笑呢。形而上学的理论在精妙,也没有超出经验主义的牢笼。
原文链接:http://blog.sina.com.cn/s/blog_49a1f42e0100fvdu.html