条件数、病态问题与正则化
层级:B|建议先修:02-06、02-12、02-15、09-01
一个算法可能实现完全正确,却仍因问题本身对输入扰动极其敏感而得到不可靠结果。条件数衡量这种固有敏感性;稳定性衡量算法是否额外放大误差。
1. 条件良好与病态
考虑问题 。输入有小扰动 ,输出变化 。若相对输出误差远大于相对输入误差,问题称为病态。
局部相对条件数可直观写为
条件数大表示数据中的微小噪声、舍入误差或估计误差会被显著放大。
2. 标量函数的条件数
对可微标量函数 ,局部相对条件数为
(当分母非零)。例如 的条件数为 ,而接近根的位置求函数相对值可能变得病态。
3. 线性系统的条件数
对可逆矩阵 的线性系统
矩阵范数对应的条件数为
在 2-范数下,
若 对称正定,则也等于最大与最小特征值之比。
4. 几何直觉
矩阵把单位球变成椭球。最长轴为 ,最短轴为 。若最短轴非常小,某些方向被几乎压扁,逆变换必须大幅放大该方向,连噪声也一起放大。
当 时矩阵奇异,条件数视为无穷。
5. 误差传播
只考虑右端项扰动 时,常有界
这是一阶或上界意义的表达。条件数 意味着输入相对误差可能被放大八个数量级,并非保证一定恰好放大这么多。
6. 正规方程会平方条件数
最小二乘若用正规方程
则
因此本已不良的条件会更糟。数值上通常优先用 QR 或 SVD 求最小二乘,而不是显式形成并求解正规方程。
7. 特征尺度与共线性
设计矩阵病态的常见原因:
- 特征量纲差异巨大;
- 两列特征几乎线性相关;
- 多项式高次项范围悬殊;
- 样本少于维度或数据落在低维子空间。
表现包括系数对数据扰动剧烈变化、标准误巨大、梯度下降狭长振荡以及求解器警告。
8. 正则化改善条件
岭回归求解
若 特征值为 ,加正则后变为 ,条件数改善为
代价是引入偏差。正则化既控制统计方差,也常改善数值稳定性。
9. 截断 SVD
若小奇异值方向主要是噪声,可只保留大于阈值的奇异值:
这抛弃无法可靠识别的方向,与主成分回归和低秩近似相联系。阈值是偏差—方差选择,而非纯粹数值细节。
10. 预条件
迭代求解 时,寻找易求逆的 ,改解
若 的谱更集中,迭代会更快。预条件不改变精确解,却改变算法看到的几何。
特征标准化也可视为优化问题的一种简单预条件。
11. 条件数与算法稳定性的区别
- 条件数属于数学问题和输入点;
- 稳定性属于求解算法;
- 前向误差大致受“条件数 × 后向误差”控制。
对病态问题,再稳定的算法也无法从含噪数据恢复不存在的信息;应增加先验、正则化或收集更有辨识力的数据。
12. 机器学习联系
- Hessian 条件数影响梯度下降收敛速度;
- 多重共线性让线性模型系数不稳定;
- 核矩阵近奇异需要正则化或低秩近似;
- 协方差矩阵估计不良会影响 Mahalanobis 距离和高斯模型;
- 深度网络中的归一化、初始化和自适应优化都在一定程度上改变优化几何。
13. 易错点
- 条件数大不说明代码一定错误,它说明问题对扰动敏感。
- 行列式接近 0 可提示奇异,但不适合作为一般数值条件判断;条件数更直接。
- 标准化改善尺度,不会消除真正的线性依赖。
- 正则化系数过大虽改善条件,却可能严重欠拟合。
常见问答
Q1:条件数多少算大?
没有脱离精度和误差容忍度的统一阈值。可粗看会损失多少有效数字,并结合数据噪声、浮点格式和任务误差预算判断。
Q2:矩阵可逆为何仍可能求解不可靠?
最小奇异值虽非零但非常小,逆矩阵沿相应方向会巨大放大扰动。
Q3:正则化是在修数学问题还是统计问题?
两者都是。它抑制不可辨识方向的方差,同时改善求解矩阵的谱。
Q4:为什么梯度下降在狭长椭圆等高线上走之字形?
Hessian 特征值差异大,各方向曲率尺度不一;满足陡峭方向稳定性的步长在平坦方向进展很慢。
练习
- 写出 2-范数矩阵条件数与奇异值的关系。
- 证明 (假设满列秩)。
- 解释岭正则为何能改善 的条件数。
- 区分问题病态和算法不稳定。
答案与提示
- 。
- 的特征值是 奇异值的平方,因此最大最小比也平方。
- 所有特征值都加 ,特别是把接近 0 的最小特征值抬高。
- 前者指精确解对输入扰动敏感,后者指算法产生了远超问题固有敏感性的额外误差。