奇异值分解(singular value decomposition, SVD)是一种矩阵因子分解方法。任意一个 m × n m\times n m×n的矩阵都可以表示为三个矩阵的乘积(因子分解)形式,矩阵的奇异值分解一定存在,但不唯一。奇异值分解可以看作是矩阵数据压缩的一种方法,这种近似是平方损失意义下的最优近似。
矩阵的奇异值分解是指将一个非零的 m × n m\times n m×n实矩阵 A A A表示为三个实矩阵乘积形式的运算,即
A = U Σ V T A=U\Sigma V^T A=UΣVT 其中 U U U是 m m m阶正交矩阵, V V V是 n n n阶正交矩阵, Σ \Sigma Σ是由降序排列的非负的对角线元素组成的 m × n m\times n m×n对角矩阵。
根据上述描述,有
U U T = I UU^T=I UUT=I V V T = I VV^T=I VVT=I p = min ( m , n ) p=\min(m,n) p=min(m,n) Σ = d i a g ( σ 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称为矩阵 A A A的奇异值(singular value), U U U的列向量称为左奇异向量, V V V的列向量称为右奇异向量。任意给定一个实矩阵,奇异值分解一定存在。
实际常用的是奇异值分解的紧凑形式和截断形式。
对于紧奇异值分解,设 m × n m\times n m×n实矩阵 A A A的秩为 r a n k ( A ) = r rank(A)=r rank(A)=r,则称
A = U r Σ r V r T A=U_r\Sigma_rV_r^T A=UrΣrVrT为 A A A的紧奇异值分解。其中矩阵 U r U_r Ur由完全奇异值分解中 U U U的前 r r r列、矩阵 V r V_r Vr由 V V V的前 r r r列、矩阵 Σ r \Sigma_r Σr由 Σ \Sigma Σ的前 r r r个对角线元素得到。
对于截断奇异值分解,设 m × n m\times n m×n实矩阵 A A A的秩为 r a n k ( A ) = r rank(A)=r rank(A)=r, 0 < k < r 0<k<r 0<k<r,则称
A ≈ U k Σ k V k T A\approx U_k\Sigma_kV_k^T A≈UkΣkVkT为 A A A的截断奇异值分解。其中矩阵 U k U_k Uk由完全奇异值分解中 U U U的前 k k k列、矩阵 V k V_k Vk由 V V V的前 k k k列、矩阵 Σ k \Sigma_k Σk由 Σ \Sigma Σ的前 k k k个对角线元素得到。
实际上,紧奇异值分解对应着无损压缩,截断奇异值分解对应着有损压缩,它们是在平方损失(弗罗贝尼乌斯范数)意义下对矩阵的最优近似。
换一个角度去理解奇异值分解,如果将 m × n m\times n m×n的矩阵 A A A看作从 n n n维空间 R n R^n Rn到 m m m维空间 R m R^m Rm的一个线性变换,即
T : x → A x T:x\rightarrow Ax T:x→Ax 那么 A A A的奇异值分解可以看作是把这个线性变换分解成:一个坐标系的旋转或反射变换、一个坐标轴的缩放变换、另一个坐标系的旋转或反射变换。奇异值定理保证这种分解一定存在,这就是奇异值分解的几何解释。
任意一个向量 x ∈ R n x\in R^n x∈Rn,经过基于 A = U Σ V T A=U\Sigma V^T A=UΣVT的线性变换,等价于 x x x依次经过坐标系的旋转或反射变换 V T V^T VT,坐标轴的缩放变换 Σ \Sigma Σ,以及坐标系的旋转或反射变换 U U U,得到向量 A x ∈ R m Ax\in R^m Ax∈Rm。
例如,给定一个2阶矩阵
A = [ 3 1 2 1 ] A=\left[ \begin{matrix} 3 & 1 \\ 2 & 1 \\ \end{matrix} \right] A=[3211] 其奇异值分解为
U = [ 0.8174 − 0.5760 0.5760 0.8174 ] U=\left[ \begin{matrix} 0.8174 & -0.5760 \\ 0.5760 & 0.8174 \\ \end{matrix} \right] U=[0.81740.5760−0.57600.8174] Σ = [ 3.8643 0 0 0.2588 ] \Sigma=\left[ \begin{matrix} 3.8643 & 0 \\ 0 & 0.2588 \\ \end{matrix} \right] Σ=[3.8643000.2588] V T = [ 0.9327 0.3606 − 0.3606 0.9327 ] V^T=\left[ \begin{matrix} 0.9327 & 0.3606 \\ -0.3606 & 0.9327 \\ \end{matrix} \right] VT=[0.9327−0.36060.36060.9327] 观察基于矩阵 A A A的奇异值分解将 R 2 R^2 R2的标准正交基 e 1 、 e 2 e_1、e_2 e1、e2进行线性转换的情况。
e 1 = [ 1 0 ] , e 2 = [ 0 1 ] e_1=\left[ \begin{matrix} 1 \\ 0 \\ \end{matrix} \right], e_2=\left[ \begin{matrix} 0 \\ 1 \\ \end{matrix} \right] e1=[10], e2=[01] 首先, V T V^T VT表示一个旋转变换,将 e 1 , e 2 e_1,e_2 e1,e2旋转,得到 V T e 1 , V T e 2 V^Te_1,V^Te_2 VTe1,VTe2
V T e 1 = [ 0.9327 − 0.3606 ] , V T e 2 = [ 0.3606 0.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 Σ表示一个缩放变换,将 V T e 1 , V T e 2 V^Te_1,V^Te_2 VTe1,VTe2缩放,得到 Σ V T e 1 , Σ V T e 2 \Sigma V^Te_1,\Sigma V^Te_2 ΣVTe1,ΣVTe2
Σ V T e 1 = [ 3.6042 − 0.0933 ] , Σ V T e 2 = [ 1.3935 0.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] 最后, U U U表示一个旋转变换,将 Σ V T e 1 , Σ V T e 2 \Sigma V^Te_1,\Sigma V^Te_2 ΣVTe1,ΣVTe2旋转,得到 A e 1 , A e 2 Ae_1,Ae_2 Ae1,Ae2
A e 1 = U Σ V T e 1 = [ 3 2 ] Ae_1=U\Sigma V^Te_1=\left[ \begin{matrix} 3 \\ 2 \\ \end{matrix} \right] Ae1=UΣVTe1=[32] A e 2 = U Σ V T e 2 = [ 1 1 ] Ae_2=U\Sigma V^Te_2=\left[ \begin{matrix} 1 \\ 1 \\ \end{matrix} \right] Ae2=UΣVTe2=[11] 下面介绍奇异值分解的主要性质。
(1)设矩阵 A A A的奇异值分解为 A = U Σ V T A=U\Sigma V^T A=UΣVT,则以下关系成立:
A T A = V ( Σ T Σ ) V T A^TA=V(\Sigma^T\Sigma)V^T ATA=V(ΣTΣ)VT A A T = U ( Σ Σ T ) U T AA^T=U(\Sigma\Sigma^T)U^T AAT=U(ΣΣT)UT (2)奇异值、左奇异向量和右奇异向量之间存在对应关系:
由 A = U Σ V T A=U\Sigma V^T A=UΣVT易知
A V = U Σ AV=U\Sigma AV=UΣ 比较等式左右两边的第 j j j列,由于 Σ \Sigma Σ是对角矩阵,可以得到
A v j = σ j u j , j = 1 , 2 , ⋯   , n Av_j=\sigma_ju_j, j=1,2,\cdots,n Avj=σjuj, j=1,2,⋯,n 类似的,由
A T U = V Σ T A^TU=V\Sigma^T ATU=VΣT 可以得到
A T u j = σ j v j , j = 1 , 2 , ⋯   , n A^Tu_j=\sigma_jv_j, j=1,2,\cdots,n ATuj=σjvj, j=1,2,⋯,n A T u j = 0 , j = n + 1 , n + 2 , ⋯   , m A^Tu_j=0, j=n+1,n+2,\cdots,m ATuj=0, j=n+1,n+2,⋯,m (3)在奇异值分解中,奇异值 σ 1 , σ 2 , ⋯   , σ n \sigma_1,\sigma_2,\cdots,\sigma_n σ1,σ2,⋯,σn是唯一的,而矩阵 U U U和 V V V不是唯一的
(4)矩阵 A A A和 Σ \Sigma Σ的秩相等,等于正奇异值的个数
(5)设矩阵 A A A的秩为 r r r,则有:
矩阵 A A A的 r r r个右奇异向量 v 1 , v 2 , ⋯   , v r v_1,v_2,\cdots,v_r v1,v2,⋯,vr构成值域 R ( A T ) R(A^T) R(AT)的一组标准正交基;
矩阵 A A A的 n − r n-r n−r个右奇异向量 v r + 1 , ⋯   , v n v_{r+1},\cdots,v_n vr+1,⋯,vn构成零空间 N ( A ) N(A) N(A)的一组标准正交基;
矩阵 A A A的 r r r个左奇异向量 u 1 , u 2 , ⋯   , u r u_1,u_2,\cdots,u_r u1,u2,⋯,ur构成值域 R ( A ) R(A) R(A)的一组标准正交基;
矩阵 A A A的 m − r m-r m−r个左奇异向量 u r + 1 , ⋯   , u m u_{r+1},\cdots,u_m ur+1,⋯,um构成零空间 N ( A T ) N(A^T) N(AT)的一组标准正交基。
给定 m × n m\times n m×n的矩阵 A A A,奇异值分解的计算过程如下。
(1)求 A T A A^TA ATA的特征值和特征向量,即求解
( A T A − λ 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)求 n n n阶正交矩阵 V V V,将特征向量单位化后,构成 n n n阶正交矩阵 V V V
V = [ v 1 v 2 ⋯ v n ] V=[v_1 v_2 \cdots v_n] V=[v1 v2 ⋯ vn] (3)求 m × n m\times n m×n对角矩阵 Σ \Sigma Σ,先计算 A A A的奇异值
σ i = λ i , i = 1 , 2 , ⋯   , n \sigma_i=\sqrt{\lambda_i}, i=1,2,\cdots,n σi=λi, i=1,2,⋯,n 再构造对角矩阵 Σ \Sigma Σ
Σ = d i a g ( σ 1 , σ 2 , ⋯   , σ n ) \Sigma=diag(\sigma_1,\sigma_2,\cdots,\sigma_n) Σ=diag(σ1,σ2,⋯,σn) (4)求 m m m阶正交矩阵 U U U,对 A A A的前 r r r个正奇异值,令
u j = 1 σ j A v j , j = 1 , 2 , ⋯   , r u_j=\frac{1}{\sigma_j}Av_j, j=1,2,\cdots,r uj=σj1Avj, j=1,2,⋯,r 得到
U 1 = [ u 1 u 2 ⋯ u r ] U_1=[u_1 u_2 \cdots u_r] U1=[u1 u2 ⋯ ur] 再求零空间 N ( A T ) N(A^T) N(AT)的一组标准正交基,得到
U 2 = [ u r + 1 u r + 2 ⋯ u m ] U_2=[u_{r+1} u_{r+2} \cdots u_m] U2=[ur+1 ur+2 ⋯ um] 令
U = [ U 1 U 2 ] U=[U_1 U_2] U=[U1 U2] 得到奇异值分解 A = U Σ V T A=U\Sigma V^T A=UΣVT。
奇异值分解是一种矩阵近似的方法,这个近似是在弗罗贝尼乌斯范数(Frobenius norm)意义下的近似。设矩阵 A ∈ R m × n A\in R^{m\times n} A∈Rm×n,定义矩阵 A A A的 F F F-范数为
∣ ∣ A ∣ ∣ F = ( ∑ i = 1 m ∑ j = 1 n a i j 2 ) 1 2 ||A||_F=(\sum_{i=1}^m\sum_{j=1}^na_{ij}^2)^\frac{1}{2} ∣∣A∣∣F=(i=1∑mj=1∑naij2)21 则有如下引理:设 A A A的奇异值分解为 U Σ V T U\Sigma V^T UΣVT,其中 Σ = d i a g ( σ 1 , σ 2 , ⋯   , σ n ) \Sigma=diag(\sigma_1,\sigma_2,\cdots,\sigma_n) Σ=diag(σ1,σ2,⋯,σn),则
∣ ∣ A ∣ ∣ F = ( σ 1 2 + σ 2 2 + ⋯ + σ n 2 ) 1 2 ||A||_F=(\sigma_1^2+\sigma_2^2+\cdots+\sigma_n^2)^\frac{1}{2} ∣∣A∣∣F=(σ12+σ22+⋯+σn2)21 因此,考虑一个秩为 k k k的矩阵 X ∈ R m × n X\in R^{m\times n} X∈Rm×n,使得
min ∣ ∣ A − X ∣ ∣ F \min||A-X||_F min∣∣A−X∣∣F 矩阵 X X X为矩阵 A A A在弗罗贝尼乌斯范数意义下的最优近似,这个矩阵 X X X便是 A k = U k Σ k V k T A_k=U_k\Sigma_kV_k^T Ak=UkΣkVkT。因此,截断奇异值分解是在弗罗贝尼乌斯范数意义下的有损压缩。
此外,矩阵 A A A的奇异值分解 U Σ V T U\Sigma V^T UΣVT也可以由外积形式表示。将 U Σ U\Sigma UΣ按列向量分块,将 V T V^T VT按行向量分块,即得
U Σ = [ σ 1 u 1 σ 2 u 2 ⋯ σ n u n ] U\Sigma=[\sigma_1u_1 \sigma_2u_2 \cdots \sigma_nu_n] UΣ=[σ1u1 σ2u2 ⋯ σnun] V T = [ v 1 T v 2 T ⋮ v n T ] V^T=\left[ \begin{matrix} v_1^T \\ v_2^T \\ \vdots \\ v_n^T \\ \end{matrix} \right] VT=⎣⎢⎢⎢⎡v1Tv2T⋮vnT⎦⎥⎥⎥⎤ 则
A = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ n u n v n T A=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_nu_nv_n^T A=σ1u1v1T+σ2u2v2T+⋯+σnunvnT 上式被称为矩阵 A A A的外积展开式,其中 u k v k T u_kv_k^T ukvkT是 m × n m\times n m×n矩阵。
若矩阵 A A A的秩为 n n n,设矩阵
A n − 1 = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ n − 1 u n − 1 v n − 1 T A_{n-1}=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_{n-1}u_{n-1}v_{n-1}^T An−1=σ1u1v1T+σ2u2v2T+⋯+σn−1un−1vn−1T 则 A n − 1 A_{n-1} An−1得秩为 n − 1 n-1 n−1,并且 A n − 1 A_{n-1} An−1是秩为 n − 1 n-1 n−1矩阵在弗罗贝尼乌斯范数意义下 A A A的最优近似矩阵。