L30-奇异值分解

linear-algebra

L30-奇异值分解

参考

奇异值分解 singular value decomposition,简称为 SVD,是将矩阵分解的一种方式

A=UΣVTA=U \Sigma V^{T}

其中 AA 是任意矩阵,Σ\Sigma 是对角矩阵,UUVV 是正交矩阵

对称矩阵

如果矩阵 AA 是对称矩阵,可以进行对角分解得到 A=QΛQTA=Q \Lambda Q^{T}(谱定理)其中 QQ正交矩阵,其中各个列向量由矩阵 AA 的特征向量构成

所以该分解形式是奇异值分解 A=UΣVTA=U \Sigma V^{T} 的特殊情况,即矩阵 UUVV 都是等于 QQ(特征向量矩阵,而且是正交矩阵,即其中各列向量相互垂直)

对称矩阵的奇异值分解与对角化是一样的,而且只需要求出两个矩阵 QQΛ\Lambda 即可进行分解,由于 QTQ^{T} 可以直接从矩阵 QQ 得出

对角分解

奇异值分解与矩阵对角化是对矩阵的分解的两种形式,虽然当矩阵是对称矩阵时两者是相同的,但是一般两者并不相同:

  • 奇异值分解适用于任意矩阵 AA;矩阵对角化适用于具有 nn 个线性独立的特征向量的矩阵 An×nA_{n \times n}
  • 奇异值分解 A=UΣVTA=U \Sigma V^{T} 所得到的矩阵 UUVV 是正交矩阵;矩阵对角化 A=SΛS1A=S \Lambda S^{-1} 所得到的矩阵 SS 是以矩阵 AA 的特征向量作为列向量所构成的,但是并不一定是正交矩阵

奇异值分解的目的

奇异值分解的起源/目的是将位于行空间 row space 里的一组正交基 viv_{i},通过矩阵 AA 的线性变换,得到在列空间 column space 中的对应的一组正交基 uiu_{i},即满足 σiui=Avi\sigma_{i}u_{i}=Av_{i}(变换基,而且这些基都是正交的)

伸缩因子

在以上公式中,σi\sigma_{i} 是一个系数,称为 stretching number 伸缩因子,因为正交基(标准向量)viv_{i} 经过矩阵 AA 的线性变换后,所得的向量 AviAv_{i} 不一定得到单位向量,只需要提取一个因子(其模长的倒数)写成 σiui\sigma_{i}u_{i}uiu_{i} 则其中向量 uiu_{i} 就是单位向量

写成矩阵形式

A[v1v2vr]=[u1u2ur][σ1000σ2000σr]A \begin{bmatrix} v_{1} & v_{2} & \dots & v_{r} \end{bmatrix} = \begin{bmatrix} u_{1} & u_{2} & \dots & u_{r} \end{bmatrix} \begin{bmatrix} \sigma_{1} & 0 & \dots & 0 \\ 0 & \sigma_{2} & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & \sigma_{r} \end{bmatrix}

AV=UΣAV=U \Sigma 在等式两边同时乘上 V1V^{-1} 可得 A=UΣV1A=U \Sigma V^{-1},由于矩阵 VV 是由正交基构成的,所以它是正交矩阵,满足 V1=VTV^{-1}=V^{T},则等式可以写成 A=UΣVTA=U \Sigma V^{T} 这就得到了奇异值分解的公式

在一个向量空间中,要得到一组正交向量是很简单的,只需要通过 Gram-Schmidt process 格拉姆-施密特正交化可以从线性无关/线性独立的一系列(列)向量构造出正交基。而要实现奇异值分解的关键是找到一组在行空间 row space 里的一组正交基 viv_{i},通过矩阵 AA 的线性变换后,所得到的(在列空间 column space 中)一系列向量刚好也是正交的

说明

而对于另外两个相应的向量空间,零空间 null space 和左零空间 left null space,以上公式也同样适用

例如当矩阵 Am×nA_{m \times n} 行不满秩时,则行空间 row space 的正交基数量 r<nr<n(小于 Rn\mathbb{R^{n}} 的维度),相应地零空间的正交基数量就是 nrn-r,如果将这两个空间的正交基组合在一起,构成一个 n×nn \times n 的矩阵 V=[v1v2vrvr+1vn]V^{\prime}=\begin{bmatrix} v_{1} & v_{2} & \dots & v_{r} & {\color{Red}v_{r+1}^{\prime}} & \dots & {\color{Red}v_{n}^{\prime}} \end{bmatrix}

而对于列空间 column space 的正交基数量也是 rr,相应地左零空间的正交基数量是 mrm-r,如果将这两个空间的正交基组合在一起,也可以构成一个 m×mm \times m 的矩阵 U=[u1u2urur+1um]U^{\prime}=\begin{bmatrix} u_{1} & u_{2} & \dots & u_{r} & {\color{Red}u_{r+1}^{\prime}} & \dots & {\color{Red}u_{m}^{\prime}} \end{bmatrix}

要让添加了零空间(或左零空间)正交基的矩阵,满足奇异值分解公式 AV=UΣAV^{\prime}=U^{\prime} \Sigma 其实只需要调整矩阵 Σ\Sigma 相应元素即可

由于零空间的向量 xx 满足等式 Ax=0Ax=0,对于左零空间也类似,所以将矩阵 Σm×n\Sigma_{m \times n} 相应(对角线上的)元素设置为 0{\color{Red}0 } 即可

A[v1v2vrvr+1vn]=[u1u2urur+1um][σ1000000σ2000000σr000000000000000]A \begin{bmatrix} v_{1} & v_{2} & \dots & v_{r} & {\color{Red}v_{r+1}^{\prime}} & \dots & {\color{Red}v_{n}^{\prime}} \end{bmatrix} = \begin{bmatrix} u_{1} & u_{2} & \dots & u_{r} & {\color{Red}u_{r+1}^{\prime}} & \dots & {\color{Red}u_{m}^{\prime}} \end{bmatrix} \begin{bmatrix} \sigma_{1} & 0 & \dots & 0 & 0 & 0 & 0 \\ 0 & \sigma_{2} & \dots & 0 & 0 & 0 & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \vdots \\ 0 & 0 & \dots & \sigma_{r} & 0 & 0 & 0 \\ 0 & 0 & \dots & 0 & {\color{Red}0 } & 0 & 0 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & 0 & 0 & 0 & {\color{Red}0 } \\ \end{bmatrix}

奇异值分解的步骤

例如对于以下可逆矩阵 AA

A=[4433]A= \begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix}

其秩 rank 为 22,为了进行奇异值分解,需要在行空间 row space R2\mathbb{R^{2}} 中寻找一组正交基 v1v_{1}v2v_{2},在列空间 column space 寻找一组正交基 u1u_{1}u2u_{2},以及一组系数(正值)σ1\sigma_{1}σ2\sigma_{2},使得以下等式成立

{Av1=σ1u1Av2=σ2u2\begin{aligned} \left\{\begin{matrix} Av_{1}=\sigma_{1}u_{1} \\ Av_{2}=\sigma_{2}u_{2} \end{matrix}\right. \end{aligned}

写成矩阵形式 AV=UΣAV=U \Sigma

在等式 AV=UΣAV=U \Sigma 两边同时乘上 V1V^{-1} 可得 A=UΣV1A=U \Sigma V^{-1},由于 VV 是正交矩阵(各列向量相互垂直),所以 V1=VTV^{-1}=V^{T},则等式 A=UΣV1A=U \Sigma V^{-1} 可以写成 A=UΣVTA=U \Sigma V^{T} 就实现了奇异值分解


在求解(奇异值分解后的)各个矩阵时,通过对等式 A=UΣVTA=U \Sigma V^{T} 的变换,消去部分的矩阵,以降低求解的难度

提示

根据等式 A=UΣVTA=U \Sigma V^{T} 可得矩阵 AA 的转置为 AT=(UΣVT)T=(VT)TΣTUT=VΣTUTA^{T}=(U \Sigma V^{T})^{T}=(V^{T})^{T} \Sigma^{T} U^{T}=V \Sigma^{T} U^{T}

  • 求解矩阵 VV 时,可以在等式两边同时乘上 AT=VΣTUTA^{T}=V \Sigma^{T} U^{T}ATA=VΣTUTUΣVTA^{T}A=V \Sigma^{T} U^{T} U \Sigma V^{T}
    由于矩阵 UU 是正交矩阵,则 UT=U1U^{T}=U^{-1} 所以以上等式可以进一步化简ATA=VΣTUTUΣVT=VΣTU1UΣVT=VΣTΣVT\begin{aligned} A^{T}A&=V \Sigma^{T} U^{T} U \Sigma V^{T} \\ &=V \Sigma^{T} U^{-1} U \Sigma V^{T} \\ &=V \Sigma^{T} \Sigma V^{T} \end{aligned}
    由于矩阵 Σ2×2\Sigma^{2 \times 2} 是对角矩阵(除了对角线上的元素,其他元素都是 00),则 Σ=ΣT\Sigma=\Sigma^{T} 所以以上等式可以进一步化简ATA=VΣTΣVT=VΣ2VT=V[σ1200σ22]VT\begin{aligned} A^{T}A&=V \Sigma^{T} \Sigma V^{T} \\ &=V \Sigma^{2} V^{T} \\ &=V \begin{bmatrix} \sigma_{1}^{2} & 0 \\ 0 & \sigma_{2}^{2} \end{bmatrix} V^{T} \end{aligned}
    由于 ATAA^{T}A 是对称矩阵,所以以上等式其实就是对称矩阵的对角化 QΛQTQ \Lambda Q^{T} 形式
    所以矩阵 VV 就是对称矩阵 ATAA^{T}A 的特征向量矩阵
  • 求解矩阵 UU 时,类似地,可以通过构造矩阵 AATAA^{T} 来消去矩阵 VV,矩阵 UU 是对称矩阵 AATAA^{T} 的特征向量矩阵
  • 矩阵 Σ2\Sigma^{2} 是对称矩阵 ATAA^{T}A(或 ATAA^{T}A)的特征值矩阵。
    所以矩阵 Σ\Sigma 是对角矩阵,其对角线上的元素是对称矩阵 ATAA^{T}A(或 ATAA^{T}A)的特征值矩阵对角线上元素的正平方根
    AB 与 BA 具有相同特征值

    矩阵 Σ2\Sigma^{2} 是对称矩阵 ATAA^{T}AATAA^{T}A 的特征值矩阵,也就是说矩阵 ATAA^{T}AATAA^{T}A 具有相同的特征值。

    其中对于任意可逆矩阵 BB,矩阵 ABABBABA 都是具有相同特征值

    证明方法参考这一篇文章

    分别通过特征方程 det(ABλI)=0det(AB-\lambda I)=0det(BAλI)=0det(BA-\lambda I)=0 求出矩阵 ABABBABA 的所有特征值

    由于矩阵 BB 是可逆矩阵,所以存在 B1B^{-1},且 det(B1)0det(B^{-1}) \neq 0

    根据行列式特性9可知 det(ABλI)det(B1)=det((ABλI)B1)=det(AλB1)det(AB-\lambda I)det(B^{-1})=det((AB-\lambda I)B^{-1})=det(A-\lambda B^{-1}),同理可知 det(B1)det(BAλI)=det(B1(BAλI))=det(AλB1)det(B^{-1})det(BA-\lambda I)=det(B^{-1}(BA-\lambda I))=det(A-\lambda B^{-1})

    所以 det(ABλI)det(B1)=det(AλB1)=det(B1)det(BAλI)det(AB-\lambda I)det(B^{-1})=det(A-\lambda B^{-1})=det(B^{-1})det(BA-\lambda I)

    由于 det(B1)0det(B^{-1}) \neq 0 所以 det(ABλI)=det(BAλI)det(AB-\lambda I)=det(BA-\lambda I) 所以对于任意满足特征方程 det(ABλI)=0det(AB-\lambda I)=0 的特征值 λi\lambda_{i} 也满足特征方程 det(BAλI)=0det(BA-\lambda I)=0 即矩阵 ABABBABA 具有相同的特征值

另一种解法

也可以先通过构造矩阵 ATAA^{T}A 求出矩阵 VVΣ\Sigma

然后再通过 AV=UΣAV=U\Sigma 来求出矩阵 UU


对于以上示例,矩阵 A=[4433]A=\begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix}

  • 通过构造对称矩阵 ATAA^{T}A 求解矩阵 VVATA=[4343][4433]=[257725]\begin{aligned} A^{T}A&= \begin{bmatrix} 4 & -3 \\ 4 & 3 \end{bmatrix} \begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix} \\ &= \begin{bmatrix} 25 & 7 \\ 7 & 25 \end{bmatrix} \end{aligned}
    根据特征值和特征向量的定义,它们需要满足等式 Ax=λxAx=\lambda x,观察矩阵 ATA=[257725]A^{T}A=\begin{bmatrix} 25 & 7 \\ 7 & 25 \end{bmatrix} 的结构
    可知当 x=[11]x=\begin{bmatrix} 1 \\ 1 \end{bmatrix} 时,Ax=[3232]Ax=\begin{bmatrix} 32 \\ 32 \end{bmatrix},可以提取该向量的因子 3232 可得Ax=[257725][11]=32[11]\begin{aligned} Ax&= \begin{bmatrix} 25 & 7 \\ 7 & 25 \end{bmatrix} \begin{bmatrix} 1 \\ 1 \end{bmatrix} &=32 \begin{bmatrix} 1 \\ 1 \end{bmatrix} \end{aligned}
    所以特征值是 3232
    同理,观察矩阵 ATAA^{T}A 的结构,可知当 x=[11]x=\begin{bmatrix} 1 \\ -1 \end{bmatrix} 时,Ax=[1818]Ax=\begin{bmatrix} 18 \\ -18 \end{bmatrix},可以提取该向量的因子 1818 作为特征值
    将以上特征向量 [11]\begin{bmatrix} 1 \\ 1 \end{bmatrix}[11]\begin{bmatrix} 1 \\ -1 \end{bmatrix} 进行标准化,可以得到一组正交基 v1=[1/21/2]v_{1}=\begin{bmatrix} 1/ \sqrt{2} \\ 1/ \sqrt{2} \end{bmatrix}v2=[1/21/2]v_{2}=\begin{bmatrix} 1/ \sqrt{2} \\ -1/ \sqrt{2} \end{bmatrix} 它们构成矩阵 VV
    矩阵 ATAA^{T}A 的特征值构成矩阵 Σ\Sigma 的平方Σ2=[σ1200σ12]=[320018]\Sigma^{2}= \begin{bmatrix} \sigma_{1}^{2} & 0 \\ 0 & \sigma_{1}^{2} \end{bmatrix}= \begin{bmatrix} 32 & 0 \\ 0 & 18 \end{bmatrix}
    所以矩阵 Σ\SigmaΣ=[420032]\Sigma= \begin{bmatrix} 4 \sqrt{2} & 0 \\ 0 & 3 \sqrt{2} \end{bmatrix}
    提示

    也可以适用特征方程 det(ATAλI)=0det(A^{T}A-\lambda I)=0 求解特征值

  • 通过构造对称矩阵 AATAA^{T} 求解矩阵 UUAAT=[4433][4343]=[320018]\begin{aligned} AA^{T}&= \begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix} \begin{bmatrix} 4 & -3 \\ 4 & 3 \end{bmatrix} \\ &= \begin{bmatrix} 32 & 0 \\ 0 & 18 \end{bmatrix} \end{aligned}
    同理,观察矩阵 AATAA^{T} 的结构,可以直接找到满足 Ax=λxAx=\lambda x 的向量(和特征值),特征向量分别是 u1=[10]u_{1}=\begin{bmatrix} 1 \\ 0 \end{bmatrix}u2=[01]u_{2}=\begin{bmatrix} 0 \\ 1 \end{bmatrix}
    ⚠️ 但是考虑到前面所得的向量 v2=[1/21/2]v_{2}=\begin{bmatrix} 1/ \sqrt{2} \\ -1/ \sqrt{2} \end{bmatrix}Av2=[4433][1/21/2]=[032]Av_{2}=\begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix} \begin{bmatrix} 1/ \sqrt{2} \\ -1/ \sqrt{2} \end{bmatrix}= \begin{bmatrix} 0 \\ -3 \sqrt{2} \end{bmatrix}σ2=32\sigma_{2}=3\sqrt{2} 是正数,那么对应地 u2u_{2} 应该是负数,才可以让 Av2=σ2u2Av_{2}=\sigma_{2} u_{2} 成立,所以另一个特征向量应该取 u2=[01]u_{2}=\begin{bmatrix} 0 \\ -1 \end{bmatrix}

所以矩阵 AA 的奇异值分解形式为

A=UΣVT=[1001][420032][1/21/21/21/2]\begin{aligned} A&=U \Sigma V^{T} \\ &= \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} \begin{bmatrix} 4 \sqrt{2} & 0 \\ 0 & 3 \sqrt{2} \end{bmatrix} \begin{bmatrix} 1/ \sqrt{2} & 1/ \sqrt{2} \\ 1/ \sqrt{2} & -1/ \sqrt{2} \end{bmatrix} \end{aligned}

奇异矩阵的奇异值分解

对于不可逆(奇异)矩阵,则奇异值分解公式 A=UΣVTA=U \Sigma V^{T} 中,矩阵 UUVV包含零空间和左零空间的标准正交基,在矩阵 Σ\Sigma 中对角线上的相应元素为 00

例如对于以下奇异矩阵 AA

A=[4386]A= \begin{bmatrix} 4 & 3 \\ 8 & 6 \end{bmatrix}

这个不可逆矩阵在行空间 row space 和列空间 column space 都只有一维,相应地零空间 nullspace 和左零空间 left nullspace 维度是 11

观察矩阵 AA 的结构可知,行空间可以只由(以列向量形式)[43]\begin{bmatrix} 4 \\ 3 \end{bmatrix} 向量张成;列空间可以只由 [48]\begin{bmatrix} 4 \\ 8 \end{bmatrix} 向量张成

由于行空间和列空间都只有一维,所以可以很方便地求出这些空间的正交基,只需要将以上向量转换为单位向量即可

对于行空间 [43]\begin{bmatrix} 4 \\ 3 \end{bmatrix} 变成单位向量 v1=[4/42+323/42+32]=[4/53/5]=[0.80.6]v_{1}=\begin{bmatrix} 4/ \sqrt{4^{2}+3^{2}} \\ 3 / \sqrt{4^{2}+3^{2}} \end{bmatrix}=\begin{bmatrix} 4/5 \\ 3 /5\end{bmatrix}=\begin{bmatrix} 0.8 \\ 0.6 \end{bmatrix}

对于列空间,同理将 [48]\begin{bmatrix} 4 \\ 8 \end{bmatrix} 变成单位向量 u1=[1/52/5]u_{1}=\begin{bmatrix} 1/\sqrt{5} \\ 2/\sqrt{5} \end{bmatrix}

由于零空间 nullspace 与行空间 row space 这两个子空间正交 orthogonal,所以这两个空间的向量均相互垂直,则通过行空间的正交基,可以很方便地求出零空间的正交基 [0.60.8]\begin{bmatrix} 0.6 \\ -0.8 \end{bmatrix},作为 v2v_{2}

同理可以求出左零空间 left nullspace 的正交基 [2/51/5]\begin{bmatrix} 2/\sqrt{5} \\ -1/\sqrt{5} \end{bmatrix},作为 u2u_{2}

而求解矩阵 Σ\Sigma 时,可以构造任意一个对称矩阵(ATAA^{T}AAATAA^{T}

ATA=[4836][4386]=[80606045]\begin{aligned} A^{T}A&= \begin{bmatrix} 4 & 8 \\ 3 & 6 \end{bmatrix} \begin{bmatrix} 4 & 3 \\ 8 & 6 \end{bmatrix} \\ &= \begin{bmatrix} 80 & 60 \\ 60 & 45 \end{bmatrix} \end{aligned}

由于矩阵 ATAA^{T}A 不满秩(第一行向量与第二行向量线性相关),它的秩 rank 为 11,所以它必然由一个特征值为零 λ1=0\lambda_{1}=0,再根据特征值之和为矩阵的迹 λ1+λ2=80+45=125\lambda_{1}+\lambda_{2}=80+45=125 所以另一个特征值为 λ2=125\lambda_{2}=125

则矩阵 Σ\Sigma

Σ=[125000]\Sigma= \begin{bmatrix} \sqrt{125} & 0 \\ 0 & 0 \end{bmatrix}

则可逆矩阵 AA 的奇异值分解为

A=UΣVT=[1/52/52/51/5][125000][0.80.60.60.8]\begin{aligned} A&=U \Sigma V^{T} \\ &= \begin{bmatrix} 1/\sqrt{5} & 2/\sqrt{5} \\ 2/\sqrt{5} & -1/\sqrt{5} \end{bmatrix} \begin{bmatrix} \sqrt{125} & 0 \\ 0 & 0 \end{bmatrix} \begin{bmatrix} 0.8 & 0.6 \\ 0.6 & -0.8 \end{bmatrix} \end{aligned}

对于一般矩阵(可能是可逆矩阵),奇异值分解 A=UΣVTA=U \Sigma V^{T} 的作用是通过矩阵 AA 将向量 viv_{i} 线性变换为向量 uiu_{i},该操作将四个基本子空间联系起来了

其中这些向量是位于四个基本子空间的正交基:

  • 向量 v1,v2,vrv_{1}, v_{2}, \dots v_{r} 是行空间的标准正交基(行空间的维度是 rr),而向量 vr+1,vnv_{r+1}, \dots v_{n} 是零空间的标准正交基(零空间的维度是 nrn-r
  • 向量 u1,u2,uru_{1}, u_{2}, \dots u_{r} 是列空间的标准正交基(列空间的维度是 rr),而向量 ur+1,umu_{r+1}, \dots u_{m} 是左零空间的标准正交基(左零空间的维度是 mrm-r

Copyright © 2024 Ben

Theme BlogiNote

Icons from Icônes