【线性代数/机器学习】矩阵的奇异值与奇异值分解(SVD)

文章目录

一、引言

我们知道,对于一个 n × n n\times n n×n的矩阵 A A A,如果 A A A有 n n n个线性无关的特征向量,则 A A A可以相似对角化,即存在可逆矩阵 P P P使得 A = P Λ P − 1 A=P\Lambda P^{-1} A=PΛP−1,其中 Λ \Lambda Λ是 A A A的特征值组成的对角阵。 P P P的列实际上就是 A A A的特征向量。把 A A A分解为 P Λ P − 1 P\Lambda P^{-1} PΛP−1的过程称为矩阵的特征值分解(eigendecomposition)。但是,对于 m × n m\times n m×n的矩阵,其中 m ≠ n m\ne n m=n,我们就无能为力了。此时我们应该怎么分解这个矩阵呢?这里我们就引入了奇异值分解(singular value decomposition, SVD)的概念。

二、奇异值

设 A A A是一个 m × n m\times n m×n矩阵。我们对特征值已经比较熟悉了,所以我们对奇异值的定义也是从特征值出发获得的。什么样的矩阵具有特征值呢?答案是方阵。但 A A A不一定是方阵,不过我们有办法把它变成方阵------ A T A A^TA ATA是一个 n × n n\times n n×n的方阵。我们接下来考察 A T A A^T A ATA的特征值。

引理1 A T A A^T A ATA的每个特征值 λ \lambda λ都大于等于 0 0 0。

证明 :设 A T A x = λ x A^T A\boldsymbol{x}=\lambda\boldsymbol{x} ATAx=λx,其中 x \boldsymbol{x} x是 A T A A^T A ATA的一个特征向量。则 x T A T A x = λ x T x ∥ A x ∥ 2 = λ ∥ x ∥ 2 \boldsymbol{x}^T A^TA\boldsymbol{x}=\lambda \boldsymbol{x}^T\boldsymbol{x}\\ \|A\boldsymbol{x}\|^2=\lambda\|\boldsymbol{x}\|^2 xTATAx=λxTx∥Ax∥2=λ∥x∥2注意 ∥ A x ∥ 2 \|A\boldsymbol{x}\|^2 ∥Ax∥2与 ∥ x ∥ 2 \|\boldsymbol{x}\|^2 ∥x∥2都是非负数,故 λ ≥ 0 \lambda\ge 0 λ≥0。∎

现在我们来定义奇异值(singular value)。

定义2 设 λ 1 , λ 2 , ⋯   , λ n \lambda_1,\lambda_2,\cdots,\lambda_n λ1,λ2,⋯,λn是 A T A A^T A ATA的奇异值,满足 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ n ≥ 0 \lambda_1\ge\lambda_2\ge\cdots\ge\lambda_n\ge 0 λ1≥λ2≥⋯≥λn≥0。定义 σ i = λ i \sigma_i=\sqrt{\lambda_i} σi=λi ,则 σ 1 ≥ σ 2 ≥ ⋯ ≥ σ n ≥ 0 \sigma_1\ge\sigma_2\ge\cdots\ge\sigma_n\ge 0 σ1≥σ2≥⋯≥σn≥0。这些 σ i \sigma_i σi称为 A A A的奇异值。

命题3 A A A的非零奇异值个数等于 A A A的秩。

证明 :即证 r ( A T A ) = r ( A ) r(A^T A)=r(A) r(ATA)=r(A)。考虑齐次线性方程组 A T A x = 0 A^TA\boldsymbol{x}=\boldsymbol{0} ATAx=0,设 ξ \boldsymbol{\xi} ξ为它的一个解,即 A T A ξ = 0 A^T A\boldsymbol{\xi}=\boldsymbol{0} ATAξ=0,则 ξ T A T A ξ = 0 \boldsymbol{\xi}^T A^T A\boldsymbol{\xi}=\boldsymbol{0} ξTATAξ=0,即 ∥ A ξ ∥ 2 = 0 \|A\boldsymbol{\xi}\|^2=0 ∥Aξ∥2=0,故 A ξ = 0 A\boldsymbol{\xi}=0 Aξ=0。这说明 A T A x = 0 A^T A\boldsymbol{x}=0 ATAx=0的解也是 A x = 0 A\boldsymbol{x}=0 Ax=0的解。同时 A x = 0 A\boldsymbol{x}=0 Ax=0的解显然也是 A T A x = 0 A^T A\boldsymbol{x}=0 ATAx=0的解,因此两个线性方程组同解,这说明 r ( A T A ) = r ( A ) r(A^T A)=r(A) r(ATA)=r(A)。∎

很多时候我们会遇到这样一个问题: ∥ x ∥ \|\boldsymbol{x}\| ∥x∥和 ∥ A x ∥ \|A\boldsymbol{x}\| ∥Ax∥的大小有怎样的关系呢?把矩阵 A A A看作一个线性变换,它作用于 x \boldsymbol{x} x上可以改变其长度,那么长度最多变化多少倍呢?有了奇异值,我们就可以很方便地解决这个问题。

命题4 设 A A A是一个 m × n m\times n m×n矩阵, x \boldsymbol{x} x是一个 n × 1 n\times 1 n×1向量。则 ∥ A x ∥ ≤ σ 1 ∥ x ∥ \|A\boldsymbol{x}\|\le\sigma_1\|\boldsymbol{x}\| ∥Ax∥≤σ1∥x∥,其中 σ 1 \sigma_1 σ1是 A A A最大的奇异值,且取等条件为 x \boldsymbol{x} x是 A T A A^T A ATA对应于特征值 σ 1 2 \sigma_1^2 σ12的特征向量。

证明 :注意 A T A A^T A ATA是实对称矩阵,所以它存在单位正交特征向量组 v 1 , v 2 , ⋯   , v n \boldsymbol{v}_1,\boldsymbol{v}_2,\cdots,\boldsymbol{v}_n v1,v2,⋯,vn。若 x ∈ R n \boldsymbol{x}\in\mathbb{R}^n x∈Rn,则可以把 x \boldsymbol{x} x表示为 x = c 1 v 1 + c 2 v 2 + ⋯ + c n v n \boldsymbol{x}=c_1\boldsymbol{v}_1+c_2\boldsymbol{v}_2+\cdots+c_n\boldsymbol{v}n x=c1v1+c2v2+⋯+cnvn其中 c 1 , c 2 , ⋯   , c n c_1,c_2,\cdots,c_n c1,c2,⋯,cn是标量,满足 c 1 2 + c 2 2 + ⋯ + c n 2 = ∥ x ∥ 2 c_1^2+c_2^2+\cdots+c_n^2=\|\boldsymbol{x}\|^2 c12+c22+⋯+cn2=∥x∥2。再考察 ∥ A x ∥ 2 \|A\boldsymbol{x}\|^2 ∥Ax∥2: ∥ A x ∥ 2 = x T A T A x = ⟨ x , A T A x ⟩ = ⟨ ∑ i = 1 n c i v i , ∑ i = 1 n c i A T A v i ⟩ \|A\boldsymbol{x}\|^2=\boldsymbol{x}^T A^T A\boldsymbol{x}=\langle\boldsymbol{x},A^T A \boldsymbol{x}\rangle=\left\langle\sum\limits{i=1}^n c_i\boldsymbol{v}i,\sum\limits{i=1}^n c_i A^T A \boldsymbol{v}_i\right\rangle ∥Ax∥2=xTATAx=⟨x,ATAx⟩=⟨i=1∑ncivi,i=1∑nciATAvi⟩注意 v i \boldsymbol{v}_i vi是 A T A A^T A ATA对应于特征值 σ i 2 \sigma_i^2 σi2的特征向量,故 A T A v i = σ i 2 v i A^T A\boldsymbol{v}i=\sigma_i^2\boldsymbol{v}i ATAvi=σi2vi。因此 ∥ A x ∥ 2 = ⟨ ∑ i = 1 n c i v i , ∑ i = 1 n c i σ i 2 v i ⟩ = ∑ i = 1 n c i 2 σ i 2 ≤ ∑ i = 1 n c i 2 σ 1 2 = σ 1 2 ∥ x ∥ 2 \|A\boldsymbol{x}\|^2=\left\langle\sum\limits{i=1}^n c_i\boldsymbol{v}i,\sum\limits{i=1}^n c_i \sigma_i^2 \boldsymbol{v}i\right\rangle= \sum\limits{i=1}^n c_i^2\sigma_i^2\le\sum\limits{i=1}^n c_i^2\sigma_1^2=\sigma_1^2\|\boldsymbol{x}\|^2 ∥Ax∥2=⟨i=1∑ncivi,i=1∑nciσi2vi⟩=i=1∑nci2σi2≤i=1∑nci2σ12=σ12∥x∥2取等条件为 c 1 2 = ∥ x ∥ 2 c_1^2=\|\boldsymbol{x}\|^2 c12=∥x∥2且 c 2 = c 3 = ⋯ = c n = 0 c_2=c_3=\cdots=c_n=0 c2=c3=⋯=cn=0,此时 x = c 1 v \boldsymbol{x}=c_1\boldsymbol{v} x=c1v,故 x \boldsymbol{x} x是 A T A A^T A ATA对应于特征值 σ 1 2 \sigma_1^2 σ12的特征向量。证毕。∎

如果 x ⊥ v 1 \boldsymbol{x}\perp\boldsymbol{v}_1 x⊥v1,即 c 1 = 0 c_1=0 c1=0,那么同理可证 ∥ A x ∥ ≤ σ 2 ∥ x ∥ 2 \|A\boldsymbol{x}\|\le\sigma_2\|\boldsymbol{x}\|^2 ∥Ax∥≤σ2∥x∥2;如果 x ⊥ v 1 \boldsymbol{x}\perp\boldsymbol{v}_1 x⊥v1且 x ⊥ v 2 \boldsymbol{x}\perp\boldsymbol{v}_2 x⊥v2,即 c 1 = c 2 = 0 c_1=c_2=0 c1=c2=0,则 ∥ A x ∥ ≤ σ 3 ∥ x ∥ 2 \|A\boldsymbol{x}\|\le\sigma_3\|\boldsymbol{x}\|^2 ∥Ax∥≤σ3∥x∥2;依此类推。

三、奇异值分解的定义

上面介绍了奇异值,下面介绍如何利用奇异值对矩阵进行分解。

设 A A A是一个 m × n m\times n m×n矩阵, σ 1 ≥ σ 2 ≥ ⋯ ≥ σ n ≥ 0 \sigma_1\ge\sigma_2\ge\cdots\ge\sigma_n\ge 0 σ1≥σ2≥⋯≥σn≥0是它的奇异值。令 r r r为 A A A的秩,也就是 A A A非零奇异值的个数。

定义5 A A A的一个奇异值分解是具有如下形式的分解: A = U Σ V T A=U\Sigma V^T A=UΣVT其中

  • U U U是一个 m × m m\times m m×m正交矩阵;
  • V V V是一个 n × n n\times n n×n正交矩阵;
  • Σ \Sigma Σ是一个 m × n m\times n m×n矩阵,它非常类似于一个对角矩阵:其第 i i i个对角元是 σ i \sigma_i σi,对于 i = 1 , 2 , ⋯   , r i=1,2,\cdots,r i=1,2,⋯,r。 Σ \Sigma Σ的其他元素都是 0 0 0。

例如,当 A A A是对称方阵时,它的奇异值实际上就是特征值的绝对值。

四、如何进行奇异值分解

引理6

(1) ∥ A v i ∥ = σ i \|A\boldsymbol{v}_i\|=\sigma_i ∥Avi∥=σi;

(2) 若 i ≠ j i\ne j i=j,则 A v i A\boldsymbol{v}_i Avi与 A v j A\boldsymbol{v}_j Avj正交。

证明 : ⟨ A v i , A v j ⟩ = v i T A T A v j = v i T σ j 2 v j = σ j 2 ⟨ v i , v j ⟩ \langle A\boldsymbol{v}_i,A\boldsymbol{v}_j\rangle=\boldsymbol{v}_i^T A^T A\boldsymbol{v}_j=\boldsymbol{v}_i^T\sigma_j^2\boldsymbol{v}_j=\sigma_j^2\langle\boldsymbol{v}_i,\boldsymbol{v}_j\rangle ⟨Avi,Avj⟩=viTATAvj=viTσj2vj=σj2⟨vi,vj⟩。

  • 若 i = j i=j i=j,由 ∥ v i ∥ = 1 \|\boldsymbol{v}_i\|=1 ∥vi∥=1知 ∥ A v i ∥ 2 = σ i 2 \|A\boldsymbol{v}_i\|^2=\sigma_i^2 ∥Avi∥2=σi2;
  • 若 i ≠ j i\ne j i=j,由 v i ⊥ v j \boldsymbol{v}_i\perp \boldsymbol{v}_j vi⊥vj知 A v i ⊥ A v j A\boldsymbol{v}_i\perp A\boldsymbol{v}_j Avi⊥Avj。

定理7 设 A A A是一个 m × n m\times n m×n矩阵。则我们可以这样构造一个 A A A的奇异值分解 A = U Σ V T A=U\Sigma V^T A=UΣVT,其中:

  • V V V是 A T A A^T A ATA的单位正交特征向量组 v 1 , v 2 , ⋯   , v n \boldsymbol{v}_1,\boldsymbol{v}_2,\cdots,\boldsymbol{v}_n v1,v2,⋯,vn,满足 A T A v i = σ i 2 v i A^T A\boldsymbol{v}_i=\sigma_i^2 \boldsymbol{v}_i ATAvi=σi2vi;
  • 若 i ≤ r i\le r i≤r(此时 σ i ≠ 0 \sigma_i\ne 0 σi=0),则 U U U的第 i i i列是 1 σ 1 A v i \frac{1}{\sigma_1}A\boldsymbol{v}_i σ11Avi。根据引理6,这些列是单位正交的,其他列可以通过任意地扩充 R m \mathbb{R}^m Rm的单位正交基得到。

证明 :我们只需证明,如果 U U U和 V V V按照上面的方式定义,则 A = U Σ V T A=U\Sigma V^T A=UΣVT。我们无法直接证明 A = U Σ V T A=U\Sigma V^T A=UΣVT,但是我们可以证明 ∀ x ∈ R n \forall\boldsymbol{x}\in\mathbb{R}^n ∀x∈Rn, U Σ V T x = A x U\Sigma V^T\boldsymbol{x}=A\boldsymbol{x} UΣVTx=Ax。这就可以说明 A = U Σ V T A=U\Sigma V^T A=UΣVT(因为若 ∀ x ∈ R n \forall\boldsymbol{x}\in\mathbb{R}^n ∀x∈Rn都有 A x = B x A\boldsymbol{x}=B\boldsymbol{x} Ax=Bx,则 ∀ x ∈ R n \forall\boldsymbol{x}\in\mathbb{R}^n ∀x∈Rn都有 ( A − B ) x = 0 (A-B)\boldsymbol{x}=0 (A−B)x=0,即该线性方程组的基础解系的秩为 n n n, r ( A − B ) = 0 r(A-B)=0 r(A−B)=0, A − B = O A-B=O A−B=O, A = B A=B A=B)。考虑 V T x = [ v 1 T v 2 T ⋮ v n T ] x = [ v 1 T x v 2 T x ⋮ v n T x ] V^T\boldsymbol{x}=\begin{bmatrix}\boldsymbol{v}_1^T\\\boldsymbol{v}_2^T\\\vdots\\\boldsymbol{v}_n^T\end{bmatrix}\boldsymbol{x}=\begin{bmatrix}\boldsymbol{v}_1^T\boldsymbol{x}\\\boldsymbol{v}_2^T\boldsymbol{x}\\\vdots\\\boldsymbol{v}_n^T\boldsymbol{x}\end{bmatrix} VTx= v1Tv2T⋮vnT x= v1Txv2Tx⋮vnTx 则 Σ V T x = [ σ 1 v 1 T x σ 2 v 2 T x ⋮ σ r v r T x 0 ⋮ 0 ] \Sigma V^T\boldsymbol{x}=\begin{bmatrix}\sigma_1\boldsymbol{v}_1^T\boldsymbol{x}\\\sigma_2\boldsymbol{v}_2^T\boldsymbol{x}\\\vdots\\\sigma_r\boldsymbol{v}_r^T\boldsymbol{x}\\0\\\vdots\\0\end{bmatrix} ΣVTx= σ1v1Txσ2v2Tx⋮σrvrTx0⋮0 左乘 U U U得 U Σ V T x = ( σ 1 v 1 T x ) 1 σ 1 A v 1 + ( σ 2 v 2 T x ) 1 σ 2 A v 2 + ⋯ + ( σ r v r T x ) 1 σ r A v r = A v 1 v 1 T x + A v 2 v 2 T x + ⋯ + A v r v r T x = A v 1 v 1 T x + A v 2 v 2 T x + ⋯ + A v r v r T x + ⋯ + A v n v n T x = A ( v 1 v 1 T + v 2 v 2 T + ⋯ + v n v n T ) x = A V T V x = A x \begin{aligned} U\Sigma V^T\boldsymbol{x}&=(\sigma_1\boldsymbol{v}_1^T\boldsymbol{x})\frac{1}{\sigma_1}A\boldsymbol{v}_1+(\sigma_2\boldsymbol{v}_2^T\boldsymbol{x})\frac{1}{\sigma_2}A\boldsymbol{v}_2+\cdots+(\sigma_r\boldsymbol{v}_r^T\boldsymbol{x})\frac{1}{\sigma_r}A\boldsymbol{v}_r\\ &=A\boldsymbol{v}_1\boldsymbol{v}_1^T\boldsymbol{x}+A\boldsymbol{v}_2\boldsymbol{v}_2^T\boldsymbol{x}+\cdots+A\boldsymbol{v}_r\boldsymbol{v}_r^T\boldsymbol{x}\\ &=A\boldsymbol{v}_1\boldsymbol{v}_1^T\boldsymbol{x}+A\boldsymbol{v}_2\boldsymbol{v}_2^T\boldsymbol{x}+\cdots+A\boldsymbol{v}_r\boldsymbol{v}_r^T\boldsymbol{x}+\cdots+A\boldsymbol{v}_n\boldsymbol{v}_n^T\boldsymbol{x}\\ &=A(\boldsymbol{v}_1\boldsymbol{v}_1^T+\boldsymbol{v}_2\boldsymbol{v}_2^T+\cdots+\boldsymbol{v}_n\boldsymbol{v}_n^T)\boldsymbol{x}\\ &=AV^T V\boldsymbol{x}\\ &=A\boldsymbol{x} \end{aligned} UΣVTx=(σ1v1Tx)σ11Av1+(σ2v2Tx)σ21Av2+⋯+(σrvrTx)σr1Avr=Av1v1Tx+Av2v2Tx+⋯+AvrvrTx=Av1v1Tx+Av2v2Tx+⋯+AvrvrTx+⋯+AvnvnTx=A(v1v1T+v2v2T+⋯+vnvnT)x=AVTVx=Ax注意这里用到了当 i > r i>r i>r时 A v i = σ i = 0 A\boldsymbol{v}_i=\sigma_i=0 Avi=σi=0。这样就证明了 A = U Σ V T A=U\Sigma V^T A=UΣVT。∎

矩阵的奇异值分解在机器学习中有广泛应用,比如在主成分分析(Principal Component Analysis, PCA)中发挥着重要作用。

参考资料

  1. https://en.wikipedia.org/wiki/Eigendecomposition_of_a_matrix
  2. https://math.berkeley.edu/~hutching/teach/54-2017/svd-notes.pdf
相关推荐
好吃番茄9 分钟前
U mamba配置问题;‘KeyError: ‘file_ending‘
人工智能·机器学习
slomay2 小时前
关于对比学习(简单整理
经验分享·深度学习·学习·机器学习
AI完全体3 小时前
【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)
人工智能·深度学习·神经网络·机器学习·过拟合·模型复杂度·偏差-方差
羊小猪~~5 小时前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
我是哈哈hh5 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
萱仔学习自我记录6 小时前
微调大语言模型——超详细步骤
人工智能·深度学习·机器学习
大神薯条老师7 小时前
Python从入门到高手5.1节-Python简单数据类型
爬虫·python·深度学习·机器学习·数据分析
zmjia1118 小时前
全流程Python编程、机器学习与深度学习实践技术应用
python·深度学习·机器学习
龙的爹23338 小时前
论文翻译 | Generated Knowledge Prompting for Commonsense Reasoning
人工智能·gpt·机器学习·语言模型·自然语言处理·nlp·prompt
_.Switch9 小时前
Python机器学习:自然语言处理、计算机视觉与强化学习
python·机器学习·计算机视觉·自然语言处理·架构·tensorflow·scikit-learn