[线性代数] - 奇异值分解

我们到目前为止讨论了许多分解,那么有没有那么一种万能的分解呢?这就是奇异值分解。

任一m×nm \times n的矩阵AA都可以分解为一个m×mm \times m的正交矩阵,一个m×nm \times n的对角矩阵Σ\Sigma,和一个n×nn \times n的正交矩阵VV的转置VTV^T,即:

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

奇异值

AAm×nm \times n的矩阵,这里AA不是方阵,但是我们知道ATA\mathbf{A^TA}是方阵,我们可以对ATA\mathbf{A^TA}进行操作。

ATA\mathbf{A^TA}的特征值为

λ1λ2λn\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n

其对应的标准正交特征向量为

{V1,V2,,Vn}\lbrace V_1, V_2, \cdots, V_n \rbrace

则有

ATAVi=λiViA^TAV_i = \lambda_iV_i

两边左乘viT\mathbf{v_i^T}

ViTATAVi=ViTλiViV_i^TA^TAV_i = V_i^T\lambda_iV_i

整理可得

(AVi)T(AVi)=λViTVi(AV_i)^T(AV_i) = \lambda V_i^TV_i

因为vivi=1\mathbf{v_i}\mathbf{v_i} = 1,即可得

AVi2=λi\parallel AV_i\parallel ^2 = \lambda_i

可以得到

AVi=λi\parallel AV_i\parallel = \sqrt{\lambda_i}

其中,λi\sqrt{\lambda_i}称为AA奇异值

假设 ATAA^TA的特征值为λ\lambda,那么λ\sqrt{\lambda}称为AA的奇异值,记为σ\sigma

AA的奇异值就是向量AViAV_i的长度。当奇异值为00的时候,AV=0AV = 0

我们再来看看AviA\mathbf{v_i}

(AVj)T(AVi)=λVjTVi=0(AV_j)^T(AV_i) = \lambda V_j^TV_i = 0

于是我们可以得出:

{Av1,Av2,,Avn}\lbrace A\mathbf{v_1}, A\mathbf{v_2}, \cdots, A\mathbf{v_n}\rbrace是一组正交向量集

一般情况

AAm×nm \times n的矩阵,且有r(rn)r(r \leq n)个不等于00的奇异值,则

σ1σ2σr>σr+1=σr+2==σr+n=0\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > \sigma_{r+1} = \sigma_{r+2} = \cdots = \sigma_{r+n} = 0

λ1λ2λr>λr+1=λr+2==λr+n=0\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_r > \lambda_{r+1} = \lambda_{r+2} = \cdots = \lambda_{r+n} = 0

可以知道

{Av10(1ir)Av1=0(r<in)\begin{cases} A\mathbf{v_1} \neq 0 & (1 \leq i \leq r) \\ A\mathbf{v_1} = 0 & (r < i \leq n) \end{cases}

于是我们可以得到

{AV1,AV2,,AVr}\lbrace AV_1, AV_2, \cdots, AV_r\rbrace是一组线性无关的正交向量集

这里AViC(A)AV_i \in C(A),其中C(A)C(A)列空间,
因为{v1,v2,,vn}\lbrace \mathbf{v_1}, \mathbf{v_2}, \cdots, \mathbf{v_n} \rbraceATAA^TA的标准正交向量,因此{v1,v2,,vn}\lbrace \mathbf{v_1}, \mathbf{v_2}, \cdots, \mathbf{v_n} \rbraceRn\mathbb{R}^n的一个基,于是对于xRnx \in \mathbb{R}^n

x=c1v1+c2v2++cnvn\mathbf{x} = c_1\mathbf{v_1} + c_2\mathbf{v_2} + \cdots + c_n\mathbf{v_n}

于是对于列空间C(A)C(A),有

y=Ax=A(c1v1+c2v2++cnvn)=c1Av1+c2Av2++cnAvn=c1AV1+c2AV2++crAVr+cr+1AVr+1++cnAVn=c1AV1+c2AV2++crAVr+0++0=c1AV1+c2AV2++crAVr\begin{aligned} y &= A\mathbf{x} \\ &= A(c_1\mathbf{v_1} + c_2\mathbf{v_2} + \cdots + c_n\mathbf{v_n}) \\ &= c_1A\mathbf{v_1} + c_2A\mathbf{v_2} + \cdots + c_nA\mathbf{v_n} \\ &= c_1AV_1 + c_2AV_2 + \cdots + c_rAV_r + c_{r+1}AV_{r+1} + \cdots + c_{n}AV_{n} \\ &= c_1AV_1 + c_2AV_2 + \cdots + c_rAV_r + 0 + \cdots + 0 \\ &= c_1AV_1 + c_2AV_2 + \cdots + c_rAV_r \end{aligned}

因此{AV1,AV2,,AVr}\lbrace AV_1, AV_2, \cdots, AV_r\rbraceC(A)C(A)的一个正交基,由于这组基的向量个数是rr,因此C(A)C(A)的维数dimC(A)dimC(A)也为rr,即

rankA=dimC(A)=rrankA = dimC(A) = r

{AV1,AV2,,AVr}\lbrace AV_1, AV_2, \cdots, AV_r\rbrace标准化

ui=AViAVi=1σiAVi(iir)\mathbf{u}_i = \frac{AV_i}{\parallel AV_i\parallel } = \frac{1}{\sigma_i}AV_i \quad (i \leq i \leq r)

AVi=σiuiAV_i = \sigma_i\mathbf{u}_i

于是{u1,u2,,un}\lbrace \mathbf{u}_1, \mathbf{u}_2, \cdots, \mathbf{u}_n \rbrace就是C(A)C(A)下的一组标准正交基,再从AA的左零空间取mrm - r个标准正交向量{ur+1,ur+2,,um\lbrace \mathbf{u}_{r+1}, \mathbf{u}_{r+2}, \cdots, \mathbf{u}_m,并将他们合并,得到Rm\mathbb{R}^m下的一个标准正交基。令

U=[u1u2um]V=[V1V2Vn]\begin{aligned} U &= \begin{bmatrix} \mathbf{u}_1 & \mathbf{u}_2 & \cdots & \mathbf{u}_m \end{bmatrix} \\ V &= \begin{bmatrix} V_1 & V_2 & \cdots & V_n \end{bmatrix} \end{aligned}

可以知道U,VU, V都是正交矩阵,计算AVAV

AV=A[V1V2Vm]=[AV1AV2AVm]=[AV1AV2AVr00]=[σ1u1σ2u2σrur00]=U[σ10001101(nr)0σ2002102(nr)00σr0r10r(nr)01101201r0110(nr)r0(mr)10(mr)20(mr)r0(mr)10(mr)(nr)]\begin{aligned} AV &= A\begin{bmatrix} V_1 & V_2 & \cdots & V_m \end{bmatrix} \\ &= \begin{bmatrix} AV_1 & AV_2 & \cdots & AV_m \end{bmatrix} \\ &= \begin{bmatrix} AV_1 & AV_2 & \cdots & AV_r & 0 & \cdots & 0 \end{bmatrix} \\ &= \begin{bmatrix} \sigma_1\mathbf{u}_1 & \sigma_2\mathbf{u}_2 & \cdots & \sigma_r\mathbf{u}_r & 0 & \cdots & 0 \end{bmatrix} \\ \\ &= U\begin{bmatrix} \sigma_1 & 0 & \cdots & 0 & | & 0_{11} & \cdots & 0_{1(n-r)} \\ 0 & \sigma_2 & \cdots & 0 & | & 0_{21} & \cdots & 0_{2(n-r)} \\ \vdots & \vdots & \ddots & \vdots & | & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_r & | & 0_{r1} & \cdots & 0_{r(n-r)} \\ - & - & - & - & & - & - & - \\ 0_{11} & 0_{12} & \cdots & 0_{1r} & | & 0_{11} & \cdots & 0_{(n-r)r} \\ \vdots & \vdots & \ddots & \vdots & | & \vdots & \ddots & \vdots \\ 0_{(m-r)1} & 0_{(m-r)2} & \cdots & 0_{(m-r)r} & | & 0_{(m-r)1} & \cdots & 0_{(m-r)(n-r)} \end{bmatrix} \end{aligned}

Dr×r=[σ1000σ200σ2σr]D_{r \times r} = \begin{bmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & \sigma_2 & \cdots & \sigma_r \\ \end{bmatrix}

AV=[Um×rUm×(mr)][Dr×rOr×(nr)O(mr)×rO(mr)×(nr)]AV = \begin{bmatrix}U_{m\times r} & U_{m\times (m-r)}\end{bmatrix}\begin{bmatrix} D_{r \times r} & \mathbf{O}_{r \times (n-r)} \\ \mathbf{O}_{(m-r) \times r} & \mathbf{O}_{(m-r) \times (n-r)} \end{bmatrix}

Σ=[Dr×rOr×(nr)O(mr)×rO(mr)×(nr)]\Sigma = \begin{bmatrix} D_{r \times r} & \mathbf{O}_{r \times (n-r)} \\ \mathbf{O}_{(m-r) \times r} & \mathbf{O}_{(m-r) \times (n-r)} \end{bmatrix}

AV=UΣAV = U\Sigma

由于VV是正交矩阵,因此VV是可逆的,且V1=VTV^{-1} = V^T,即

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

上式即为AA奇异值分解,其中UU的列向量称为AA的左奇异向量,VV的列向量称为AA的右奇异向量

我们知道VVATAA^TA的特征向量矩阵,那么现在来看看UU是什么

ui=AViAVi=1σiAViAATui=AAT1σiAVi=1σiA(ATAVi)=1σiA(λiVi)=λiσiAVi(iir)\begin{aligned} \mathbf{u}_i = \frac{AV_i}{\parallel AV_i\parallel } &= \frac{1}{\sigma_i}AV_i \\ AA^T\mathbf{u}_i &= AA^T\frac{1}{\sigma_i}AV_i \\ &= \frac{1}{\sigma_i}A(A^TAV_i) \\ &= \frac{1}{\sigma_i}A(\lambda_iV_i) \\ &= \frac{\lambda_i}{\sigma_i}AV_i \quad (i \leq i \leq r) \end{aligned}

于是在iiri \leq i \leq r的时候

AATui=λiσiAViAA^T\mathbf{u}_i = \frac{\lambda_i}{\sigma_i}AV_i

现在考虑r<imr < i \leq m的时候,此时

uiN(AT)\mathbf{u}_i \in N(A^T)

因此

uiTA=0\mathbf{u}_i^TA = 0

取转置

ATui=0A^T\mathbf{u}_i = 0

两边左乘AA

AATui=A0=0ui\begin{aligned} AA^T\mathbf{u}_i &= A0 \\ &= 0\mathbf{u}_i \end{aligned}

λi=0(r<im)\lambda_i' = 0 (r < i \leq m),则

AATui=λiuiAA^T\mathbf{u}_i = \lambda_i'\mathbf{u}_i

就可以知道

{AATui=λiui(iir)AATui=λiui(r<im)\begin{cases} AA^T\mathbf{u}_i &= \lambda_i\mathbf{u}_i (i \leq i \leq r) \\ AA^T\mathbf{u}_i &= \lambda_i'\mathbf{u}_i (r < i \leq m) \end{cases}


VVATAA^TA的特征向量矩阵
UUAATAA^T的特征向量矩阵

ATAA^TA的特征值矩阵

[λ100000λ2000000000λr0000000r+100000000n]\begin{bmatrix} \lambda_1 & 0 & \cdots & 0 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & 0 & 0 & \cdots & 0 \\ 0 & 0 & 0 & \lambda_r & 0 & \cdots & 0 \\ 0 & 0 & 0 & 0 & 0_{r+1} & \cdots & 0 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & 0 \\ 0 & 0 & 0 & 0 & 0 & \cdots & 0_\color{red}{n} \end{bmatrix}

AATAA^T的特征值矩阵

[λ100000λ2000000000λr0000000r+100000000m]\begin{bmatrix} \lambda_1 & 0 & \cdots & 0 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & 0 & 0 & \cdots & 0 \\ 0 & 0 & 0 & \lambda_r & 0 & \cdots & 0 \\ 0 & 0 & 0 & 0 & 0_{r+1} & \cdots & 0 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots & 0 \\ 0 & 0 & 0 & 0 & 0 & \cdots & 0_\color{red}{m} \end{bmatrix}

奇异值分解步骤

  • 计算对角矩阵ATAA^TA的特征值与特征向量
  • 将特征值排列为λ1λ2λn\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n取不为00的特征值(假设前rr个特征值不为00)构造由AA的奇异值组成的对角阵

Dr×r=[σ1000σ2000σr]D_{r \times r} = \begin{bmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_r \end{bmatrix}

进而构造Σ\Sigma

Σ=[Dr×rOr×(nr)O(mr)×rO(mr)×(nr)]\Sigma = \begin{bmatrix} D_{r \times r} & \mathbf{O}_{r \times (n-r)} \\ \mathbf{O}_{(m-r) \times r} & \mathbf{O}_{(m-r) \times (n-r)} \end{bmatrix}

  • 然后构造VV,假设对应于λ1λ2λn\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n的标准正交特征向量为V1,V2,,VnV_1, V_2, \cdots, V_n则:

V=[V1V2Vn]V = \begin{bmatrix} V_1 & V_2 & \cdots & V_n \end{bmatrix}

  • 通过

ui=1σiAVi\mathbf{u}_i = \frac{1}{\sigma_i}AV_i

计算出前rru1\mathbf{u}_1,再找出N(AT)N(A^T)mrm-r个基向量,进行正交化和标准化

U=[u1u2un]U = \begin{bmatrix} \mathbf{u}_1 & \mathbf{u}_2 & \cdots & \mathbf{u}_n \end{bmatrix}

  • 即可得出A=UΣVTA = U\Sigma V^T

奇异值分解与矩阵近似的应用

在文件压缩,特征抽取和一些噪音消除的分析应用中,我们希望有一个矩阵的最佳近视矩阵,通过改变矩阵的秩来控制近似误差,这样的问题称为矩阵近似

问题:若AA是一个m×nm \times n的实矩阵,求同阶矩阵A^\hat{A}使得AA^\parallel A - \hat{A}\parallel最小,并且满足rankA^<rankArank\hat{A} < rankA

正交变换对范数的影响

为了求解此问题,我们需要先知道正交变换对Frobenius不会产生影响

QAF2=tr((QA)T(QA))=tr(ATQTQA)=tr(ATA)=AF2AQF2=tr((AQ)(AQ)T)=tr(AQQTAT)=tr(AAT)=AF2\begin{aligned} \parallel QA\parallel^2_F &= tr((QA)^T( QA)) = tr(A^T\color{red}Q^TQ\color{bloack}A) = tr(A^TA) = \parallel A\parallel^2_F \\ \parallel AQ\parallel^2_F &= tr((AQ)(AQ)^T) = tr(A\color{red} QQ^T\color{bloack}A^T) = tr(AA^T) = \parallel A\parallel^2_F \end{aligned}

其中QQ是任意的正交矩阵,再看奇异值分解

求解过程

A=UΣVTA = U\Sigma V^T,其中U,VTU,V^T均为正交矩阵,于是可以得出

AF=ΣF=i=1rσi2\parallel A\parallel _F = \parallel \Sigma\parallel _F = \sqrt{\sum_{i=1}^r\sigma^2_i}

将目标函数改写

minAA^F=minUΣVTA^F=minUT(UΣVTA^)VF=minΣUTA^VF\begin{aligned} min\parallel A - \hat{A}\parallel _F &= min\parallel U\Sigma V^T - \hat{A}\parallel_F \\ &= min\parallel U^T(U\Sigma V^T - \hat{A})V\parallel_F \\ &= min\parallel \Sigma - U^T\hat{A}V\parallel_F \end{aligned}

我们注意到

Σ=[Dr×rOr×(nr)O(mr)×rO(mr)×(nr)]\Sigma = \begin{bmatrix} D_{r \times r} & \mathbf{O}_{r \times (n-r)} \\ \mathbf{O}_{(m-r) \times r} & \mathbf{O}_{(m-r) \times (n-r)} \end{bmatrix}

是一个对角矩阵,那么为了让结果最小,UTA^VU^T\hat{A}V也需要是一个对角线矩阵,这样才能使平方和最小,即

UTA^V=[Dk×kOk×(nk)O(mk)×kO(mk)×(nk)]U^T\hat{A}V = \begin{bmatrix} D_{k \times k}' & \mathbf{O}_{k \times (n-k)} \\ \mathbf{O}_{(m-k) \times k} & \mathbf{O}_{(m-k) \times (n-k)} \end{bmatrix}

因此

A^=U[DOOO]VT\hat{A} = U\begin{bmatrix} D' & \mathbf{O} \\ \mathbf{O} & \mathbf{O} \end{bmatrix} V^T

则原问题可以继续化简

minDDF=mini=1r(σidi)2min\parallel D - D'\parallel _F = min\sqrt{\sum_{i=1}^r(\sigma_i - d_i')^2}

rankA^=krank\hat{A} = k时,DD'kk个不为00的主对角元,我们知道DD里的对角主元σi\sigma_i是降序排列的,所以当近似矩阵A^\hat{A}保留最大kk个奇异值时,目标函数取得最小。此时最小值等于

minDDF=mini=k+1rσi2min\parallel D - D'\parallel _F = min\sqrt{\sum_{i=k+1}^r\sigma_i'^2}

参考资料

SVD 於矩陣近似的應用