Besides having a rather simple geometric explanation, the singular value decomposition offers extremely effective techniques for putting linear algebraic ideas into practice.

SVD分解与四个子空间

任意的线性变换都可以进行奇异值分解(SVD: Singular Value Decomposition)。之前的一篇博客讲的特征值和特征向量都是针对方阵而言的.这里任意形状的矩阵都能够进行SVD变换。给定一个$m \times n$的矩阵$A$,$rank(A)=r$,这里需要特别说明,我们可以在这个矩阵的行空间和列空间内找到$r$个线性无关的基,即使行、列空间的维度有不同。此处是核心:我们能够参考方阵,对它的特征值特征向量的推导过程得到启发,结合这里矩阵不一定是方阵(行、列维度不同的特点),能否在行子空间内找到一组相互正交的单位基向量,这组基向量通过$A$的变换在列空间内“生产”出一组也是相互正交的向量,并且这组向量正好是列空间的一组基。

$$ \begin{equation} Av_1=\sigma_1u_1, \cdots, Av_r=\sigma_1u_r \end{equation} \label{eq1}\tag{1} $$

($\ref{eq1}$) 中,$v_i(i=0,1,\cdots,r)$是行空间内的单位向量,且$v_i^T \dot v_j=0 (i \neq j)$,$u_i(i=0,1,\cdots,r)$是列空间内的单位向量(Orthonormal basis),且$u_i^T \dot u_j=0 (i \neq j)$,$\sigma_i(i=0,1,\cdots,r)$是列空间内单位向量的伸缩系数。 写成矩阵乘法的形式如下:

$$ \begin{equation} A\left[ \boldsymbol{v_1}\ \boldsymbol{v_1}\cdots \boldsymbol{v_r} \right] =\left[ \boldsymbol{u_1}\ \boldsymbol{u_2}\cdots \boldsymbol{u_r} \right] \begin{bmatrix}\sigma_1&0&\cdots&0\\ 0&\sigma_2&\cdots&0\\ \vdots&\vdots&\vdots&\vdots\\ 0&\cdots&\cdots&\sigma_r\end{bmatrix} \end{equation} \label{eq2}\tag{2} $$

写成更简单的形式是:$AV=U\Lambda$。

矩阵对行空间向量的变换 2025-06-13

费这么大的劲把矩阵的最本质的东西提取出来,一定是有目的的:

  • 我们希望了解,任何一个矩阵,它在$\mathbb{R}^n$和$\mathbb{R}^m$两个空间内,具有什么样的结构:具体体现在行空间和列空间内的一组单位正交基:$\boldsymbol v_1, \boldsymbol v_2 \cdots \boldsymbol v_r \text{ in row space}$和$\boldsymbol u_1, \boldsymbol u_2 \cdots \boldsymbol u_r\text{ in colunm space}$,它们的数量和方向决定了这个矩阵对向量的变换能力。

  • 我们希望给定任何一个向量:$\boldsymbol x\in \mathbb{R}^n$,能够不用按照矩阵和向量相乘的方法,用人更能够理解的方式把这个向量换坐标系,过程是:

  1. $\boldsymbol x$向$\boldsymbol v_1, \boldsymbol v_2 \cdots \boldsymbol v_r$投影,得到在各个方向上的拉伸系数$\alpha_1,\alpha_2 \cdots \alpha_r$

  2. 因为$\boldsymbol v_1$经过$A$变换之后,得到方向是$\boldsymbol u_1$,长度是$\sigma_1$,所以,$\boldsymbol x$经过$A$变换之后,在$\boldsymbol u_1$方向上的拉伸长度是$\alpha_1\sigma_1$

  3. 写成矩阵形式:

$$ \begin{matrix} A\boldsymbol x=[\boldsymbol u_1 & \boldsymbol u_2 & \cdots & \boldsymbol u_r] \end{matrix} \begin{bmatrix} \alpha_1\sigma_1 & 0 & \dots & 0 \\ 0 & \alpha_2\sigma_2 & \dots & 0 \\ \vdots \\ 0 & 0 & \dots & \alpha_r\sigma_r \end{bmatrix} $$

  1. 所以主要工作量主要是第一步,求投影的拉伸系数。
  • 矩阵对输入向量的变化,在一些方向上变换较大,在另一些方向变换较小,实际生产生活中,只是去关注变换较大的方向,忽略变换较小的方向:挑选那些较大$\sigma$们,对输入向量只针对这些方向做投影得到的拉伸系数就可以完成变换,节省计算资源,节省时间,达到的效果和全部计算没有显著区别。

奇异值分解的几何意义

接上面的矩阵定义$A$,我们看一下$R^n$空间的任意对象$\boldsymbol{x}$是如何变换的。

$$ \begin{equation} \boldsymbol{x}=x_1\boldsymbol{v_1}+x_2\boldsymbol{v_2}+\cdots+x_n\boldsymbol{v_n} \end{equation} \tag{3}\label{eq3} $$

($\ref{eq3}$)中,$x_i$是$\boldsymbol{x}$在行空间、零空间的坐标值,其中前$r$个向量是行空间的分量,后面的是零空间的分量。并且$\sum_{1}^{n}{x_i^2} =1$,可以把这个对象想象成在$R^n$内的单位球体。线性变换:

$$ \begin{equation} A\boldsymbol{x} = x_1A\boldsymbol{v_1}+x_2A\boldsymbol{v_2}+\cdots+x_nA\boldsymbol{v_n} = \sigma_1x_1\boldsymbol{u_1}+\sigma_2x_2\boldsymbol{u_1}+\cdots+\sigma_rx_r\boldsymbol{u_r} \end{equation} \tag{4}\label{eq4} $$

($\ref{eq4}$)少了后面的$(n-r)$个分量,是因为$A\boldsymbol{v_i}=0,(i=r+1,r+2,\cdots,n)$。 到这里,我们理解奇异值分解的几何意义就是:矩阵的奇异值分解,是在行空间内找到一组相互垂直的单位向量,这组向量经过矩阵的变换在列空间得到的向量也是相互垂直,观察($\ref{eq4}$),旧坐标值和奇异值相乘的意义就是在新的基方向上,进行奇异值大小的拉伸操作。更加形象的理解就是,将单位球面变换为超椭球面,这个球面具有r$个半轴,每个半轴对应的奇异值是该半轴伸缩的系数。

最近在知乎上又看到了硬核机器学习文章分享的回答,在他的回答中,两组正交基分别就是矩阵行空间、列空间的标准正交基。如果不好记忆的话,我们可以对比矩阵和向量的乘法,$\boldsymbol{x}$向量的维度和矩阵的行向量是一致的,所以 $\boldsymbol{v_i}$ 向量是用来分解给定的向量的,这样我们就很容易得到酉矩阵$U$的列向量是原矩阵列向量的一组标准正交基构成。

总结一下

步骤如下:

  • 给出任意向量$\boldsymbol{x}$

  • 矩阵对该向量的变换分解为如下

  • 投影$\boldsymbol{x}$到$\boldsymbol{v_i}$,得到投影矢量为$\epsilon_1,\cdots,\epsilon_r$

  • 使用$\boldsymbol{V}$旋转行基$\boldsymbol{v_i}$到单位标准正交基$\boldsymbol{I}$

  • 使用奇异值拉伸$\boldsymbol{I}$的各个分量

  • 使用$\boldsymbol{U}$旋转拉伸后的基向量,得到最终基,变换在该基下的分矢量就是$\epsilon_1,\cdots,\epsilon_r$

和特征值分解的关系

刚才只讨论了矩阵行空间和列空间的向量,那么,剩下的零空间和左零空间的向量难道就放弃了么?并不是这样的,出于考虑问题的完备性,我们写出如下的表达式

$$ \begin{equation} A=[\boldsymbol{u_1}\ \boldsymbol{u_2}\cdots \boldsymbol{u_r}|\boldsymbol{u_{r+1}}\ \boldsymbol{u_{r+2}}\cdots \boldsymbol{u_m}] \begin{bmatrix} \sigma_1&0&\cdots&0 \\ 0&\sigma_2&\cdots&0 \\ \vdots&\vdots&\vdots&\vdots \\ 0&\cdots&\cdots&\sigma_r \\ 0&\cdots&\cdots&0 \\ \vdots&\vdots&\vdots&\vdots \\ 0&\cdots&\cdots&0 \end{bmatrix} \begin{bmatrix} \boldsymbol {v_1^T} \\ \boldsymbol{v_2^T} \\ \vdots \\ \boldsymbol{v_r^T} \\ \boldsymbol{v_{r+1}^T} \\ \vdots \\ \boldsymbol{v_n^T} \end{bmatrix} \label{eq:5} \end{equation} $$

SVD更广泛的意义是将$R^n$(行空间+零空间)内的一组标准正交基和$R^m$(列空间+左零空间)的标准正交基拉进来,形式上完备了,具体矩阵所具有的特性取决于中间对角矩阵中非零奇异值的个数,理想的情况是,当矩阵是一个$n\times n$方阵时,并且具有$n$个特征向量,那么行空间和列空间的维度是一样的,通过SVD分解矩阵得到的$U$中,各列就是该矩阵的特征向量。从这点上,我们可以得到,方阵的特征向量特征值是矩阵SVD分解的特殊情况。

参考材料

We Recommend a Singular Value Decomposition “奇异值分解的直观理解”

机器学习中的数学(5):强大的矩阵奇异值分解(SVD)及其应用

线性变换的矩阵为什么要强调在这组基下?

The SVD of a Matrix