Singular Value Decomposition

Mar 25, 2016


1. 对矩阵基本的理解

一个m行n列的矩阵,符号标记为M,其可以被视为线性变换的便利表达法

比如,有一个n维向量x,则通过矩阵乘法Mx=y便可以得到一个m维向量y

矩阵M记录了一个从n维空间到m维空间的一个线性变换

为了方便,以下考虑的均是理想情况

2. 特征值与特征向量

M是一个n行n列的方阵

若有λ,v满足Mv=λv,其中,λ为数值,v为n维向量

则称v为矩阵M的特征向量,且对应一个特征值λ

特征向量经过线性变换后不改变方向,可以将特征向量视为这个线性变换的基

特征值可视为这个线性变换在这个基上的权重

令矩阵M有n个线性无关的特征向量v1,v2,...,vn,对应的特征值为λ1,λ2,...,λn

且满足 λ1λ2λn

则有

M[v1v2vn]=[λ1v1λ2v2λnvn]=[v1v2vn][λ1000λ20000λn]

V=[v1v2vn]Λ=[λ1000λ20000λn]

则有

M=VΛV1

上式称为特征值分解

3. 奇异值分解

特征值分解只适用于方阵,对于普通的m行n列矩阵,则使用奇异值分解

u1,u2,...,um为矩阵MMT的特征向量, 称为左奇异向量

v1,v2,...,vn为矩阵MTM的特征向量,称为右奇异向量

U=[u1u2um]V=[v1v2vn]

直接上定义 M=[u1u2um][σ100σ2][vT1vT2vTn]

其中 Σ=[σ100σ2]

为m行n列的对角矩阵,对角线上的值称为奇异值

设有n维向量,则其可表示为 x=a1v1+a2v2++anvn

接下来一步步模拟线性变换的过程,首先左乘VT

[vT1vT2vTn]x=[a1vT1v1a2vT2v2anvTnvn]

接着左乘Λ

如果m>n [σ100σ2][a1vT1v1a2vT2v2anvTnvn]=[a1σ1vT1v1a2σ2vT2v2anσnvTnvn00]

x=a1σ1vT1v1u1+a2σ2vT2v2u2++anσnvTnvnun

如果 m<n [σ100σ2][a1vT1v1a2vT2v2anvTnvn]=[a1σ1vT1v1a2σ2vT2v2amσmvTmvm]

x=a1σ1vT1v1u1+a2σ2vT2v2u2++amσmvTmvmum

由上式,可以这么理解线性变换

首先将n维向量使用矩阵的右奇异向量作为基表示,再将每个维度映射到一个左奇异向量基

奇异值则可以认为是输入与输出间进行的标量的膨胀控制。

4. Reference