我们到目前为止讨论了许多分解,那么有没有那么一种万能的分解呢?这就是奇异值分解。
任一m×n的矩阵A都可以分解为一个m×m的正交矩阵,一个m×n的对角矩阵Σ,和一个n×n的正交矩阵V的转置VT,即:
A=UΣVT
奇异值
设A是m×n的矩阵,这里A不是方阵,但是我们知道ATA是方阵,我们可以对ATA进行操作。
设ATA的特征值为
λ1≥λ2≥⋯≥λn
其对应的标准正交特征向量为
{V1,V2,⋯,Vn}
则有
ATAVi=λiVi
两边左乘viT
ViTATAVi=ViTλiVi
整理可得
(AVi)T(AVi)=λViTVi
因为vivi=1,即可得
∥AVi∥2=λi
可以得到
∥AVi∥=λi
其中,λi称为A的奇异值
假设 ATA的特征值为λ,那么λ称为A的奇异值,记为σ
A的奇异值就是向量AVi的长度。当奇异值为0的时候,AV=0
我们再来看看Avi
(AVj)T(AVi)=λVjTVi=0
于是我们可以得出:
{Av1,Av2,⋯,Avn}是一组正交向量集
一般情况
设A是m×n的矩阵,且有r(r≤n)个不等于0的奇异值,则
σ1≥σ2≥⋯≥σr>σr+1=σr+2=⋯=σr+n=0
即
λ1≥λ2≥⋯≥λr>λr+1=λr+2=⋯=λr+n=0
可以知道
{Av1=0Av1=0(1≤i≤r)(r<i≤n)
于是我们可以得到
{AV1,AV2,⋯,AVr}是一组线性无关的正交向量集
这里AVi∈C(A),其中C(A)列空间,
因为{v1,v2,⋯,vn}是ATA的标准正交向量,因此{v1,v2,⋯,vn}是Rn的一个基,于是对于x∈Rn
x=c1v1+c2v2+⋯+cnvn
于是对于列空间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
因此{AV1,AV2,⋯,AVr}是C(A)的一个正交基,由于这组基的向量个数是r,因此C(A)的维数dimC(A)也为r,即
rankA=dimC(A)=r
将{AV1,AV2,⋯,AVr}标准化
ui=∥AVi∥AVi=σi1AVi(i≤i≤r)
即
AVi=σiui
于是{u1,u2,⋯,un}就是C(A)下的一组标准正交基,再从A的左零空间取m−r个标准正交向量{ur+1,ur+2,⋯,um,并将他们合并,得到Rm下的一个标准正交基。令
UV=[u1u2⋯um]=[V1V2⋯Vn]
可以知道U,V都是正交矩阵,计算AV
AV=A[V1V2⋯Vm]=[AV1AV2⋯AVm]=[AV1AV2⋯AVr0⋯0]=[σ1u1σ2u2⋯σrur0⋯0]=U⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡σ10⋮0−011⋮0(m−r)10σ2⋮0−012⋮0(m−r)2⋯⋯⋱⋯−⋯⋱⋯00⋮σr−01r⋮0(m−r)r∣∣∣∣∣∣∣011021⋮0r1−011⋮0(m−r)1⋯⋯⋱⋯−⋯⋱⋯01(n−r)02(n−r)⋮0r(n−r)−0(n−r)r⋮0(m−r)(n−r)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
令
Dr×r=⎣⎢⎢⎢⎡σ10⋮00σ2⋮σ2⋯⋯⋱⋯00⋮σr⎦⎥⎥⎥⎤
则
AV=[Um×rUm×(m−r)][Dr×rO(m−r)×rOr×(n−r)O(m−r)×(n−r)]
令
Σ=[Dr×rO(m−r)×rOr×(n−r)O(m−r)×(n−r)]
则
AV=UΣ
由于V是正交矩阵,因此V是可逆的,且V−1=VT,即
A=UΣV−1=UΣVT
上式即为A的奇异值分解,其中U的列向量称为A的左奇异向量,V的列向量称为A的右奇异向量
我们知道V是ATA的特征向量矩阵,那么现在来看看U是什么
ui=∥AVi∥AViAATui=σi1AVi=AATσi1AVi=σi1A(ATAVi)=σi1A(λiVi)=σiλiAVi(i≤i≤r)
于是在i≤i≤r的时候
AATui=σiλiAVi
现在考虑r<i≤m的时候,此时
ui∈N(AT)
因此
uiTA=0
取转置
ATui=0
两边左乘A
AATui=A0=0ui
设λi′=0(r<i≤m),则
AATui=λi′ui
就可以知道
{AATuiAATui=λiui(i≤i≤r)=λi′ui(r<i≤m)
V是ATA的特征向量矩阵
U是AAT的特征向量矩阵
ATA的特征值矩阵
⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡λ10⋮00⋮00λ2⋮00⋮0⋯⋯⋱00⋮0000λr0⋮000000r+1⋮0⋯⋯⋯⋯⋯⋱⋯0000000n⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
AAT的特征值矩阵
⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡λ10⋮00⋮00λ2⋮00⋮0⋯⋯⋱00⋮0000λr0⋮000000r+1⋮0⋯⋯⋯⋯⋯⋱⋯0000000m⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
奇异值分解步骤
- 计算对角矩阵ATA的特征值与特征向量
- 将特征值排列为λ1≥λ2≥⋯≥λn取不为0的特征值(假设前r个特征值不为0)构造由A的奇异值组成的对角阵
Dr×r=⎣⎢⎢⎢⎡σ10⋮00σ2⋮0⋯⋯⋱⋯00⋮σr⎦⎥⎥⎥⎤
进而构造Σ
Σ=[Dr×rO(m−r)×rOr×(n−r)O(m−r)×(n−r)]
- 然后构造V,假设对应于λ1≥λ2≥⋯≥λn的标准正交特征向量为V1,V2,⋯,Vn则:
V=[V1V2⋯Vn]
ui=σi1AVi
计算出前r个u1,再找出N(AT)的m−r个基向量,进行正交化和标准化
U=[u1u2⋯un]
- 即可得出A=UΣVT
奇异值分解与矩阵近似的应用
在文件压缩,特征抽取和一些噪音消除的分析应用中,我们希望有一个矩阵的最佳近视矩阵,通过改变矩阵的秩来控制近似误差,这样的问题称为矩阵近似
问题:若A是一个m×n的实矩阵,求同阶矩阵A^使得∥A−A^∥最小,并且满足rankA^<rankA。
正交变换对范数的影响
为了求解此问题,我们需要先知道正交变换对Frobenius不会产生影响
∥QA∥F2∥AQ∥F2=tr((QA)T(QA))=tr(ATQTQA)=tr(ATA)=∥A∥F2=tr((AQ)(AQ)T)=tr(AQQTAT)=tr(AAT)=∥A∥F2
其中Q是任意的正交矩阵,再看奇异值分解
求解过程
A=UΣVT,其中U,VT均为正交矩阵,于是可以得出
∥A∥F=∥Σ∥F=i=1∑rσi2
将目标函数改写
min∥A−A^∥F=min∥UΣVT−A^∥F=min∥UT(UΣVT−A^)V∥F=min∥Σ−UTA^V∥F
我们注意到
Σ=[Dr×rO(m−r)×rOr×(n−r)O(m−r)×(n−r)]
是一个对角矩阵,那么为了让结果最小,UTA^V也需要是一个对角线矩阵,这样才能使平方和最小,即
UTA^V=[Dk×k′O(m−k)×kOk×(n−k)O(m−k)×(n−k)]
因此
A^=U[D′OOO]VT
则原问题可以继续化简
min∥D−D′∥F=mini=1∑r(σi−di′)2
当rankA^=k时,D′有k个不为0的主对角元,我们知道D里的对角主元σi是降序排列的,所以当近似矩阵A^保留最大k个奇异值时,目标函数取得最小。此时最小值等于
min∥D−D′∥F=mini=k+1∑rσi′2
参考资料
SVD 於矩陣近似的應用