线性代数学习笔记10-1:奇异值分解SVD(SVD的由来和推导、SVD与极分解、SVD的应用)

回顾:

  • 对于有n个线性无关特征向量的矩阵,可对角化 A = S Λ S − 1 \boldsymbol{A} =\boldsymbol{S} \boldsymbol{\Lambda} \boldsymbol{S}^{-1} A=SΛS1,特征向量矩阵 S \boldsymbol{S} S列向量为特征向量
  • 对于正定矩阵,特征值都是正数,所有特征向量之间是正交的,故特征向量矩阵 Q \boldsymbol{Q} Q为正交矩阵,其对角化结果 A = Q Λ Q T \boldsymbol{A} =\boldsymbol{Q} \boldsymbol{\Lambda} \boldsymbol{Q}^{T} A=QΛQT(视为奇异值分解的特殊情况)
  • 对于一般的任意矩阵,奇异值分解 A = U Σ V T \boldsymbol{A} =\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{T} A=UΣVT,其中 U \boldsymbol{U} U V \boldsymbol V V为正交矩阵

当对角化(特征值分解)不可用时,我们转而寻求奇异值分解SVD,可将其视为“广义的特征值分解”

下面将看到,奇异值分解是矩阵最终的、最好的分解
ps.本文主要从“广义的特征值分解”角度来介绍SVD,也可从几何意义上理解

奇异值分解SVD

若矩阵 A m × n \boldsymbol{A}_{m\times n} Am×n的秩为 r r r,行数为 m m m,列数为 n n n

奇异值分解SVD(Singular value decomposition):任意矩阵可分解为 A m × n = U m × m Σ m × n V n × n T \boldsymbol{A}_{m\times n} =\boldsymbol{U}_{m\times m} \boldsymbol{\Sigma}_{m\times n} \boldsymbol{V}^{T}_{n\times n} Am×n=Um×mΣm×nVn×nT其中正交矩阵 U \boldsymbol{U} U保存左奇异向量,正交矩阵 V \boldsymbol V V保存右奇异向量
对角矩阵 Σ \boldsymbol{\Sigma} Σ保存了奇异值 σ \sigma σ,并且一定有奇异值 σ ≥ 0 \sigma\geq 0 σ0(总是约定奇异值非负)

SVD的由来

对于方阵,其特征向量满足 A x = λ x \boldsymbol{A} \mathbf{x}=\lambda \mathbf{x} Ax=λx,矩阵形式为 A S = S Λ \boldsymbol{A}\boldsymbol{S}=\boldsymbol{S} \boldsymbol{\Lambda} AS=SΛ
在此基础上,若存在 n n n个无关特征向量( S \boldsymbol{S} S可逆),即可获得 A = S Λ S − 1 \boldsymbol{A} =\boldsymbol{S} \boldsymbol{\Lambda} \boldsymbol{S}^{-1} A=SΛS1

对于一般的“长方形矩阵”,向量 A x \boldsymbol{A} \mathbf{x} Ax x \mathbf{x} x维度直接不对齐
我们退而求其次,类比“特征向量”,定义奇异向量: A v i = σ i u i , i = 1 , ⋯   , r \boldsymbol{A} \mathbf{v}_{i}=\sigma_{i} \mathbf{u}_{i}, i=1, \cdots, r Avi=σiui,i=1,,r
写为矩阵形式 A V r × n = U m × r Σ r × r A [ v 1 ⋯ v r ] = [ u 1 ⋯ u r ] [ σ 1 ⋱ σ r ] \begin{aligned} A V_{r \times n}&=U_{m \times r} \Sigma_{r \times r} \\ A\left[v_{1} \cdots v_{r}\right]&=\left[u_{1} \cdots u_{r}\right]\left[\begin{array}{lll} \sigma_{1} & & \\ & \ddots & \\ & & \sigma_{r}\end{array}\right] \end{aligned} AVr×nA[v1vr]=Um×rΣr×r=[u1ur] σ1σr
要注意的是,由于矩阵秩 r r r的限制,上面只能找到 r r r σ i > 0 \sigma_i>0 σi>0

此即 U m × n V ^ n × r = U ^ m × r Σ ^ r × r \mathbf U_{m\times n}\hat{\mathbf V}_{n\times r}=\hat{\mathbf U}_{m\times r}\hat{\mathbf \Sigma}_{r\times r} Um×nV^n×r=U^m×rΣ^r×r,对应下图中的红色部分
在这里插入图片描述
下面将蓝色部分“填充”完整,得到正交矩阵(方阵) U \boldsymbol{U} U V \boldsymbol{V} V

剩下的奇异值 σ i = 0 \sigma_i=0 σi=0,满足关系 A v i = 0 ( = σ i u i ) , i = r + 1 , ⋯   , n \boldsymbol{A} \mathbf{v}_{i}=0(=\sigma_{i} \mathbf{u}_{i}), i=r+1, \cdots, n Avi=0(=σiui),i=r+1,,n
A V n × n = U m × m Σ m × n A [ v 1 ⋯ v r ⋯ v n ] = [ u 1 ⋯ u r ⋯ u m ] [ σ 1 ⋱ σ r ] \begin{aligned} A V_{n \times n}&=U_{m \times m} \Sigma_{m \times n} \\ A\left[v_{1} \cdots v_{r} \cdots v_{n}\right]&=\left[u_{1} \cdots u_{r} \cdots u_{m}\right]\left[\begin{array}{lll} \sigma_{1} & && \\ & \ddots && \\ & & \sigma_{r}& \\ & & & \end{array}\right]\end{aligned} AVn×nA[v1vrvn]=Um×mΣm×n=[u1urum] σ1σr
最终,我们得到了SVD: A V = U Σ ⇒ A = U Σ V T \mathbf A\mathbf V=\mathbf U\mathbf \Sigma\Rightarrow\mathbf A=\mathbf U\mathbf \Sigma\mathbf V^T AV=A=VT

  • 正交矩阵 V n × n \boldsymbol{V}_{n\times n} Vn×n对应 R n \mathbf R^n Rn空间中的一组标准正交基
  • 正交矩阵 U m × m \boldsymbol{U}_{m\times m} Um×m对应 R m \mathbf R^m Rm空间中的一组标准正交基
  • 注意,这时 Σ m × n \boldsymbol{\Sigma}_{m\times n} Σm×n不是对角阵,但是其中蕴含了一个对角阵

奇异值分解SVD等价于:在整个 R n \mathbf R^n Rn空间中,找出一组标准正交基 v i \mathbf{v}_{i} vi,且这组基经过矩阵 A \mathbf {A} A的线性变换后,能够生成 R m \mathbf R^m Rm空间中的一组标准正交基 u i \mathbf u_i ui,且满足 A v i = σ i u i \mathbf {A}\mathbf v_i=\sigma_i \mathbf u_i Avi=σiui σ i \sigma_i σi为伸缩因子)

这里的美妙之处在于,我们找到了一组特殊的标准正交基 V \mathbf V V,它们经过 A \mathbf {A} A的线性变换后,仍得到一组标准正交基 U \mathbf U U A V = U Σ \mathbf A\mathbf V=\mathbf U\mathbf \Sigma AV=

实际上,而正定矩阵的对角化 A = Q Λ Q T \boldsymbol{A} =\boldsymbol{Q} \boldsymbol{\Lambda} \boldsymbol{Q}^{T} A=QΛQT可以视为这里SVD的特殊情况,其 U = V = Q \mathbf U=\mathbf V=\mathbf Q U=V=Q
ps. 必须正定/半正定,从而特征值非负,对应这里的 Σ = Λ \boldsymbol{\Sigma}=\boldsymbol{\Lambda} Σ=Λ

如何获取 A = U Σ V T \boldsymbol{A} =\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{T} A=UΣVT中的 U \boldsymbol{U} U V \boldsymbol{V} V

前置知识:
矩阵 A T A \boldsymbol{A}^{T} \boldsymbol{A} ATA A A T \boldsymbol{A} \boldsymbol{A}^{T} AAT是对称矩阵,并且必为半正定/正定矩阵(特征值全为非负数)
A \mathbf A A列满秩 r = n r=n r=n A T A \boldsymbol{A}^{T} \boldsymbol{A} ATA为正定的,正定矩阵对角化结果 A T A = Q Λ Q T \boldsymbol{A}^{T} \boldsymbol{A} =\boldsymbol{Q} \boldsymbol{\Lambda} \boldsymbol{Q}^{T} ATA=QΛQT

根据上面,SVD就是要找出两组标准正交基,满足 A v i = σ i u i \mathbf {A}\mathbf v_i=\sigma_i \mathbf u_i Avi=σiui σ i ≥ 0 \sigma_i\geq0 σi0为伸缩因子),两组标准正交基分别组成了正交矩阵 U \boldsymbol{U} U和正交矩阵 V \boldsymbol{V} V

SVD中,我们要找正交矩阵,并且还需要非负数的奇异值,自然可以联想到对 A T A \boldsymbol{A}^{T} \boldsymbol{A} ATA做特征值分解/相似对角化,其中正好出现了正交矩阵非负数的特征值

  1. 如何获取正交矩阵 V \boldsymbol{V} V
    根据 A = U Σ V T \boldsymbol{A} =\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{T} A=UΣVT可得 A T A = V Σ T U T U Σ V T = V Σ T Σ V T = V [ σ 1 2 σ 2 2 ⋱ σ r 2 ] V T (当 Σ 为对角阵) \begin{aligned} \boldsymbol{A}^{T} \boldsymbol{A} &=\boldsymbol{V} \boldsymbol{\Sigma}^{T} \boldsymbol{U}^{T} \boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{T} \\ &=\boldsymbol{V} \boldsymbol{\Sigma}^{T} \boldsymbol{\Sigma} \boldsymbol{V}^{T} \\ &=\boldsymbol{V}\left[\begin{array}{llll} \sigma_{1}^{2} & & & \\ & \sigma_{2}^{2} & & \\ & & \ddots & \\ & & & \sigma_{r}{ }^{2} \end{array}\right] \boldsymbol{V}^{T}(当\boldsymbol{\Sigma}为对角阵) \end{aligned} ATA=VΣTUTUΣVT=VΣTΣVT=V σ12σ22σr2 VT(当Σ为对角阵)上式就相当于正定矩阵 A T A \boldsymbol{A}^{T} \boldsymbol{A} ATA的相似对角化
    其中 σ i 2 = λ i \sigma_i^2=\lambda_i σi2=λi对应 A T A \boldsymbol{A}^{T} \boldsymbol{A} ATA的特征值(总是约定奇异值非负: σ i = λ i \sigma_i=\sqrt\lambda_i σi=λ i),
    V \boldsymbol{V} V对应对称阵 A T A \boldsymbol{A}^{T} \boldsymbol{A} ATA的(标准正交)特征向量
  2. 如何获取正交矩阵 U \boldsymbol{U} U(不完全正确的做法)
    类似上面,有 A A T = U Σ Σ T U T \boldsymbol{A}\boldsymbol{A}^{T}=\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{\Sigma}^{T} \boldsymbol{U}^{T} AAT=UΣΣTUT σ i 2 \sigma_i^2 σi2对应 A A T \boldsymbol{A}\boldsymbol{A}^{T} AAT的特征值,
    U \boldsymbol{U} U对应正交矩阵 A A T \boldsymbol{A}\boldsymbol{A}^{T} AAT的(标准正交)特征向量;

A A T \boldsymbol{A}\boldsymbol{A}^{T} AAT m m m阶方阵(有 m m m个特征值), A T A \boldsymbol{A}^{T}\boldsymbol{A} ATA n n n阶方阵(有 n n n个特征值)
实际上 A A T \boldsymbol{A}\boldsymbol{A}^{T} AAT A T A \boldsymbol{A}^{T}\boldsymbol{A} ATA有相同的非零特征值,不匹配的那部分都是0特征值,这与之前的推导一致
(特征值的性质: A B \boldsymbol{A}\boldsymbol{B} AB B A \boldsymbol{B}\boldsymbol{A} BA有相同的非零特征值;当 A \boldsymbol{A} A B \boldsymbol{B} B均为 n n n阶方阵, A B \boldsymbol{A}\boldsymbol{B} AB B A \boldsymbol{B}\boldsymbol{A} BA有相同特征值)
实际上,0奇异值对应的那些左/右奇异向量,也就是 A A T \boldsymbol{A} \boldsymbol{A}^{T} AAT A T A \boldsymbol{A}^{T} \boldsymbol{A} ATA的零空间中的正交向量
另外,若 A \boldsymbol{A} A为对称/反对称矩阵,则满足 A A T = A T A \boldsymbol{A}\boldsymbol{A}^{T}=\boldsymbol{A}^{T}\boldsymbol{A} AAT=ATA,此时 U = V \boldsymbol{U}=\boldsymbol{V} U=V

但注意,这样的做法是错误

原因:

  • 对于特征向量有 A v i = λ i v i \mathbf {A}\mathbf v_i=\lambda_i \mathbf v_i Avi=λivi,等式左右都是 v i \mathbf v_i vi,那么为了表达线性变换 A \mathbf {A} A使得特征向量 v i \mathbf v_i vi反向拉伸,会不可避免的出现 λ i \lambda_i λi为负数的情况;
  • 对于奇异向量有 A v i = σ i u i \mathbf {A}\mathbf v_i=\sigma_i \mathbf u_i Avi=σiui,等式左右分别是 v i \mathbf v_i vi u i \mathbf u_i ui那么理论上当 σ i \sigma_i σi为负数时,我们完全可以将其变为正数,而把负号放到 u i \mathbf u_i ui上,从而总是约定和保证 σ i \sigma_i σi非负

至此就明白了,由上面方法求出的 v i \mathbf{v}_i vi u i \mathbf{u}_i ui有可能需要搭配负数的 σ i \sigma_i σi(否则 A v i = σ i u i \mathbf {A}\mathbf v_i=\sigma_i \mathbf u_i Avi=σiui不成立)
又因为我们默认 σ i > 0 \sigma_i>0 σi>0,因而获取 U \boldsymbol{U} U时,应当用 A V = U Σ \boldsymbol{A}\boldsymbol{V} =\boldsymbol{U} \boldsymbol{\Sigma} AV=UΣ来帮助确定特征向量 u i \mathbf{u}_i ui所取的符号

  1. 如何获取正交矩阵 U \boldsymbol{U} U(正确做法)
    u i = A v i σ i \mathbf u_i=\frac{\mathbf {A}\mathbf v_i}{\sigma_i} ui=σiAvi,其中 σ i \sigma_i σi的选择要使 u i \mathbf u_i ui标准化(长为1)

这里还有一个小问题:若把 u i \mathbf u_i ui视为上述的 A A T \boldsymbol{A}\boldsymbol{A}^{T} AAT的特征向量,我们还必须验证各个 u i \mathbf u_i ui互相正交
(原因:重特征值有一个特征子空间,其中任意一组基都是特征向量,不一定正交)
验证各个 u i \mathbf u_i ui互相正交:
u 1 T u 2 = ( A v 1 σ 1 ) T ( A v 2 σ 2 ) = v 1 T A T A v 2 σ 1 σ 2 = v 1 T σ 2 2 v 2 σ 1 σ 2 = σ 2 σ 1 v 1 T v 2 = 0 \mathbf{u}_{1}^{T} \mathbf{u}_{2}=\left(\frac{A \mathbf{v}_{1}}{\sigma_{1}}\right)^{T}\left(\frac{A \mathbf{v}_{2}}{\sigma_{2}}\right)=\frac{\mathbf{v}_{1}^{T} A^{T} A \mathbf{v}_{2}}{\sigma_{1} \sigma_{2}}=\frac{\mathbf{v}_{1}^{T} \sigma_{2}^2 \mathbf{v}_{2}}{\sigma_{1} \sigma_{2}}=\frac{\sigma_{2}}{\sigma_{1}} \mathbf{v}_{1}^{T} \mathbf{v}_{2}=0 u1Tu2=(σ1Av1)T(σ2Av2)=σ1σ2v1TATAv2=σ1σ2v1Tσ22v2=σ1σ2v1Tv2=0

但是,当矩阵规模较大时,上述的 A T A \boldsymbol{A}^{T} \boldsymbol{A} ATA方法计算量太大
所以实际中并不使用上述方法求SVD,我们通过这个过程进一步理解SVD即可

SVD与极分解

A = U Σ V T = ( U Σ U T ) U V T \boldsymbol{A} =\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{T}=(\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{U}^T) \boldsymbol{U} \boldsymbol{V}^{T} A=UΣVT=(UΣUT)UVT
由此得到了一种新的分解,即“极分解”(Polar decomposition)
A = S Q \boldsymbol{A} =\boldsymbol S \boldsymbol Q A=SQ其中,

  • S = U Σ U T \boldsymbol S=\boldsymbol{U}\boldsymbol{\Sigma}\boldsymbol{U}^T S=UΣUT为对称矩阵,对应了简单的拉伸(对称阵相似于实对角阵 Σ \boldsymbol{\Sigma} Σ,对应的变换仅伸缩了坐标轴)
  • Q = U V T \boldsymbol Q=\boldsymbol{U} \boldsymbol{V}^{T} Q=UVT为正交矩阵,对应了旋转的线性变换

几何上的意义:任意矩阵,对应的线性变换可拆分为伸缩、旋转(还有投影)

  • 类比:复数可以表示为 r e j θ re^{j\theta} rejθ,其中两项分别对应“拉伸”和“旋转”
    这里的分解类似, S \boldsymbol S S Q \boldsymbol Q Q分别对应了“拉伸”和“旋转”

矩阵 A \boldsymbol{A} A是否可逆,决定SVD是否有0奇异值

SVD分解结果(奇异值) A = U Σ V T \boldsymbol{A} =\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{T} A=UΣVT展示了矩阵 A \boldsymbol{A} A的各方面特征

  • 例如 Σ = [ 3 0 0 2 ] \boldsymbol{\Sigma}=\left[\begin{array}{cc}3 & 0 \\0 & 2\end{array}\right] Σ=[3002],则 A \boldsymbol{A} A可逆
    ps. 可逆矩阵 r = n r=n r=n,则 A T A \boldsymbol{A}^{T} \boldsymbol{A} ATA A A T \boldsymbol{A}\boldsymbol{A}^{T} AAT为正定矩阵(特征值全为正,对应 A \boldsymbol{A} A奇异值全为正
  • Σ = [ 3 0 0 − 2 ] \boldsymbol{\Sigma}=\left[\begin{array}{cc}3 & 0 \\0 & -2\end{array}\right] Σ=[3002],这不是SVD,因为我们奇异值不可能为负值
  • Σ = [ 3 0 0 0 ] \boldsymbol{\Sigma}=\left[\begin{array}{cc}3 & 0 \\0 & 0\end{array}\right] Σ=[3000] Σ \boldsymbol{\Sigma} Σ秩为1,而 U \boldsymbol{U} U V \boldsymbol{V} V为正交的,因此 A \boldsymbol{A} A秩为1,不可逆
    理解[ A \boldsymbol{A} A不满秩则不可逆]:对矩阵做SVD A = U Σ V T \boldsymbol{A}=\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{T} A=UΣVT A \boldsymbol{A} A行/列不满秩,则矩阵零空间有非零向量,那么就有 A x = 0 \mathbf A\mathbf x=\mathbf 0 Ax=0,进而SVD中的 Σ \boldsymbol{\Sigma} Σ右下角相应出现0元素,这从根本上决定了 A \boldsymbol{A} A与其他矩阵相乘,不可能得到单位阵(即不可逆)

另外, A \boldsymbol{A} A的零空间由 V \boldsymbol{V} V中那些特征值为0的特征向量(即 v 2 \mathbf v_2 v2)给出,因为此时 A V = U Σ = 0 \boldsymbol{A}\boldsymbol{V} =\boldsymbol{U} \boldsymbol{\Sigma}=0 AV=UΣ=0
更多的,求 A \boldsymbol{A} A的左零空间、列空间等…也能从SVD中找到答案,详见笔记10-3

推论:矩阵行列式 d e t ( A ) det(\boldsymbol{A}) det(A)=特征值乘积 λ 1 λ 2 . . . λ n \lambda_1\lambda_2...\lambda_n λ1λ2...λn=奇异值乘积 σ 1 σ 2 . . . σ n \sigma_1\sigma_2...\sigma_n σ1σ2...σn
原因: d e t ( A ) = d e t ( U Σ V T ) = d e t ( Σ ) det(\boldsymbol{A}) =det(\boldsymbol{U} \boldsymbol{\Sigma} \boldsymbol{V}^{T})=det(\boldsymbol{\Sigma}) det(A)=det(UΣVT)=det(Σ)(正交矩阵行列式为±1)

SVD的应用

  • 大型矩阵 A \boldsymbol{A} A,希望提取重要信息(不只是简单的找出较大的元素值),可以做SVD并从“秩1矩阵分解”的角度来看:秩1矩阵 σ 1 u 1 v 1 T \sigma_1\mathbf{u}_1\mathbf{v}_1^T σ1u1v1T对应了矩阵最重要的部分
  • 奇异值分解在最小二乘法问题中有重要应用
    因为在实际问题中常碰到矩阵 A \boldsymbol{A} A不是列满秩( r < n r<n r<n)的状态,因此 A T A \boldsymbol{A}^T\boldsymbol{A} ATA不可逆(之前学过,当半正定矩阵满足 x T A x = 0 ( x ≠ 0 ) \mathbf{x}^{T} \boldsymbol{A} \mathbf{x}=0(\mathbf{x}\neq 0) xTAx=0(x=0),则至少有一个特征值为0),无法用之前的方法求最优解,此时需要SVD
    即使是列满秩的情况,当矩阵是超大型矩阵时, A T A \boldsymbol{A}^T\boldsymbol{A} ATA的计算量太大,用奇异值分解SVD会帮助降低计算量
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值