任何矩阵都是:转一下、拉一下、再转一下
1873 年他给大学生办的一份刊物写了篇小文章,把双线性函数化成了标准形。一百三十年后,这件事成了数据时代用得最多的一把刀。
《论双线性函数》登在《数学杂志》第十一卷 98–106 页,1873 年——那份刊物的全名是《供意大利各大学学生使用的数学杂志》,开篇他也说得明白:双线性函数的理论克罗内克与克里斯托费尔已经做过精深的研究,他要去掉的是那条几乎一直沿用的限制(两组变量必须受同一个代换或者互逆的代换),写下来是为了「引这份刊物的年轻读者更熟悉那些代数手续」。就这么一篇给学生看的东西,里面第一次出现了今天所说的奇异值分解。他的路子只有三步。第一步是数自由度:两个 n 阶正交代换的系数合起来只依赖 n² − n 个独立参数,而要抹掉的非对角系数「恰好也是 n² − n 个」——不多不少,所以这件事有指望。第二步是把那几个待求的数逼出来:消元之后得到两个行列式方程,一个由「A 乘 A 的转置」给出,一个由「A 的转置乘 A」给出,他证明这两个行列式恒等(都是 γ² 的 n 次整函数,在 n 个根上相等,又在 γ = 0 处同为行列式的平方),所以随便解哪一个都行。第三步是说明解得出来:根全是实的,由一条「极有名的定理」管着;根还全是正的,这一条他给了两个理由——特征多项式里那些系数都是平方和,以及由这两个乘积作出的两个二次型本质上是正的。剩下的就是逐列定系数,而每一列的符号是自由的,因为 γ 只由 γ² 定。分寸要写清三处。一,这一篇假定了矩阵非奇异、几个奇异值互不相同,退化的情形要到若尔当 1874 年那篇《论双线性型》才补全——若尔当从「两个向量都取单位长时双线性型的极大极小」入手,用不着这些前提,所以今天一般把两人并称,而先发表的是贝尔特拉米。二,此后还有好几段路,而其中一段的名字挂错了人:西尔维斯特 1889 年重新做了一遍并给了迭代算法;施密特 1907 年在积分方程里做出无穷维的版本,并且第一个证明「截掉小的那几个,就是最好的低秩逼近」——今天一切压缩与降维的依据其实出自这一篇;奥托纳 1913 年把分解推到复矩阵;埃卡特与杨 1936 年推到长方阵,同时把施密特那条逼近定理重新发现了一遍,于是它此后被叫作「埃卡特–杨定理」。「奇异值」这个名字也出自积分方程那一支,贝特曼 1908 年已经在用。三,最要紧的一处是他那条路今天没人照着算:按特征方程开平方求小的那个奇异值,要拿两个几乎相等的数相减,演示里「接近奇异」那一档,真值 4.0000 × 10⁻⁸ 会被算成 3.65 × 10⁻⁸,只剩一位有效数字;1965 年戈卢布与卡汉换了一条完全不同的路,奇异值才算得又快又准。也正因为算得准了,它才变成今天这副样子:多天线通信里把信道矩阵分解开,几根天线就成了几条互不干扰的独立通道;主成分分析、潜在语义分析、推荐系统、模型压缩、伪逆与最小二乘,全是同一条定理的不同穿法。顺带一提,他与这件事的缘分还早十年:1863 年 11 月他正和天文学家斯基亚帕雷利一起解一个十八个方程十八个未知数的最小二乘问题,自称那是「最小二乘法的一次好练习」。
四格看一遍:单位圆先被转一下、再沿两根轴各拉一个倍数、最后再转一下,就成了那个椭圆;右边按他 1873 年的算法逐步现算
任取一个矩阵,让它作用在单位圆上,出来的总是一个椭圆——而且总能把这件事拆成三步:先转一个角度,再沿两根固定的轴各拉一个倍数,最后再转一个角度。 中间那两个倍数就是奇异值。他 1873 年是这么找到它们的: 先写下「A 乘 A 的转置」的特征方程 det(… − γ²I) = 0,证明它与「A 的转置乘 A」那一个恒等, 再证根全是实的、而且全是正的,于是 γ 开得出平方根—— 现在这一档 σ₁ = 3.618034、σ₂ = 1.381966。对称矩阵:两次转互为逆转。为什么一定办得到?他数了一下自由度: 两个 n 阶正交代换只有 n² − n 个自由参数,而要抹掉的非对角元也正好 n² − n 个。 有一处分寸要写明:这一篇假定了矩阵非奇异、奇异值互不相同, 退化的情形要到若尔当 1874 年那篇才补全。 还有一处更要紧——他给的算法在今天的机器上不能照着算: 「接近奇异」那一档里,按特征方程开方得到的 σ₂ 与真值差了整整几位, 因为 γ² 的小根要拿两个几乎相等的数相减;今天算奇异值走的是另一条路。
