跳到正文
格致开物MATHWIKI

伪逆

伪逆通常指摩尔—彭若斯伪逆(Moore–Penrose pseudoinverse),记为 A+。它给任意实矩阵 A 和目标向量 b 选出一个确定的 x=A+b:先使残差长度 ‖Ax−b‖ 最小;若这样的参数不止一个,再取其中长度 ‖x‖ 最小的那个。矩阵可以是长方形或秩不足,故这里的“逆”并不表示总能把 b 精确还原。

三次观测只测到了两个参数的和

考虑一个合成教学例子:三次观测分别为 b=(1,2,3)𝖳,模型每次都只输出两个参数的和 s=x1+x2。其矩阵为 A=(111111),Ax=(s,s,s)𝖳. 不可能让同一个 s 同时等于一、二、三。残差平方和按 s 展开为 (s−1)2+(s−2)2+(s−3)2=3(s−2)2+2. 因此所有最小二乘解都满足 x1+x2=2,最小残差平方和为二。数据只识别参数之和,不能单凭观测分别识别两个参数。

在这条解直线上写 x=(t,2−t),参数长度平方为 ‖x‖2=t2+(2−t)2=2(t−1)2+2. 它在 t=1 时最小,故伪逆选 x=(1,1)。图中的直线是全部最小二乘参数,虚线从零指向最近点;其他点也同样拟合数据,却需要更大的参数长度。

参数平面内所有最小二乘解位于横纵坐标之和为二的直线上,其中一一是离零点最近的解
同一拟合结果对应整条参数直线;伪逆沿直线选离原点最近的点。

用奇异值分解算出这一个解

这个 A 只有一个非零奇异方向。令 u=13(1,1,1)𝖳,v=12(1,1)𝖳. 对应的伸缩倍数是 σ=6。 直接计算 A=σuv𝖳。把非零伸缩倍数倒过来、把输入输出方向对调,得到 A+=v1σu𝖳=16(111111). 于是 A+b=16(6,6)𝖳=(1,1)𝖳,与上面的直接最小化相同。若把观测换为 (3,3,3),方程 Ax=b 真有无限多个精确解 x1+x2=3;伪逆给出其中最短的 (3/2,3/2)。

一般公式及最短解的证明

若 A 的秩为 r,奇异值分解给出 A=UrΣrVr𝖳,其中 Σr=diag⁡(σ1,…,σr) 且每个 σi>0。定义 A+=VrΣr−1Ur𝖳=∑i=1r1σiviui𝖳. 当 A=0 时和式为空,约定 A+=0。这个定义不把零奇异值取倒数;零方向恰是不能从输出中恢复的输入方向。

把目标分成 b=∑i=1rβiui+b⊥,其中 b⊥ 与 A 的列空间垂直。任意输入可写成 x=∑i=1rαivi+z,其中 z∈ker⁡A。两组正交性给出 ‖Ax−b‖2=∑i=1r(σiαi−βi)2+‖b⊥‖2. 要使残差最短,每个可调的平方项都取零,即 αi=βi/σi;无法改变的误差是 b⊥。此时还可以任意加上 z∈ker⁡A 而不改变预测,但 ‖x‖2=∑i=1rαi2+‖z‖2 在 z=0 时唯一最小。因此开篇的两级选择由公式完整推出,得到 x=A+b。图中从零到 (1,1) 的垂线,正是这个“去掉核方向 z”的二维情形。

投影、普通逆与计算误差

从分解式直接相乘,AA+=UrUr𝖳 是输出空间到列空间的正交投影;A+A=VrVr𝖳 是输入空间到行空间的正交投影。于是 AA+b 是模型能够给出的最近预测,但一般不等于 b。在三次观测例子中,它把 (1,2,3) 投到 (2,2,2);差 (−1,0,1) 与列向量 (1,1,1) 垂直。

若 A 是可逆方阵,两组方向覆盖整个输入和输出,投影均为单位矩阵,此时 A+=A−1。若 A 满列秩,则在数学上有 A+=(A𝖳A)−1A𝖳;这是一个恒等式,不意味着浮点程序应直接求逆并形成 A𝖳A。列接近相关时可用QR分解求满列秩最小二乘;真正秩不足或需检查近零奇异值时,SVD 会显出哪些方向不可辨别。

小奇异值的倒数也会放大相应输出方向的误差。例如 D=diag⁡(1,0.001) 的伪逆等于普通逆 diag⁡(1,1000);第二个观测坐标改变 0.001,恢复的第二个输入坐标就改变一。若实际数据含噪,是否舍弃小奇异方向或加入正则化,需要结合测量精度和模型目的决定,不能只凭“有伪逆”断言参数可靠。

参考资料与知识联系