当前阶段:步骤 0
x = -
V^T x = -
Sigma V^T x = -
A x = -
sigma = -
原始单位球
变换中的几何体
输入向量 x
V^T x
Sigma V^T x
A x
样例输入向量 x
拖动后会自动归一化到单位球表面,便于观察单位球如何被变换。
SVD 分解的 3D 几何直觉
目标:把一个三维线性变换 \(A\) 看成三步完成:先用 \(V^T\) 旋转输入方向,再用 \(\Sigma\) 沿三个正交方向拉伸/压缩,最后用 \(U\) 把结果整体旋转到最终朝向。也就是:
\[ A = U \Sigma V^T \]
怎么观察这个动画
左侧灰色线框是原始单位球,蓝色线框是“当前已经施加的变换”。你可以点“下一步”逐步看 \(V^T\)、\(\Sigma\)、\(U\) 分别做了什么,也可以拖动下方滑动条改变输入向量 \(x\)。
步骤 0: 准备一个单位球和输入向量
把所有长度为 1 的向量放在一起,就构成一个单位球。理解 SVD 的经典方法,就是观察矩阵 \(A\) 如何把这个球变成一个椭球。
\[ x \in \mathbb{R}^3,\quad \|x\| = 1 \]
步骤 1: 先施加 \(V^T\)
\(V^T\) 是一个正交矩阵,本质上只做旋转或镜像,不改变长度。它的作用是把原始输入坐标系,转到“最适合被缩放”的主方向坐标系里。
\[ x_1 = V^T x \]
注意此时球体形状不会改变,但输入向量和局部主轴方向已经变了。
步骤 2: 再施加 \(\Sigma\)
\(\Sigma\) 是对角矩阵,只会沿三个互相垂直的主方向分别缩放。三个对角元素 \(\sigma_1,\sigma_2,\sigma_3\) 就是奇异值。
\[
\Sigma =
\begin{bmatrix}
\sigma_1 & 0 & 0 \\
0 & \sigma_2 & 0 \\
0 & 0 & \sigma_3
\end{bmatrix}
\]
单位球在这一步会直接变成一个椭球,椭球三条半轴长度就是奇异值。
步骤 3: 最后施加 \(U\)
\(U\) 也是正交矩阵,所以它不会再改变椭球半轴长度,只负责把已经拉伸好的椭球整体转到最终输出方向。
\[ A x = U (\Sigma (V^T x)) \]
因此,奇异值负责尺度,\(V\) 决定输入主方向,\(U\) 决定输出主方向。
步骤 4: 几何意义总结
从几何上看,SVD 说的是:任何线性变换都可以拆成“旋转坐标系 + 沿主轴缩放 + 再旋转”。这也是为什么 SVD 在 3D 形变、点云配准、压缩和最小二乘中都很重要。
\[ A(\text{单位球}) = \text{椭球} \]