摘要:特征分解、奇异值分解、Moore-Penrose广义逆函数

矩阵分解

特征向量和特征值

我们在《线性代数》科学习过方阵的特征向量和特征值。

λ 又找A确实不是一件容易事。好在,我们可以把这事儿交给Tensorflow去解决。我们可以用来求特征值,相当于MATLAB的eig函数,只不过名字长了点。

例:

附:MATLAB例:

也就是说,A1矩阵有3个特征值-1,3,3。

特征分解

我们把用self_adjoint_eigvals求出来的向量转换成对角矩阵:

奇异值分解

对于多数方阵,我们可以进行特征值分解。如果对于非方阵该怎么办呢?答案是我们有类似的奇异向量(Singular vector)和奇异值(singular value). 通过奇异向量和奇异值,我们可以把非方阵进行奇异值分解(singular value decomposition),简称svd.

我们可以通过函数来做奇异值分解,例:

As矩阵是23的矩阵。所以U是22的,而V是3*3的。第1个值是奇异值,[9.508032 , 0.77286964],它是D的对角线上值,其它位置为0.

D的完整值为:

三个矩阵的完整值为:

我们来验算一下这个奇异值分解是不是正确的,别忘了V是要转置的:

虽然是有点浮点计算误差,但是结果还确实是我们分解前的那个。关于计算误差的问题,在机器学习中也自然是重要问题,后面会讨论。

Moore-Penrose广义逆

铺垫了这么多,其实我们是在为解线性方程组奋斗。我们在第一节Tensorflow的线性回归例子,还有神经网络的例子都看到,求解线性方程组是重要的运算。

形如Ax=b的线性方程组,如果A有逆矩阵就好办了,两边分别右乘A逆就可以解出方程组。

但是问题是,机器学习中有很多方程是欠定的(underdetermined)。

这时候我们就需要一种类似于逆矩阵的工具 - Moore-Penrose广义逆(pseudoinverse)。

Moore-Penrose广义逆定义如下:

这个定义在计算时是没法使用的,我们使用另一个公式来算

广义逆简史

首先复习一下逆阵的概念,如果一个矩阵有逆阵,条件为:

  1. 必须是方阵
  2. 行列式不能为0

美国数学家Moore于1920年逆矩阵的概念推广到任意矩阵上,使用的方法是正交投影算子来定义的。

1955年,英国数学家Penrose用下面的方程组来定义广义逆:

1.《MATLAB如何取矩阵的逆矩阵,MATLAB求矩阵的逆矩阵,Matlab取逆矩阵》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《MATLAB如何取矩阵的逆矩阵,MATLAB求矩阵的逆矩阵,Matlab取逆矩阵》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3211140.html