无心插柳推导出奇异值分解
速览
这篇文章通过一个看似不相关的数学推导,意外地得到了奇异值分解(SVD)的结果。作者从其他目标出发,最终发现推导过程自然地引出了SVD的形式。这为理解SVD提供了新的视角,展示了数学结构之间的内在联系。对于线性代数和机器学习领域的研究者,这种非传统的推导方式具有启发意义。
AI 深度解读
背景
这篇文章来自 Hacker News,作者以"不用 AI 写"为傲,强调其中的错误、生硬的句子和奇怪的跑题都是 100% 有机、散养、纯人工的产物。文章的核心议题是:如何真正学会数学中的某个概念?
作者长期以来一直在追问一个问题:在数学中真正"学会"或"理解"某件事意味着什么。他认为这个问题可以延伸到其他领域,但数学中的许多概念往往与日常生活格外疏离,很难获得那种直觉性的、自然的理解——那种能让你把握概念的基本结构、并能在未来独立重建细节的理解。
作者举了自己初次接触实分析(Real Analysis)的例子:一开始觉得非常混乱和困难,但过了一段时间后,你就能抓住主要概念的基本结构,然后基本上可以自己推演这些概念了。
然而,有一件事作者花了很长时间才理解:传统的数学书往往无法给你一条让你抓住结构的路径,也无法让你以更直觉或自然的方式去理解概念(那种能让你日后独立重建理解的路径)。这是因为大多数数学书只呈现数学最终形式化的版本,却隐藏了通往那里的路径——那条往往混乱、充满实验、试错和试探的路径。
核心内容
作者选择从线性代数(Linear Algebra, L.A)开始,因为它是数学中最具应用性和最易接近的领域之一。
线性变换与基的选择
作者以一个极其简单的线性映射为例:将 x 轴拉伸 3 倍,y 轴保持不变。
在标准基下,这个矩阵直接读出基向量被映射到哪里:
$$ A = \begin{pmatrix} 3 & 0 \ 0 & 1 \end{pmatrix} $$
一目了然:"拉伸一个轴"。
现在用一个倾斜的、非标准正交的基来描述同一个映射。选择一组倾斜的基:
$$ v_1 = \begin{pmatrix} 1 \ 1 \end{pmatrix}, \quad v_2 = \begin{pmatrix} 1 \ -1 \end{pmatrix} $$
同一个变换在这个基下的矩阵是:
$$ A' = \begin{pmatrix} 2 & 1 \ 1 & 2 \end{pmatrix} $$
同一个变换。对每个实际向量的映射完全相同。但现在它看起来像是缩放、剪切和符号翻转的任意混合——你绝不会猜到它只是"拉伸 3 倍"。
复杂度从来不在映射本身,而在基的选择。
对角化
有时候我们可以通过选择一个新的基来对角化一个矩阵,使矩阵变成对角形式(这只有在矩阵允许存在特征向量基的情况下才能做到,但作者暂时不证明这个事实)。
当然,并非所有线性变换都允许存在特征向量基。事实上,有些线性变换甚至不是方阵(例如输入维度与输出维度不同)。对于输出到不同维度空间的线性变换,我们甚至无法谈论特征向量,因为特征向量在缩放意义下保持不变,这显然要求输入和输出具有相同的维度。
当我们能够对角化一个矩阵时,有趣的事情发生了:我们可以清楚地看到,线性变换本身本质上就是一个简单的非均匀缩放,只是由于我们选择用来表示矩阵的基而被伪装成了更复杂的东西(与我们之前展示的操作相反,之前我们展示了一个简单的缩放可以用更复杂的矩阵形式来表示)。
所以我们取一个可对角化的线性变换 $T$ 的矩阵 $A$,然后写成:
$$ A = PDP^{-1} $$
然后 $A$ 相似于一个对角矩阵 $D$。所以那个可能很复杂的 $A$ 在对角线上只是一些数字,其他地方都是零,直到一个特殊的基变换矩阵 $P$。这对于计算机存储和高效执行矩阵乘法来说是完美的。我们可以将数据一次性转换到 $P$ 的参考系,用对角矩阵进行数百万次矩阵乘法(很容易),然后再用 $P^{-1}$ 转换回原始参考系。这种简化之所以可能,是因为我们能够从线性变换中提取结构。
何时无法对角化?
那么,我们何时无法对角化一个矩阵呢?如果一个可对角化的矩阵只是某个特殊坐标系中伪装的缩放,那么当线性变换不仅仅是伪装的缩放时,我们就无法对角化(实际上,这等价于说 $A$ 不能允许一个特征向量基——作者建议读者自己尝试证明这一点)。
例如,如果 $R$ 是一个二维旋转,它没有两个独立的特征向量(它根本没有实特征向量;旋转会移动平面中的每个方向!)。如果 $S$ 是一个二维剪切,它肯定也无法对角化,原因类似。
那么,我们是否仍然能够从任意线性变换中提取结构,就像我们对可对角化线性变换所做的那样?如果我们能做到,那么我们可能会获得一些优势,就像我们对对角矩阵所做的那样……
从单位球到椭球
直觉上,我们可以直接观察一个 $n$ 维单位球面在一个一般线性变换下会发生什么:
- 它可能不是单射的,即某些方向可能被湮灭(坍缩为 0——所以球面会压平成圆盘);
- 它可能以任意值缩放其他方向(所以球面或圆盘会变成椭球或椭圆);
- 它可能通过任意轴以任意角度旋转其他方向;
- 它也可能将球面向其他方向剪切(剪切后的球面仍然是一个旋转的椭球)。
这个简单的事实可以写成:
$$ T(v_i) = \sigma_i u_i $$
其中 $\sigma_i$ 是一个标量——拉伸因子——而 $u_i$ 是一个单位输出方向。就是这样。我们将 $\sigma_i$ 和 $u_i$ 分开了,我们不再要求它们是特征向量;它们只是任意的向量。上面的表达式没有引入新的事实,它只是任何线性变换中发生的事情,但它确实捕捉了我们的感觉:单位球面以某种方式被映射到旋转的椭球上,如果你把 $\sigma_i$ 看作缩放因子,把 $u_i$ 看作新的旋转方向。
我们现在的直觉是,一个线性变换可能执行几种类型的操作(旋转、剪切、缩放),类似于我们的对角化情况,这些操作可以被分解和隔离,在最初看似复杂的变换中揭示一些更简单的结构。
正交基的重要性
正如我们之前看到的,倾斜的基并不是表示线性变换矩阵的最佳选择,因为它们混合了坐标基向量:每个基向量在其他基向量上都有非零投影。
这里明显的下一步是看看当输入基 $V$ 和输出基 $U$ 是标准正交的时会发生什么。我们能否总是要求 $V$ 和 $U$ 是标准正交的?作者指出我们可以,这是一个有趣而简洁的事实。
看看我们在要求什么。对于输出向量 $u_i$ 要标准正交:
$$ \langle u_i, u_j \rangle = \delta_{ij} $$
同时我们希望输入向量 $v_i$ 是标准正交的:
$$ \langle v_i, v_j \rangle = \delta_{ij} $$
现在,一些非常有趣的事情发生了。重写输出的内积,将 $T$ 移到另一边
