奇异值分解(singular value decomposition, SVD)是一种矩阵因子分解方法。任意一个m×nm\times nm×n的矩阵都可以表示为三个矩阵的乘积(因子分解)形式,矩阵的奇异值分解一定存在,但不唯一。奇异值分解可以看作是矩阵数据压缩的一种方法,这种近似是平方损失意义下的最优近似。
一、奇异值分解的定义与性质
矩阵的奇异值分解是指将一个非零的m×nm\times nm×n实矩阵AAA表示为三个实矩阵乘积形式的运算,即
A=UΣVTA=U\Sigma V^TA=UΣVT 其中UUU是mmm阶正交矩阵,VVV是nnn阶正交矩阵,Σ\SigmaΣ是由降序排列的非负的对角线元素组成的m×nm\times nm×n对角矩阵。
根据上述描述,有
UUT=IUU^T=IUUT=IVVT=IVV^T=IVVT=Ip=min(m,n)p=\min(m,n)p=min(m,n)Σ=diag(σ1,σ2,⋯ ,σp)\Sigma=diag(\sigma_1,\sigma_2,\cdots,\sigma_p)Σ=diag(σ1,σ2,⋯,σp)σ1≥σ2≥⋯≥σp≥0\sigma_1\ge\sigma_2\ge\cdots\ge\sigma_p\ge0σ1≥σ2≥⋯≥σp≥0 σi\sigma_iσi称为矩阵AAA的奇异值(singular value),UUU的列向量称为左奇异向量,VVV的列向量称为右奇异向量。任意给定一个实矩阵,奇异值分解一定存在。
实际常用的是奇异值分解的紧凑形式和截断形式。
对于紧奇异值分解,设m×nm\times nm×n实矩阵AAA的秩为rank(A)=rrank(A)=rrank(A)=r,则称
A=UrΣrVrTA=U_r\Sigma_rV_r^TA=UrΣrVrT为AAA的紧奇异值分解。其中矩阵UrU_rUr由完全奇异值分解中UUU的前rrr列、矩阵VrV_rVr由VVV的前rrr列、矩阵Σr\Sigma_rΣr由Σ\SigmaΣ的前rrr个对角线元素得到。
对于截断奇异值分解,设m×nm\times nm×n实矩阵AAA的秩为rank(A)=rrank(A)=rrank(A)=r,0<k<r0<k<r0<k<r,则称
A≈UkΣkVkTA\approx U_k\Sigma_kV_k^TA≈UkΣkVkT为AAA的截断奇异值分解。其中矩阵UkU_kUk由完全奇异值分解中UUU的前kkk列、矩阵VkV_kVk由VVV的前kkk列、矩阵Σk\Sigma_kΣk由Σ\SigmaΣ的前kkk个对角线元素得到。
实际上,紧奇异值分解对应着无损压缩,截断奇异值分解对应着有损压缩,它们是在平方损失(弗罗贝尼乌斯范数)意义下对矩阵的最优近似。
换一个角度去理解奇异值分解,如果将m×nm\times nm×n的矩阵AAA看作从nnn维空间RnR^nRn到mmm维空间RmR^mRm的一个线性变换,即
T:x→AxT:x\rightarrow AxT:x→Ax 那么AAA的奇异值分解可以看作是把这个线性变换分解成:一个坐标系的旋转或反射变换、一个坐标轴的缩放变换、另一个坐标系的旋转或反射变换。奇异值定理保证这种分解一定存在,这就是奇异值分解的几何解释。
任意一个向量x∈Rnx\in R^nx∈Rn,经过基于A=UΣVTA=U\Sigma V^TA=UΣVT的线性变换,等价于xxx依次经过坐标系的旋转或反射变换VTV^TVT,坐标轴的缩放变换Σ\SigmaΣ,以及坐标系的旋转或反射变换UUU,得到向量Ax∈RmAx\in R^mAx∈Rm。
例如,给定一个2阶矩阵
A=[3121]
A=\left[
\begin{matrix}
3 & 1 \\
2 & 1 \\
\end{matrix} \right]
A=[3211] 其奇异值分解为
U=[0.8174−0.57600.57600.8174]
U=\left[
\begin{matrix}
0.8174 & -0.5760 \\
0.5760 & 0.8174 \\
\end{matrix} \right]
U=[0.81740.5760−0.57600.8174]Σ=[3.8643000.2588]
\Sigma=\left[
\begin{matrix}
3.8643 & 0 \\
0 & 0.2588 \\
\end{matrix} \right]
Σ=[3.8643000.2588]VT=[0.93270.3606−0.36060.9327]
V^T=\left[
\begin{matrix}
0.9327 & 0.3606 \\
-0.3606 & 0.9327 \\
\end{matrix} \right]
VT=[0.9327−0.36060.36060.9327] 观察基于矩阵AAA的奇异值分解将R2R^2R2的标准正交基e1、e2e_1、e_2e1、e2进行线性转换的情况。
e1=[10], e2=[01]
e_1=\left[
\begin{matrix}
1 \\
0 \\
\end{matrix} \right],
e_2=\left[
\begin{matrix}
0 \\
1 \\
\end{matrix} \right]
e1=[10], e2=[01] 首先,VTV^TVT表示一个旋转变换,将e1,e2e_1,e_2e1,e2旋转,得到VTe1,VTe2V^Te_1,V^Te_2VTe1,VTe2
VTe1=[0.9327−0.3606], VTe2=[0.36060.9327]V^Te_1=\left[
\begin{matrix}
0.9327 \\
-0.3606 \\
\end{matrix} \right],
V^Te_2=\left[
\begin{matrix}
0.3606 \\
0.9327 \\
\end{matrix} \right]VTe1=[0.9327−0.3606], VTe2=[0.36060.9327] 其次,Σ\SigmaΣ表示一个缩放变换,将VTe1,VTe2V^Te_1,V^Te_2VTe1,VTe2缩放,得到ΣVTe1,ΣVTe2\Sigma V^Te_1,\Sigma V^Te_2ΣVTe1,ΣVTe2
ΣVTe1=[3.6042−0.0933], ΣVTe2=[1.39350.2414]\Sigma V^Te_1=\left[
\begin{matrix}
3.6042 \\
-0.0933 \\
\end{matrix} \right],
\Sigma V^Te_2=\left[
\begin{matrix}
1.3935 \\
0.2414 \\
\end{matrix} \right]ΣVTe1=[3.6042−0.0933], ΣVTe2=[1.39350.2414] 最后,UUU表示一个旋转变换,将ΣVTe1,ΣVTe2\Sigma V^Te_1,\Sigma V^Te_2ΣVTe1,ΣVTe2旋转,得到Ae1,Ae2Ae_1,Ae_2Ae1,Ae2
Ae1=UΣVTe1=[32]Ae_1=U\Sigma V^Te_1=\left[
\begin{matrix}
3 \\
2 \\
\end{matrix} \right]Ae1=UΣVTe1=[32]Ae2=UΣVTe2=[11]
Ae_2=U\Sigma V^Te_2=\left[
\begin{matrix}
1 \\
1 \\
\end{matrix} \right]Ae2=UΣVTe2=[11] 下面介绍奇异值分解的主要性质。
(1)设矩阵AAA的奇异值分解为A=UΣVTA=U\Sigma V^TA=UΣVT,则以下关系成立:
ATA=V(ΣTΣ)VTA^TA=V(\Sigma^T\Sigma)V^TATA=V(ΣTΣ)VTAAT=U(ΣΣT)UTAA^T=U(\Sigma\Sigma^T)U^TAAT=U(ΣΣT)UT (2)奇异值、左奇异向量和右奇异向量之间存在对应关系:
由A=UΣVTA=U\Sigma V^TA=UΣVT易知
AV=UΣAV=U\SigmaAV=UΣ 比较等式左右两边的第jjj列,由于Σ\SigmaΣ是对角矩阵,可以得到
Avj=σjuj, j=1,2,⋯ ,nAv_j=\sigma_ju_j, j=1,2,\cdots,nAvj=σjuj, j=1,2,⋯,n 类似的,由
ATU=VΣTA^TU=V\Sigma^TATU=VΣT 可以得到
ATuj=σjvj, j=1,2,⋯ ,nA^Tu_j=\sigma_jv_j, j=1,2,\cdots,nATuj=σjvj, j=1,2,⋯,nATuj=0, j=n+1,n+2,⋯ ,mA^Tu_j=0, j=n+1,n+2,\cdots,mATuj=0, j=n+1,n+2,⋯,m (3)在奇异值分解中,奇异值σ1,σ2,⋯ ,σn\sigma_1,\sigma_2,\cdots,\sigma_nσ1,σ2,⋯,σn是唯一的,而矩阵UUU和VVV不是唯一的
(4)矩阵AAA和Σ\SigmaΣ的秩相等,等于正奇异值的个数
(5)设矩阵AAA的秩为rrr,则有:
矩阵AAA的rrr个右奇异向量v1,v2,⋯ ,vrv_1,v_2,\cdots,v_rv1,v2,⋯,vr构成值域R(AT)R(A^T)R(AT)的一组标准正交基;
矩阵AAA的n−rn-rn−r个右奇异向量vr+1,⋯ ,vnv_{r+1},\cdots,v_nvr+1,⋯,vn构成零空间N(A)N(A)N(A)的一组标准正交基;
矩阵AAA的rrr个左奇异向量u1,u2,⋯ ,uru_1,u_2,\cdots,u_ru1,u2,⋯,ur构成值域R(A)R(A)R(A)的一组标准正交基;
矩阵AAA的m−rm-rm−r个左奇异向量ur+1,⋯ ,umu_{r+1},\cdots,u_mur+1,⋯,um构成零空间N(AT)N(A^T)N(AT)的一组标准正交基。
二、奇异值分解的计算
给定m×nm\times nm×n的矩阵AAA,奇异值分解的计算过程如下。
(1)求ATAA^TAATA的特征值和特征向量,即求解
(ATA−λI)x=0(A^TA-\lambda I)x=0(ATA−λI)x=0 将特征值与特征向量按特征值由大到小排列
λ1≥λ2≥⋯≥λn≥0\lambda_1\ge\lambda_2\ge\cdots\ge\lambda_n\ge0λ1≥λ2≥⋯≥λn≥0 (2)求nnn阶正交矩阵VVV,将特征向量单位化后,构成nnn阶正交矩阵VVV
V=[v1 v2 ⋯ vn]V=[v_1 v_2 \cdots v_n]V=[v1 v2 ⋯ vn] (3)求m×nm\times nm×n对角矩阵Σ\SigmaΣ,先计算AAA的奇异值
σi=λi, i=1,2,⋯ ,n\sigma_i=\sqrt{\lambda_i}, i=1,2,\cdots,nσi=λi, i=1,2,⋯,n 再构造对角矩阵Σ\SigmaΣ
Σ=diag(σ1,σ2,⋯ ,σn)\Sigma=diag(\sigma_1,\sigma_2,\cdots,\sigma_n)Σ=diag(σ1,σ2,⋯,σn) (4)求mmm阶正交矩阵UUU,对AAA的前rrr个正奇异值,令
uj=1σjAvj, j=1,2,⋯ ,ru_j=\frac{1}{\sigma_j}Av_j, j=1,2,\cdots,ruj=σj1Avj, j=1,2,⋯,r 得到
U1=[u1 u2 ⋯ ur]U_1=[u_1 u_2 \cdots u_r]U1=[u1 u2 ⋯ ur] 再求零空间N(AT)N(A^T)N(AT)的一组标准正交基,得到
U2=[ur+1 ur+2 ⋯ um]U_2=[u_{r+1} u_{r+2} \cdots u_m]U2=[ur+1 ur+2 ⋯ um] 令
U=[U1 U2]U=[U_1 U_2]U=[U1 U2] 得到奇异值分解A=UΣVTA=U\Sigma V^TA=UΣVT。
三、奇异值分解与矩阵近似
奇异值分解是一种矩阵近似的方法,这个近似是在弗罗贝尼乌斯范数(Frobenius norm)意义下的近似。设矩阵A∈Rm×nA\in R^{m\times n}A∈Rm×n,定义矩阵AAA的FFF-范数为
∣∣A∣∣F=(∑i=1m∑j=1naij2)12||A||_F=(\sum_{i=1}^m\sum_{j=1}^na_{ij}^2)^\frac{1}{2}∣∣A∣∣F=(i=1∑mj=1∑naij2)21 则有如下引理:设AAA的奇异值分解为UΣVTU\Sigma V^TUΣVT,其中Σ=diag(σ1,σ2,⋯ ,σn)\Sigma=diag(\sigma_1,\sigma_2,\cdots,\sigma_n)Σ=diag(σ1,σ2,⋯,σn),则
∣∣A∣∣F=(σ12+σ22+⋯+σn2)12||A||_F=(\sigma_1^2+\sigma_2^2+\cdots+\sigma_n^2)^\frac{1}{2}∣∣A∣∣F=(σ12+σ22+⋯+σn2)21 因此,考虑一个秩为kkk的矩阵X∈Rm×nX\in R^{m\times n}X∈Rm×n,使得
min∣∣A−X∣∣F\min||A-X||_Fmin∣∣A−X∣∣F 矩阵XXX为矩阵AAA在弗罗贝尼乌斯范数意义下的最优近似,这个矩阵XXX便是Ak=UkΣkVkTA_k=U_k\Sigma_kV_k^TAk=UkΣkVkT。因此,截断奇异值分解是在弗罗贝尼乌斯范数意义下的有损压缩。
此外,矩阵AAA的奇异值分解UΣVTU\Sigma V^TUΣVT也可以由外积形式表示。将UΣU\SigmaUΣ按列向量分块,将VTV^TVT按行向量分块,即得
UΣ=[σ1u1 σ2u2 ⋯ σnun]U\Sigma=[\sigma_1u_1 \sigma_2u_2 \cdots \sigma_nu_n]UΣ=[σ1u1 σ2u2 ⋯ σnun]VT=[v1Tv2T⋮vnT]
V^T=\left[
\begin{matrix}
v_1^T \\
v_2^T \\
\vdots \\
v_n^T \\
\end{matrix} \right]VT=⎣⎢⎢⎢⎡v1Tv2T⋮vnT⎦⎥⎥⎥⎤ 则
A=σ1u1v1T+σ2u2v2T+⋯+σnunvnTA=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_nu_nv_n^TA=σ1u1v1T+σ2u2v2T+⋯+σnunvnT 上式被称为矩阵AAA的外积展开式,其中ukvkTu_kv_k^TukvkT是m×nm\times nm×n矩阵。
若矩阵AAA的秩为nnn,设矩阵
An−1=σ1u1v1T+σ2u2v2T+⋯+σn−1un−1vn−1TA_{n-1}=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_{n-1}u_{n-1}v_{n-1}^TAn−1=σ1u1v1T+σ2u2v2T+⋯+σn−1un−1vn−1T 则An−1A_{n-1}An−1得秩为n−1n-1n−1,并且An−1A_{n-1}An−1是秩为n−1n-1n−1矩阵在弗罗贝尼乌斯范数意义下AAA的最优近似矩阵。