#!/usr/bin/env python # coding: utf-8 # # 第三十四讲:左右逆和伪逆 # # 前面我们涉及到的逆(inverse)都是指左、右乘均成立的逆矩阵,即$A^{-1}A=I=AA^{-1}$。在这种情况下,$m\times n$矩阵$A$满足$m=n=rank(A)$,也就是满秩方阵。 # # ## 左逆(left inserve) # # 记得我们在最小二乘一讲(第十六讲)介绍过列满秩的情况,也就是列向量线性无关,但行向量通常不是线性无关的。常见的列满秩矩阵$A$满足$m>n=rank(A)$。 # # 列满秩时,列向量线性无关,所以其零空间中只有零解,方程$Ax=b$可能有一个唯一解($b$在$A$的列空间中,此特解就是全部解,因为通常的特解可以通过零空间中的向量扩展出一组解集,而此时零空间只有列向量),也可能无解($b$不在$A$的列空间中)。 # # 另外,此时行空间为$\mathbb{R}^n$,也正印证了与行空间互为正交补的零空间中只有列向量。 # # 现在来观察$A^TA$,也就是在$m>n=rank(A)$的情况下,$n\times m$矩阵乘以$m\times n$矩阵,结果为一个满秩的$n\times n$矩阵,所以$A^TA$是一个可逆矩阵。也就是说$\underbrace{\left(A^TA\right)^{-1}A^T}A=I$成立,而大括号部分的$\left(A^TA\right)^{-1}A^T$称为长方形矩阵$A$的左逆 # # $$A^{-1}_{left}=\left(A^TA\right)^{-1}A^T$$ # # 顺便复习一下最小二乘一讲,通过关键方程$A^TA\hat x=A^Tb$,$A^{-1}_{left}$被当做一个系数矩阵乘在$b$向量上,求得$b$向量投影在$A$的列空间之后的解$\hat x=\left(A^TA\right)^{-1}A^Tb$。如果我们强行给左逆左乘矩阵$A$,得到的矩阵就是投影矩阵$P=A\left(A^TA\right)^{-1}A^T$,来自$p=A\hat x=A\left(A^TA\right)^{-1}A^T$,它将右乘的向量$b$投影在矩阵$A$的列空间中。 # # 再来观察$AA^T$矩阵,这是一个$m\times m$矩阵,秩为$rank(AA^T)=nm=rank(A)$。对称的,其左零空间中仅有零向量,即没有行向量的线性组合能够得到零向量。 # # 行满秩时,矩阵的列空间将充满向量空间$C(A)=\mathbb{R}^m$,所以方程$Ax=b$总是有解集,由于消元后有$n-m$个自由变量,所以方程的零空间为$n-m$维。 # # 与左逆对称,再来观察$AA^T$,在$n>m=rank(A)$的情况下,$m\times n$矩阵乘以$n\times m$矩阵,结果为一个满秩的$m\times m$矩阵,所以此时$AA^T$是一个满秩矩阵,也就是$AA^T$可逆。所以$A\underbrace{A^T\left(AA^T\right)}=I$,大括号部分的$A^T\left(AA^T\right)$称为长方形矩阵的右逆 # # $$A^{-1}_{right}=A^T\left(AA^T\right)$$ # # 同样的,如果我们强行给右逆右乘矩阵$A$,将得到另一个投影矩阵$P=A^T\left(AA^T\right)A$,与上一个投影矩阵不同的是,这个矩阵的$A$全部变为$A^T$了。所以这是一个能够将右乘的向量$b$投影在$A$的行空间中。 # # 前面我们提及了逆(方阵满秩),并讨论了左逆(矩阵列满秩)、右逆(矩阵行满秩),现在看一下第四种情况,$m\times n$矩阵$A$不满秩的情况。 # # ## 伪逆(pseudo inverse) # # 有$m\times n$矩阵$A$,满足$rank(A)\lt min(m,\ n)$,则 # # * 列空间$C(A)\in\mathbb{R}^m,\ \dim C(A)=r$,左零空间$N\left(A^T\right)\in\mathbb{R}^m,\ \dim N\left(A^T\right)=m-r$,列空间与左零空间互为正交补; # * 行空间$C\left(A^T\right)\in\mathbb{R}^n,\ \dim C\left(A^T\right)=r$,零空间$N(A)\in\mathbb{R}^n,\ \dim N(A)=n-r$,行空间与零空间互为正交补。 # # 现在任取一个向量$x$,乘上$A$后结果$Ax$一定落在矩阵$A$的列空间$C(A)$中。而根据维数,$x\in\mathbb{R}^n,\ Ax\in\mathbb{R}^m$,那么我们现在猜测,输入向量$x$全部来自矩阵的行空间,而输出向量$Ax$全部来自矩阵的列空间,并且是一一对应的关系,也就是$\mathbb{R}^n$的$r$维子空间到$\mathbb{R}^m$的$r$维子空间的映射。 # # 而矩阵$A$现在有这些零空间存在,其作用是将某些向量变为零向量,这样$\mathbb{R}^n$空间的所有向量都包含在行空间与零空间中,所有向量都能由行空间的分量和零空间的分量构成,变换将零空间的分量消除。但如果我们只看行空间中的向量,那就全部变换到列空间中了。 # # 那么,我们现在只看行空间与列空间,在行空间中任取两个向量$x,\ y\in C(A^T)$,则有$Ax\neq Ay$。所以从行空间到列空间,变换$A$是个不错的映射,如果限制在这两个空间上,$A$可以说“是个可逆矩阵”,那么它的逆就称作伪逆,而这个伪逆的作用就是将列空间的向量一一映射到行空间中。通常,伪逆记作$A^+$,因此$Ax=(Ax),\ y=A^+(Ay)$。 # # 现在我们来证明对于$x,y\in C\left(A^T\right),\ x\neq y$,有$Ax,Ay\in C(A),\ Ax\neq Ay$: # # * 反证法,设$Ax=Ay$,则有$A(x-y)=0$,即向量$x-y\in N(A)$; # * 另一方面,向量$x,y\in C\left(A^T\right)$,所以两者之差$x-y$向量也在$C\left(A^T\right)$中,即$x-y\in C\left(A^T\right)$; # * 此时满足这两个结论要求的仅有一个向量,即零向量同时属于这两个正交的向量空间,从而得到$x=y$,与题设中的条件矛盾,得证。 # # 伪逆在统计学中非常有用,以前我们做最小二乘需要矩阵列满秩这一条件,只有矩阵列满秩才能保证$A^TA$是可逆矩阵,而统计中经常出现重复测试,会导致列向量线性相关,在这种情况下$A^TA$就成了奇异矩阵,这时候就需要伪逆。 # # 接下来我们介绍如何计算伪逆$A^+$: # # 其中一种方法是使用奇异值分解,$A=U\varSigma V^T$,其中的对角矩阵型为$\varSigma=\left[\begin{array}{c c c|c}\sigma_1&&&\\&\ddots&&\\&&\sigma_2&\\\hline&&&\begin{bmatrix}0\end{bmatrix}\end{array}\right]$,对角线非零的部分来自$A^TA,\ AA^T$比较好的部分,剩下的来自左/零空间。 # # 我们先来看一下$\varSigma$矩阵的伪逆是多少,这是一个$m\times n$矩阵,$rank(\varSigma)=r$,$\varSigma^+=\left[\begin{array}{c c c|c}\frac{1}{\sigma_1}&&&\\&\ddots&&\\&&\frac{1}{\sigma_r}&\\\hline&&&\begin{bmatrix}0\end{bmatrix}\end{array}\right]$,伪逆与原矩阵有个小区别:这是一个$n\times m$矩阵。则有$\varSigma\varSigma^+=\left[\begin{array}{c c c|c}1&&&\\&\ddots&&\\&&1&\\\hline&&&\begin{bmatrix}0\end{bmatrix}\end{array}\right]_{m\times m}$,$\varSigma^+\varSigma=\left[\begin{array}{c c c|c}1&&&\\&\ddots&&\\&&1&\\\hline&&&\begin{bmatrix}0\end{bmatrix}\end{array}\right]_{n\times n}$。 # # 观察$\varSigma\varSigma^+$和$\varSigma^+\varSigma$不难发现,$\varSigma\varSigma^+$是将向量投影到列空间上的投影矩阵,而$\varSigma^+\varSigma$是将向量投影到行空间上的投影矩阵。我们不论是左乘还是右乘伪逆,得到的不是单位矩阵,而是投影矩阵,该投影将向量带入比较好的空间(行空间和列空间,而不是左/零空间)。 # # 接下来我们来求$A$的伪逆: # # $$A^+=V\varSigma^+U^T$$