你有没有遇到过这样的尴尬?明明方程摆在那里,但系数矩阵偏偏是个“矮个子”或者“高个子”——不是方阵,或者虽然方方正正但行列式等于零,根本没有普通的逆矩阵。学生们急得直跺脚:“这题还怎么做?”别慌,伪逆矩阵就是那个专门收拾“烂摊子”的救火队员。它就像一支神奇的“万能钥匙”:即使原配钥匙丢了,它也能帮你把门打开——虽然不是完全精确的匹配,但已经是所有可能中最接近的方案了。本文要讲的伪逆矩阵,正是线性代数中专门应对这种“不可逆也能解方程”局面的利器。它不只是数学家抽屉里的理论玩具,更是数据拟合、机器学习回归、信号处理等 AI 领域中最常用的工具之一。 想象这样一个场景:你在一个陌生城市里迷路了,手里只有一张残缺不全的地图——有些街道被水渍弄模糊了,有些区块干脆没有绘制。你没法找到一条完全精确的路线,但你可以找到一条误差最小的路线,照样到达目的地附近。伪逆做的事情,就是这种“残缺信息下的最佳推算”。它用最小二乘的思想,找到最接近精确解的答案,并广泛应用于超定方程组(方程比未知数多)和欠定方程组(未知数比方程多)的求解。接下来,让我们一起揭开伪逆矩阵的神秘面纱。
作为 AI 从业者,无论是做数据拟合、线性回归,还是理解 Ridge 正则化背后的数学原理,伪逆矩阵都是你绕不开的核心工具。掌握它,你才能从容应对那些“没有标准答案”的工程问题,并为后续学习更复杂的优化算法打下坚实基础。
可视化演示
通过SVD分解重构、最小二乘投影求解和超定/欠定系统对比,直观展示伪逆矩阵如何解决不可逆方程组的求解问题。
本节配有交互动效(进入视口后自动加载,约 3KB)。
SVD分解与伪逆计算 A = UΣV^T 分解为旋转-缩放-旋转 伪逆 A+ = VΣ+U^T 对Σ中非零奇异值取倒数 A+ = V Σ+ U^T 奇异值截断后伪逆提供数值稳定的广义解
伪逆的定义
还记得那张残缺的旧地图吗?当正常的地图(普通逆矩阵)不存在时,伪逆矩阵就是那幅“最佳替代路线图”。在数学世界里,并不是所有矩阵都有逆——矩阵必须是方阵且行列式不为零,才能找到它的“另一半”,让两者相乘得到单位矩阵。可现实问题往往不这么完美:你要拟合一条曲线,但有 100 个数据点、只有 3 个参数;你的传感器矩阵是长方形的,跟本没有方阵特征。这时候,我们需要一种更广义的“逆”。
伪逆矩阵(也称摩尔-彭若斯逆)就是对“逆”这个概念的一次大胆扩展。对于一个任意形状的矩阵 A(可以是长方形,也可以是奇异的方阵),伪逆 A⁺ 满足一个核心目标:当 Ax = b 无精确解时,A⁺b 给出误差最小的近似解。换句话说,普通逆追求“精确还原”,伪逆追求“最优逼近”——就像你用残破的地图导航,虽然没法精确到每一米,但你能走到离目的地最近的位置。
通过这个定义,任何矩阵都有了“逆”——哪怕它本身并不可逆。就像那张残缺的地图虽然不完美,但你总能规划出一条最合理的路线。伪逆因此成为线性代数工具箱里最常用的“万金油”,也是连接理论与工程的最佳桥梁。
- 理解 AᵀA首先计算 A 的转置矩阵 Aᵀ,然后与 A 相乘得到 AᵀA,这是一个方阵,即使原本的 A 是长方形。
- 添加扰动项在 AᵀA 的基础上加上 α 乘以单位矩阵 I,其中 α 是一个很小的正数。这个“微小扰动”让本来可能奇异(不可逆)的 AᵀA 变成可逆矩阵。
- 求逆操作对扰动后的矩阵求逆,再乘上 Aᵀ。这样得到的矩阵对于任意 α > 0 都有定义。
- 取极限令 α 趋向于 0⁺,这个表达式收敛到一个固定的矩阵,就是我们要求的伪逆 A⁺。可以理解为“扰动越来越小,结果越来越精确”。
摩尔彭若斯条件
既然说伪逆是“最佳替代”,那什么样的替代才算“最佳”?数学家摩尔和彭若斯给出了四条铁律,称为摩尔-彭若斯条件(Moore-Penrose conditions)。这四条规律就像检验“真伪逆”的四道关卡——通过全部关卡,才能拿到“最佳替代”的合格证书。这就像招聘一个高级管家:不但要能把房间收拾好(第一条),自己也要保持整洁规范(第二条),还得清楚自己负责的区域界限(第三条和第四条)。
正式地,A⁺ 是 A 的伪逆,当且仅当以下四个条件同时成立。这四个条件不仅定义了伪逆,还保证了它的唯一性——就像一份独一无二的身份证号,任何矩阵的伪逆都只有一个,绝无二致。
摩尔-彭若斯条件让我们对伪逆有了绝对信心:不管你的矩阵多么“奇形怪状”,伪逆都客观存在且唯一。这就像那张残破地图,虽然街道信息不全,但“最优路线”是客观存在且唯一的——数学保证了这一点,我们只需要去找到它。
- 条件 1回到原点:AA⁺A = A,意思是先经过 A⁺ 投影,再经过 A 变换,最终还是回到 A 的作用效果。这说明伪逆不是“乱操作”,它对 A 起到的是保留作用。
- 条件 2投影幂等:A⁺AA⁺ = A⁺,说明 A⁺ 本身在 A 的投影下保持不变,也就是说 A⁺ 已经是“稳定状态”了。
- 条件 3对称性:(AA⁺)ᵀ = AA⁺,这个矩阵描述的是一个正交投影,它把向量投影到 A 的列空间上,且投影方向是垂直的。
- 条件 4另一个对称性:(A⁺A)ᵀ = A⁺A,同理,这个矩阵描述的是把向量投影到 A 的行空间上的正交投影。
SVD求伪逆
现在我们知道伪逆存在且唯一,但具体怎么算?最优雅、最通用的方法就是借助奇异值分解(SVD)。SVD 可以被理解为把任意矩阵 A 拆解成三个基本“积木块”的拼图:一个旋转(U)、一个拉伸(Σ)、又一个旋转(Vᵀ)。而伪逆的 SVD 公式堪称线性代数的“神来之笔”:只需要把拉伸量取倒数再转置重新拼回去,就得到伪逆了。
这就像修车一样:把汽车(矩阵 A)拆成零件(分解为 U、Σ、V),把磨损的齿轮(奇异值)翻新成新的(取倒数),再重新组装起来(得到 A⁺)。整个过程流畅清晰,而且适用于任何矩阵——不管它是不是方阵、是不是满秩。
其中 Σ 是对角阵(可能不是方阵),它的对角线上的元素是奇异值 σᵢ。Σ⁺ 则是把 Σ 中每个非零奇异值取倒数,非零奇异值的个数 r = rank(A)。
SVD 方法最大的魅力在于它的普适性:不需要判断矩阵是否可逆、是否满秩,统一套用这个流程即可。这也是为什么在 Python 的 numpy.linalg.pinv 内部,底层就是用 SVD 来计算伪逆的。就像一把万能瑞士军刀,开瓶器、螺丝刀、剪刀全都能搞定。
- 奇异值分解对任意矩阵 A,先做 SVD,得到 A = UΣVᵀ。U 和 V 是正交矩阵(旋转),Σ 是对角矩阵(拉伸)。
- 定义 Σ⁺Σ⁺ 是把 Σ 转置后,再把对角线上的非零奇异值取倒数。换句话说,(Σ⁺)ᵢᵢ = 1/σᵢ(如果 σᵢ ≠ 0),否则为 0。
- 伪逆的 SVD 形式将 U 和 V 的位置互换(因为转置的逆就是它本身),中间插入 Σ⁺,就得到 A⁺。
超定方程组
现实中最常见的情况之一就是超定方程组——方程的数量比未知数的数量多。想象你在一个十字路口,有 3 个交通摄像头同时估算同一辆车的位置,每个摄像头都有一定误差。你不指望它们给出完全一致的答案,但你可以综合所有信息,得到误差最小的定位估计。这正是超定方程组和伪逆的工作方式。
数学上,超定方程组通常没有精确解。因为方程数太多,往往存在矛盾——没有一组 (x₁, x₂) 能同时满足所有方程。这时候求解 Ax = b 就变成寻找使误差最小的 x:minimize ‖Ax − b‖²,这正是最小二乘问题的核心思想。伪逆给出的 A⁺b 正是这个最小二乘解。
你看,伪逆在超定方程中不是“硬碰硬”地解方程,而是“软着陆”地找最优。这就像那个聪明的导航员:当地图信息互相矛盾时,他选的路线不是完全满足每一条信息,而是让整体偏差最小。数据拟合和回归分析中的大多数场景,本质上都是在解一个超定方程组——数据点比参数多得多,伪逆正是那把最称手的工具。
- 定义残差残差 r = Ax − b,表示预测值与真实值之间的差距。我们希望这个差距向量尽可能短。
- 目标函数最小化残差的平方和,即目标函数 J = rᵀr = ‖Ax − b‖²。
- 求导为零对 J 关于 x 求导并令导数为零(极值条件),可推导出正规方程。
- 求解正规方程由 AᵀAx = Aᵀb,当 AᵀA 可逆时,得到 x* = (AᵀA)⁻¹Aᵀb,这就是伪逆解。
欠定方程组
与超定方程组相反,欠定方程组是未知数比方程多。这种情况在科学和工程中也屡见不鲜:比如你只有 2 个测量数据,却想还原一个 3 维向量。这时候方程不够用了,解有无数多个——就像你只知道一个点在某个平面上,却没法确定它在平面上的确切位置。但伪逆能帮你做出选择:在所有可能的解中,挑选范数(向量长度)最小的那一个。
欠定方程组 Ax = b 的解一般构成一个仿射子空间:x = x₀ + null(A) 中的任意向量。伪逆选择的解 x⁺ = A⁺b 是这个集合中模长最小的,即 x⁺ 垂直于零空间。这好比一根长绳被钉在两面墙之间(对应约束方程),你拉直它时它处于最省力的状态——那是最短的物理状态,就是伪逆选择的解。
欠定场景在机器学习特征选择、信号压缩感知等领域非常重要:当特征数远超样本数时,解空间巨大,伪逆帮助我们选出一个表达最简单(范数最小)的答案。这正像一位经验丰富的侦探:面对一堆线索和多个可能的真相,他选择那个最简洁、最省力的解释——奥卡姆剃刀原则。
- 解的集合Ax = b 的解可以写成 x = x₀ + z,其中 x₀ 是特解,z 属于 A 的零空间 null(A)。
- 范数最小化在这些解里找一个模长最小的,即 minimize ‖x‖²。
- 伪逆解利用拉格朗日乘子法或几何投影,得到最优解是 x⁺ = A⁺b,并且它与零空间正交。
最小二乘关联
伪逆和最小二乘像是硬币的两面:伪逆是为了解最小二乘问题而生的最佳工具,最小二乘则是伪逆最自然的注解。回到我们的地图比喻:残缺地图上你要找到“离目的地最近”的路线,这个“最近”的度量,就是最小二乘的平方距离。伪逆解出来的 x⁺,恰好是让残差平方和最小的那个点。
两者之间的纽带正是正规方程(normal equations)。当我们考虑目标函数 ‖Ax − b‖²,对它求梯度并令其为零,就会导出:
当 AᵀA 可逆时,最小二乘解就是伪逆解;当 AᵀA 不可逆时(例如矩阵缺乏列满秩),伪逆变身为那把更稳的钥匙,用 SVD 的方式照常给出最小二乘意义下的解。
伪逆不仅统一了最小二乘的所有情形(满秩、不满秩、超定、欠定),还提供了统一的计算路径。这就好比你的导航工具不仅有精确的街道图,还可以在没有 MAP 的时候用 GPS 定位拼出一张最接近实际的地图。从工程的角度看,伪逆让我们可以在各种“坏条件”下稳定地求解最小二乘问题,这也是它在机器学习和数据分析中被广泛使用的原因。
- 写目标函数最小二乘目标函数为残差的二范数平方:J(x) = ‖Ax − b‖² = (Ax − b)ᵀ(Ax − b)。
- 展开表达式展开得到 J(x) = xᵀAᵀAx − 2bᵀAx + bᵀb。
- 梯度为零对 x 求导并令结果为零:∇J = 2AᵀAx − 2Aᵀb = 0。
- 解出最小二乘解化简后得 AᵀAx = Aᵀb,故 x_ls = A⁺b。
性质与应用
伪逆不只是定义漂亮,它还有一堆实用的好性质。就像一位全能选手,无论球类、田径还是游泳,样样都有出色表现。掌握这些性质,你就能在任何场景中自如使用伪逆。以下几条是最常用的:
首先,伪逆是对普通逆的自然扩展:若 A 可逆,则 A⁺ = A⁻¹。其次,(A⁺)⁺ = A,伪逆的伪逆回到自己,就像倒带一样。此外,伪逆满足 (Aᵀ)⁺ = (A⁺)ᵀ。如果 A 是列满秩,A⁺ = (AᵀA)⁻¹Aᵀ;如果行满秩,A⁺ = Aᵀ(AAᵀ)⁻¹。这些性质让伪逆在不同场景下都能灵活变形。
在 AI 应用中,伪逆最核心的舞台包括:线性回归(用最小二乘拟合数据),Ridge 回归(正则化后仍然可以用伪逆解析解),以及处理病态问题(当 AᵀA 接近奇异时,用 SVD 截断的伪逆来稳定结果)。
这个式子看起来和伪逆的极限定义类似——正则化就是给特征矩阵加一个“微小扰动” λI,从而保证可逆性,这与伪逆的极限定义异曲同工。可以毫不夸张地说,理解伪逆是理解正则化的数学直觉之门。
无论是 AI 工程师跑线性模型,还是数据科学家做特征分析,甚至研究员理解正则化方法,伪逆都是那个默默在背后支撑的核心工具。就像 GPS 导航仪中的底层算法,虽然用户看不到,但每一步决策都离不开它。
- 看线性回归线性回归问题中,预测目标 y 关于特征 X 的关系是 y = Xβ + ε,任务是最小化 ‖Xβ − y‖²。
- 伪逆解最优参数 β* = X⁺y。这是伪逆最直接的应用。
- Ridge 正则化在目标函数里加入惩罚项 λ‖β‖²,防止过拟合。其解析解为 (XᵀX + λI)⁻¹Xᵀy。
- 联系伪逆这个公式实际上就是伪逆极限定义在 α = λ 时的近似——只要 λ 不太大,β_ridge 就和伪逆解 X⁺y 很接近。
数值计算实现
理论讲完了,实际操作才是关键。在 Python 中,我们不需要自己写 SVD,只需要调用 numpy.linalg.pinv 一行代码,就能求解任何矩阵的伪逆。但理解其内部原理仍然非常重要——特别是在处理病态矩阵、噪声敏感任务时,你需要知道什么时候用截断的伪逆(truncated SVD)来稳定结果。
数值上计算伪逆时,常遇到的问题是:很小的奇异值 σᵢ 取倒数后会很大,导致数值爆炸。就像地图上一个微小的测量误差被沿途放大,最后让你的路线完全偏离。解决办法就是设置一个截断阈值(rtol):当 σᵢ 小于阈值时,直接视为 0,不取倒数。这相当于自动忽略那些“噪声方向”,使解更稳定。
数值计算的稳定性是工程实战的生命线。就像你给朋友指路时不会刻意介绍那些犄角旮旯的小路(等价于忽略小奇异值),而是选择大路(大奇异值)来保证方向不出错。掌握这些数值技巧,你就能在真实数据中遨游而无惧噪声。
- 找出奇异值对 A 做 SVD,得到奇异值 σ₁ ≥ σ₂ ≥ … ≥ σᵣ。
- 设定阈值设定 rtol × σ_max,rtol 通常取一个很小的数,如 1e-10 或 1e-12。
- 截断操作只对 σᵢ > τ 的那些方向取倒数 1/σᵢ,其余置为 0,得到 Σ⁺。
- 组装伪逆最后用 A⁺ = VΣ⁺Uᵀ 拼装出完整的伪逆矩阵。
AI 应用场景
场景一:数据科学中的线性回归求解
阶段:模型训练与参数估计
解决的问题:传统的线性回归需要求 XᵀX 的逆矩阵,但当特征高度相关(多重共线性)或样本量小于特征数时,XᵀX 不可逆或接近奇异,普通方法直接崩溃。伪逆通过 SVD 分解,即使 XᵀX 不满秩,也能稳定输出最小二乘解。
具体案例:某电商平台做用户购买力预测,有 800 个特征但只有 200 个完整样本。数据科学家使用 np.linalg.pinv(X) @ y 来计算回归系数,得到的模型在验证集上表现稳定,没有被共线性导致的过拟合带偏。相比手写正规方程报错 "Singular matrix",伪逆方案一气呵成。
场景二:机器人运动学中的逆运动学求解
阶段:机器人控制与规划
解决的问题:机械臂的逆运动学问题经常遇到雅可比矩阵不可逆的情况(机械臂处于奇异位形时),传统求逆失败,导致控制信号无法计算。伪逆提供了一种最小范数解,能够在奇异位形附近依然给出合理的控制指令。
具体案例:某工厂六轴机械臂在流水线抓取任务中,当机械臂接近工作空间边界时雅可比矩阵发生奇异。工程师改用伪逆计算关节速度,结合阻尼最小二乘(DLS)方法,平滑地完成了边界区域的精细操作,避免了系统抖动和停机。
场景三:推荐系统中的矩阵补全
阶段:数据预处理与特征工程
解决的问题:用户-物品评分矩阵往往高度稀疏且非方阵,使用伪逆可以在“欠定”的条件下找到范数最小的低秩近似,帮助理解潜在的用户偏好结构,为后续协同过滤算法提供干净的输入。
具体案例:某视频平台想要对用户未观看的视频做评分预测,评分矩阵 10000 行 × 5000 列但只有 1.2% 非空值。数据团队先对评分矩阵做了 SVD 并使用截断伪逆重构低秩近似,将稀疏矩阵转化为密集的低维表征,再送入神经网络推荐模型,推荐的命中率提升了 18%。
Python 演示
import numpy as np def solve_with_pinv(A, b, rtol=1e-10): """使用 SVD 截断方法求解伪逆 A: 系数矩阵(任意形状) b: 目标向量 rtol: 截断奇异值的相对阈值 """ U, s, Vt = np.linalg.svd(A, full_matrices=False) # 计算截断阈值 tau = rtol * s.max() # 对非零奇异值取倒数,其余归零 s_inv = np.array([1/si if si > tau else 0 for si in s]) # 拼回伪逆矩阵: A+ = V DIAG(s_inv) U^T A_pinv = (Vt.T * s_inv) @ U.T # x* = A+ @ b x = A_pinv @ b return x, A_pinv if __name__ == "__main__": # 示例1: 超定方程组 (5个方程 2个未知数) A1 = np.random.randn(5, 2) b1 = np.random.randn(5) x1, Ap1 = solve_with_pinv(A1, b1) print("超定方程组示例:") print("解 x1 =", x1) print("残差范数 =", np.linalg.norm(A1 @ x1 - b1)) print() # 示例2: 欠定方程组 (2个方程 3个未知数) A2 = np.random.randn(2, 3) b2 = np.random.randn(2) x2, Ap2 = solve_with_pinv(A2, b2) print("欠定方程组示例:") print("解 x2 =", x2) print("解的范数 =", np.linalg.norm(x2)) # 验证是否满足方程 print("残差 =", np.linalg.norm(A2 @ x2 - b2)) print() # 与 numpy.linalg.pinv 对比 Ap_np = np.linalg.pinv(A1) x_np = np.linalg.pinv(A1) @ b1 print("与 numpy.linalg.pinv 一致:", np.allclose(Ap1, Ap_np), np.allclose(x1, x_np))
np.linalg.pinv 结果进行对比验证。U, s, Vt = np.linalg.svd(A, full_matrices=False)对矩阵 A 做奇异值分解,得到左奇异向量 U、奇异值数组 s、右奇异向量 Vt。tau = rtol * s.max()根据最大奇异值设定截断阈值,忽略那些干扰计算的小奇异值。s_inv = np.array([1/si if si > tau else 0 for si in s])对超过阈值的奇异值取倒数,小于阈值的置零,防止数值爆炸。A_pinv = (Vt.T * s_inv) @ U.T按公式 A⁺ = VΣ⁺Uᵀ 重新组装伪逆矩阵。x = A_pinv @ b用伪逆左乘 b 得到方程的最优逼近解。np.allclose(Ap1, Ap_np)验证手动实现的伪逆与 NumPy 官方结果完全一致。
常见误区
误区伪逆嘛,不就是矩阵求逆的替代品吗?反正都是 Ax = b 的解,直接用不会出问题。
正解伪逆和普通逆有本质区别。普通逆追求精确还原,要求矩阵必须是方阵且行列式不为零;伪逆追求最优逼近,适用于任意矩阵。当 A 可逆时,A⁺ = A⁻¹,伪逆退化为普通逆;但当 A 不可逆或长方形时,伪逆解不是精确解,而是最小二乘意义下的最佳逼近,并且欠定情况下取的是最小范数解。用“平替”来描述会低估它在复杂问题中的独特价值。
为何常见:因为初学者接触第一个“逆”就是普通逆,遇到伪逆时很容易用“旧概念的扩展”来套用,没意识到整个求解的目标函数已经变了。
误区一个矩阵的伪逆只有一个吗?那只要找到任何一个满足 Ax = b 的解,就等价于伪逆解吧?
正解伪逆确实唯一,但“任何一个解”并不等价于伪逆解。伪逆解同时具备两个关键性质:它让残差范数 ‖Ax − b‖ 最小,并且在所有残差最小化的解中,它的范数也是最小的。普通解可能误差很大,或者虽然误差小但范数巨大(在欠定问题中)。例如欠定方程组有无穷多解,但只有伪逆解是最短的那一个。
为何常见:初学者往往只记住了“伪逆唯一存在”这句话,却忽略了它是在“最佳逼近”和“最短范数”的双重约束下定义的,没有把两个优化目标并列看待。
误区伪逆用 SVD 算,但是 SVD 太慢了而且不稳定,不如直接用正规方程求逆来得快。
正解正规方程 (AᵀA)x = Aᵀb 在矩阵病态时反而更不稳定,因为 AᵀA 会把条件数平方放大。SVD 是数值上最稳定的矩阵分解方法之一,配合截断策略可以进一步抑制噪声。虽然 SVD 的计算成本高于正规方程,但在工程实践中,稳定性往往比速度更重要。很多生产环境都默认用 np.linalg.pinv(基于 SVD)而不是手动求解正规方程。
为何常见:因为学生先学了正规方程的简单公式,再看到 SVD 的“复杂流程”就觉得它效率低、不稳定,实际上是对数值线性代数中“条件数”和“稳定性”概念不够熟悉。
误区伪逆是纯理论的东西,我写 AI 代码从来都用不到,不学也罢。
正解伪逆在 AI 工程中无处不在。np.linalg.pinv 在 sklearn 的 LinearRegression 底层被使用,Ridge 回归的解析解与伪逆的极限定义一脉相承,PCA、特征脸、协同过滤中的 SVD 操作都和伪逆紧密相关。即使是深度学习中的优化器,Adam 中对梯度二阶矩的修正也与“防止奇异”的思想相通。伪逆是理解这些工具的共同数学底座。
为何常见:因为初学时太注重公式推导而忽略了实际代码库的调用,不知道 sklearn.linear_model.LinearRegression 内部就是用了 scipy.linalg.pinv。
面试题
Q1. 关于伪逆矩阵的说法,下列哪一项是正确的?
- A.伪逆只对不可逆的方阵有定义
- B.伪逆是普通逆的自然扩展,适用于任意矩阵← 正确答案
- C.伪逆一定不等于普通逆
- D.伪逆只能用 SVD 计算,没有其他方法
答案:B。伪逆对任意形状的矩阵都有定义,因此 B 正确。A 错误,非方阵(长方形矩阵)也有伪逆。C 错误,当矩阵可逆时伪逆等于普通逆。D 错误,虽然 SVD 是最常用方法,但定义中还有极限形式和正规方程形式等。
Q2. 摩尔-彭若斯条件包括哪些?(多选)
- A.AA⁺A = A← 正确答案
- B.A⁺AA⁺ = A⁺← 正确答案
- C.(AA⁺)ᵀ = AA⁺← 正确答案
- D.A⁺ = A⁻¹
答案:ABC。摩尔-彭若斯条件的四条公理包括 AA⁺A = A、A⁺AA⁺ = A⁺、(AA⁺)ᵀ = AA⁺ 和 (A⁺A)ᵀ = A⁺A。选项 D 是普通逆的性质,只有当矩阵可逆时伪逆才退化为普通逆,不属于摩尔-彭若斯条件本身。
Q3. 对于任意矩阵 A,A⁺ 的最通用计算路径是什么?
- A.直接计算 (AᵀA)⁻¹Aᵀ
- B.基于奇异值分解(SVD)计算← 正确答案
- C.手动做增广矩阵初等变换
- D.高斯消元法
答案:B。SVD 是计算伪逆的通用方法,适用于各种形状和秩的矩阵,因此 B 正确。A 只有在 AᵀA 可逆(列满秩)时才成立。C 和 D 主要用于方阵求普通逆,对长方形矩阵不适用。
Q4. 超定方程组的最小二乘解等价于:
- A.A⁻¹b
- B.A⁺b← 正确答案
- C.bA⁺
- D.Aᵀb
答案:B。超定方程组求解本质是 minimize ‖Ax − b‖²,其解就是伪逆解 x* = A⁺b,故 B 正确。A 只有在 A 可逆时才有意义,超定矩阵不是方阵,没有普通逆。C 是矩阵与向量的乘法顺序错误。D 只是计算过程中的一个步骤,不是最终解。
Q5. 在欠定方程组 Ax = b 中,伪逆解 x⁺ 的特点是什么?
- A.它是唯一满足方程的解
- B.它是范数最大的一个解
- C.它是所有满足方程的解中范数最小的← 正确答案
- D.它不满足原方程
答案:C。欠定方程组有无穷多解,伪逆解在所有解中具有最小范数:x⁺ ⊥ null(A)。所以 C 正确。A 错误,因为欠定解不唯一。B 正好说反了。D 错误,伪逆解一定满足 Ax = b。
Q6. 关于伪逆和最小二乘的关系,下列说法正确的是?(多选)
- A.最小二乘解 x_ls 等于 A⁺b,当 AᵀA 可逆时就是 (AᵀA)⁻¹Aᵀb← 正确答案
- B.伪逆解一定精确满足 Ax = b
- C.当 AᵀA 不可逆时,伪逆依然可以给出最小二乘解← 正确答案
- D.伪逆只适用于无解的超定方程组
答案:AC。最小二乘解与伪逆解是一致的,A 正确。伪逆解在超定情形下不精确满足 Ax = b,而是让残差范数最小,所以 B 错误。伪逆通过 SVD 即使在 AᵀA 不可逆时也能求出最小二乘解,所以 C 正确。伪逆变适用于超定、欠定以及方阵奇异等多种情形,不仅仅是超定方程组,D 错误。
Q7. 为什么伪逆计算中常常使用奇异值截断(truncated SVD)?
- A.为了让结果更精确
- B.为了避免小奇异值取倒数带来的数值不稳定← 正确答案
- C.为了减少计算时间
- D.为了让矩阵更方阵
答案:B。截断的核心原因是数值稳定性,B 正确。太小的奇异值 σᵢ 取倒数后会变得极大,放大噪声和误差。截断后把微小奇异值当作 0 忽略,相当于滤除噪声方向。A 说反了——截断不是为更精确,而是为更稳健。C 是附带好处但不是主要原因。D 截断不改变矩阵形状。
Q8. 设 A 是某机器学习问题中的特征矩阵,形状为 (m, n) 且 m < n(样本数少于特征数),下列说法正确的是?(多选)
- A.AᵀA 一定可逆
- B.线性回归问题存在无穷多组精确解← 正确答案
- C.伪逆解 X⁺y 是所有精确解中范数最小的← 正确答案
- D.使用伪逆算出的解没有任何实际意义
答案:BC。当 m < n 时矩阵列不满秩,AᵀA 一定不可逆,故 A 错误。欠定方程组解有无穷多个,B 正确。伪逆解从无穷多解中挑选范数最小的那个,符合奥卡姆剃刀原则,C 正确。伪逆解在特征选择、稀疏建模中有重要应用价值,D 错误。
Q9. 若 A 是满秩方阵,则伪逆 A⁺ 等于:
- A.零矩阵
- B.A⁻¹← 正确答案
- C.Aᵀ
- D.2A⁻¹
答案:B。当 A 可逆时,伪逆退化为普通逆,即 A⁺ = A⁻¹,故 B 正确。A 显然是错的,零矩阵无法作为逆。C 是转置不是逆。D 乘以系数 2 更没有任何依据。
Q10. 关于 Ridge 回归 β = (XᵀX + λI)⁻¹Xᵀy 与伪逆的关系,描述正确的是:
- A.两者完全无关
- B.Ridge 的解析本质上是伪逆定义的极限形式取 λ → 0⁺← 正确答案
- C.Ridge 解在 λ 趋近于零时与最小二乘解完全相反
- D.Ridge 不具备任何数值稳定性
答案:B。伪逆的定义正是 $\lim_{\alpha \to 0^+} (A^TA + \alpha I)^{-1}A^T$,Ridge 中的 (XᵀX + λI)⁻¹Xᵀy 恰好是伪逆在 α = λ 时的近似,B 正确。A 错误,两者同源。C 说反了,λ → 0 时 Ridge 解趋近于最小二乘解。D 错误,Ridge 正是为了提高数值稳定性而引入 λI 项的。