第 3 章已经从目标函数推导到了 正规方程
A⊤Ax=A⊤b
但正规方程只是最小二乘问题的一阶最优条件,它说明了 “最优解必须满足什么”,却还没有说明:当矩阵的形状不同的时候,这个解到底在几何上意味着什么,为什么有时我们强调 最小二乘解,有时又强调 最小范数解,以及
x=A†b
这条公式究竟在统一表达什么
正规方程不是超定专属
只要我们讨论的是下面这个优化问题
xmin∥Ax−b∥22
那么它的一阶最优条件就一定是
A⊤Ax=A⊤b
也就是说,正规方程 来自 最小二乘目标 本身,而不是来自 “超定” 这个尺寸关系
换句话说,不管 A∈Rm×n 是
- 超定:m>n
- 方阵:m=n
- 欠定:m<n
只要我们在最小化
∥Ax−b∥22
正规方程都会出现
真正会随着矩阵形状改变的是:这个方程是否容易求解,最优解是否唯一,以及这个解的几何意义是什么
例如,当 A 满列秩 时,A⊤A 可逆,于是正规方程可以直接解出唯一解;但若 A⊤A 奇异,那么正规方程本身可能有很多解,它就不足以单独挑出一个唯一的 x
因此,正规方程应该被理解为
三类线性系统里伪逆分别在做什么
虽然
x=A†b
这一写法是统一的,但它在不同情形下表现出来的重点并不一样
方阵且可逆
如果 A 是可逆方阵,那么问题最简单,因为
A†=A−1
此时
x=A−1b
就是普通的精确解
这可以看作是伪逆在最理想情形下退化成了普通逆矩阵,此时既不需要在很多残差里比较谁更小,也不需要在很多解里比较谁的范数更小,因为解已经唯一
超定且满列秩
现在设
A∈Rm×n,m>n,rank(A)=n
这是最典型的 超定 情形,也就是方程数比未知数多
这时通常并不存在满足
Ax=b
的精确解,因为 b 往往不在 A 的列空间里,所以我们只能退一步,去解
xmin∥Ax−b∥22
也就是寻找一个让 Ax 尽量接近 b 的向量
此时正规方程为
A⊤Ax=A⊤b
因为 A 满列秩,所以 A⊤A 可逆,于是得到唯一解
x=(A⊤A)−1A⊤b
这正是
x=A†b
在这一情形下,伪逆最显眼的含义就是:它给出 唯一的最小二乘解
这里通常不再强调 最小范数,因为最小二乘解本身已经唯一,根本没有第二个同样好的解让我们再比较范数
欠定且满行秩
现在设
A∈Rm×n,m<n,rank(A)=m
这是典型的 欠定 情形,也就是未知数比方程还多
如果系统一致,那么
Ax=b
往往会有无穷多个精确解,因为约束数量不足以唯一锁定一个向量
这时所有精确解都满足
∥Ax−b∥22=0
因此它们全都是 最小二乘解,因为残差已经降到了最小可能值 0
这正说明了一个容易混淆的地方:在欠定情形下,不是 “先像超定那样靠最小二乘找到唯一解”,而是 最小二乘往往还不够,因为很多解的残差同样都是最优的
于是我们还需要再加一个准则,在这些同样好的解中选出范数最小的那个
min∥x∥2s.t. Ax=b
这个解就是
x=A⊤(AA⊤)−1b
它同样也就是
x=A†b
所以在欠定且一致的情形下,伪逆最显眼的含义就是:它给出 最小范数解
为什么欠定会有很多解
欠定时之所以经常出现无穷多解,根源在于矩阵存在非平凡 零空间
如果 x 是一个解,那么对任意
z∈ker(A)
都有
Az=0
于是
x′=x+z
仍然满足
Ax′=A(x+z)=Ax+Az=Ax
也就是说,沿着零空间方向移动,并不会改变 Ax 的结果
因此,一旦零空间里存在非零向量,我们就可以从一个解出发,不断加上不同的零空间分量,得到很多别的解
这也是为什么欠定问题的主要矛盾通常不是 “解不存在”,而是 解太多,不唯一
但这些额外的零空间分量虽然不会改变 Ax,却往往会把
∥x∥2
变大
所以 最小范数解 的本质,就是把那些对拟合结果没有贡献、却会让向量变长的零空间分量全部去掉
从这个角度看,伪逆之所以会自动选出最短的那个解,本质上是因为它保留了真正参与映射的部分,而丢弃了纯粹落在零空间里的自由度
伪逆的统一表述
到这里可以把前面的讨论统一成一句更准确的话:
x⋆=argmin{∥x∥2:x 是最小二乘解}
这句话的意思是:
- 先找出所有让
∥Ax−b∥22
最小的解
- 如果这样的解不止一个,再从里面挑出
∥x∥2
最小的那个
于是
A†b
永远都可以理解为 minimum-norm least-squares solution
只是这句话在不同情形下会表现出不同侧重点
- 在 超定且满列秩 时,最小二乘解本身已经唯一,所以 “最小范数” 这一层几乎感觉不到,伪逆看起来更像是在给出 最小二乘解
- 在 欠定且一致 时,很多解都能把残差做到 0,所以 “最小二乘” 这一层反而不显眼,伪逆看起来更像是在给出 最小范数解
因此,不应该把伪逆割裂成两个彼此无关的概念,而应该把它理解成一个统一规则在不同场景下的不同外观
一个简短对照表
| 情形 | 主要矛盾 | 伪逆最显眼的含义 | 是否还需要额外准则才能唯一化 |
|---|
| 方阵且可逆 | 解本身已经唯一 | 普通精确解 | 不需要 |
| 超定且满列秩 | 通常无精确解 | 最小二乘解 | 不需要 |
| 欠定且满行秩 | 解太多,不唯一 | 最小范数解 | 需要,常用最小范数 |
从这个表里也可以看出,最小二乘 不是超定问题的专属,而 最小范数 也不是与最小二乘割裂开的另一件事;二者其实是由伪逆统一在一起的
非线性最小二乘
前面讨论的内容都属于 线性最小二乘,也就是未知量以线性的方式进入模型,因此问题可以写成
Ax≈b
但 最小二乘 这个思想本身并不要求模型一定是线性的,更一般地,我们也可以最小化一组关于参数的非线性残差平方和
xmin(r1(x)2+r2(x)2+⋯+rm(x)2)
这里的 ri(x) 不再要求是 x 的线性函数,而可以是一般的非线性函数
因此,线性最小二乘 可以看作 非线性最小二乘 的一个特殊情形;只不过一旦进入非线性情形,就通常不能再直接写出正规方程和伪逆这样的解析公式,而需要借助迭代方法逐步逼近最优解
很多常见方法的基本思路,正是在当前点附近先对非线性残差做 linearization,把原问题局部近似成一个线性最小二乘子问题,然后再反复更新参数
和神经网络训练里最小二乘的区别
神经网络训练和前面这一章最大的区别,不在于它是否使用平方损失,而在于参数进入模型的方式通常已经不是线性的
而在神经网络训练中,即使损失函数也常写成平方误差,例如 MSE,参数通常仍然是以层层嵌套的非线性方式进入模型的,所以那属于更一般的 非线性优化,不能直接套用这里关于正规方程和伪逆的线性结论
这也和前一节提到的那类思路不同:对于一般的 非线性最小二乘,常见做法是在当前点附近先做 linearization,再去求解一个局部的线性最小二乘子问题;而神经网络训练虽然也可能使用平方损失,但通常并不是显式地每一步都按这种方式构造并求解一个线性化后的最小二乘子问题
因此,使用平方损失 和 属于线性最小二乘 并不是同一回事