JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

奇异值分解

[[singular-value-decomposition|SVD]] 把**任意**矩阵写成 A = U*S*V^T——无论方不方、可不可逆都行。几何上它说:每一个线性映射不过是旋转、拉伸、再旋转。拉伸量就是奇异值;它们揭示[[rank|秩]],并与[[eigenvalue|特征值]]相联系。这是整个线性代数里最一般、最有用的分解。

适用于一切矩阵的分解

谱定理很美,但它只对对称矩阵成立。可大多数矩阵并不对称——许多甚至不是方阵。奇异值分解(SVD)能处理它们全部。对任意 m-by-n 的矩阵 A:A = U*S*V^T,其中 U 和 V 是正交矩阵(旋转/反射),S 是对角矩阵、元素非负。

A = U * S * V^T
  V^T : rotate the input  (orthogonal)
  S   : stretch each axis by sigma_1 >= sigma_2 >= ... >= 0
  U   : rotate into the output (orthogonal)
任何线性映射 = 旋转,再沿各轴拉伸,再旋转。永远如此,对每个矩阵都成立。

几何:旋转、拉伸、旋转

想象单位圆。作用 A 之后它变成一个椭圆。SVD 精确地命名了这个变换的各个部件。

  1. V^T 旋转输入空间,让那些特殊的输入方向对齐到坐标轴上。
  2. S 按各自的奇异值 sigma_i 拉伸每个轴——它们就是椭圆各半轴的长度。
  3. U 把拉伸后的结果旋转到它在输出空间里的最终朝向。

奇异值 sigma_1 >= sigma_2 >= ... >= 0 是 SVD 的核心。大的奇异值对应矩阵大幅拉伸的方向;近乎为零的奇异值对应它几乎压扁的方向。这一串有序的数几乎告诉你矩阵行为的一切。

奇异值、秩与特征值

非零奇异值的个数恰好就是 A 的。所以 SVD 通过数个数就读出了秩——而且关键在于,它让你能衡量*近似*秩:若某个奇异值很小但不完全为零,那么这个矩阵*近乎*是更低的秩,这正是下一篇压缩的全部根据。