对于 n n n阶方阵 A \bm{A} A来说,其特征值定义为:
A u = λ u \bm{A}\bm{u}=\lambda\bm{u} Au=λu
式中 λ \lambda λ为矩阵 A \bm{A} A的特征值, u \bm{u} u为矩阵 A \bm{A} A的特征矢量。进一步地,如果 A \bm{A} A为实对称矩阵,且我们求出了矩阵 A \bm{A} A所有的特征值 { λ 1 , λ 2 , ⋯ , λ n } \{\lambda_1,\lambda_2,\cdots,\lambda_n\} {λ1,λ2,⋯,λn}和对应的特征矢量 { u 1 , u 2 , ⋯ , u n } \{\bm{u}_1,\bm{u}_2,\cdots,\bm{u}_n\} {u1,u2,⋯,un}。对于实对称矩阵来说,其特征矢量两两正交,因此对于所有的特征值和特征矢量,我们有:
{ A u 1 = λ 1 u 1 A u 2 = λ 2 u 2 ⋮ A u n = λ n u n ⇒ A [ u 1 u 2 ⋯ u n ] ⏟ U = [ u 1 u 2 ⋯ u n ] ⏟ U [ λ 1 λ 2 ⋱ λ n ] ⏟ Λ ⇒ A U = U Λ ⇒ A = U Λ U − 1 = U Λ U T \begin{aligned} &\left\{ \begin{aligned} \bm{A}\bm{u}_1&=\lambda_1\bm{u}_1\\ \bm{A}\bm{u}_2&=\lambda_2\bm{u}_2\\ &\vdots\\ \bm{A}\bm{u}_n&=\lambda_n\bm{u}_n \end{aligned} \right.\\ \Rightarrow\bm{A}\underbrace{\left[\begin{array}{cccc}\bm{u}_1 & \bm{u}_2 & \cdots & \bm{u}_n\end{array}\right]}_{\bm{U}}&=\underbrace{\left[\begin{array}{cccc}\bm{u}_1 & \bm{u}_2 & \cdots & \bm{u}_n\end{array}\right]}_{\bm{U}}\underbrace{\begin{bmatrix} \lambda_1 & &&\\ &\lambda_2&&\\ &&\ddots&\\ &&&\lambda_n \end{bmatrix}}_{\bm{\Lambda}}\\ \Rightarrow\bm{AU}&=\bm{U\Lambda}\\ \Rightarrow\bm{A}&=\bm{U\Lambda}\bm{U}^{-1}=\bm{U\Lambda}\bm{U}^T\\ \end{aligned} ⇒AU [u1u2⋯un]⇒AU⇒A⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧Au1Au2Aun=λ1u1=λ2u2⋮=λnun=U [u1u2⋯un]Λ ⎣⎢⎢⎡λ1λ2⋱λn⎦⎥⎥⎤=UΛ=UΛU−1=UΛUT
上式即为实对称矩阵的特征值分解。
由于 { u 1 , u 2 , ⋯ , u n } \{\bm{u}_1,\bm{u}_2,\cdots,\bm{u}_n\} {u1,u2,⋯,un}相互正交,其实际上是 n n n维空间的一组标准正交基,因此对于任意矢量 x ∈ R n \bm{x}\in\mathbb{R}^n x∈Rn来说,其可以表示为标准正交基的线性组合形式,即 x = ∑ i = 1 n a i u i = U [ a 1 , a 2 , ⋯ , a n ] T \bm{x}=\sum\limits_{i=1}^na_i\bm{u}_i=\bm{U}\left[a_1,a_2,\cdots,a_n\right]^T x=i=1∑naiui=U[a1,a2,⋯,an]T,则:
A x = U Λ U T U [ a 1 a 2 ⋮ a n ] \bm{Ax}=\bm{U}\bm{\Lambda}\bm{U}^T\bm{U}\left[\begin{array}{c}a_1 \\ a_2 \\ \vdots \\ a_n\end{array}\right] Ax=UΛUTU⎣⎢⎢⎢⎡a1a2⋮an⎦⎥⎥⎥⎤
可以看出 A \bm{A} A矩阵实际上对矢量 x \bm{x} x进行了三步操作:1)首先反解出了 x \bm{x} x在 n n n维标准正交基下的系数;2)随后将其按照对应的特征值进行缩放;3)最后映射到回 n n n维标准正交基下。在这一过程中,如果存在只有 k < n k
EVD算法要求矩阵 A \bm{A} A必须为实对称矩阵,但实际上在很多问题中,我们的矩阵 A \bm{A} A是任意的 m × n m\times n m×n矩阵,这是EVD无法完成矩阵的分解,就需要使用奇异值分解(SVD)方法。
特征值分解的一个广泛应用在于求解矩阵的逆,利用特征值分解我们很容易得到矩阵 A \bm{A} A的逆矩阵为:
A − 1 = ( U Λ U T ) − 1 = U Λ − 1 U T \bm{A}^{-1}=\left(\bm{U\Lambda}\bm{U}^T\right)^{-1}=\bm{U\Lambda}^{-1}\bm{U}^T A−1=(UΛUT)−1=UΛ−1UT
对于任意秩为 k k k的 m × n m\times n m×n矩阵 A \bm{A} A来说,参照EVD,其同样可以表示将一个 n n n维矢量 x \bm{x} x映射到 m m m维标准正交空间,即我们同样可以将 A \bm{A} A分解为一个 m m m维标准正交基矩阵 U = [ u 1 , u 2 , ⋯ , u m ] \bm{U}=\left[\bm{u}_1,\bm{u}_2,\cdots,\bm{u}_m\right] U=[u1,u2,⋯,um]、一个增广的对角矩阵 Σ \bm{\Sigma} Σ和一个 n n n维标准正交基矩阵的转置 V T = [ v 1 T , v 2 T , ⋯ , v n T ] T \bm{V}^T=\left[\bm{v}_1^T,\bm{v}_2^T,\cdots,\bm{v}_n^T\right]^T VT=[v1T,v2T,⋯,vnT]T的乘积形式,即:
A m × n = U m × m Σ m × n V n × n T \bm{A}_{m\times n}=\bm{U}_{m\times m}\bm{\Sigma}_{m\times n}\bm{V}^T_{n\times n} Am×n=Um×mΣm×nVn×nT
虽然 A \bm{A} A本身不是实对称矩阵,但 A A T \bm{A}\bm{A}^T AAT以及 A T A \bm{A}^T\bm{A} ATA是实对称矩阵,因此分别有:
A A T = U Σ V T V Σ T U T = U Σ Σ T U T A T A = V Σ T U T U Σ V T = V Σ T Σ V T \begin{aligned} \bm{A}\bm{A}^T&=\bm{U}\bm{\Sigma}\bm{V}^T\bm{V}\bm{\Sigma}^T\bm{U}^T=\bm{U}\bm{\Sigma}\bm{\Sigma}^T\bm{U}^T\\ \bm{A}^T\bm{A}&=\bm{V}\bm{\Sigma}^T\bm{U}^T\bm{U}\bm{\Sigma}\bm{V}^T=\bm{V}\bm{\Sigma}^T\bm{\Sigma}\bm{V}^T \end{aligned} AATATA=UΣVTVΣTUT=UΣΣTUT=VΣTUTUΣVT=VΣTΣVT
显然根据EVD分解,矩阵 U \bm{U} U和 V \bm{V} V分别为由 A A T \bm{A}\bm{A}^T AAT和 A T A \bm{A}^T\bm{A} ATA特征矢量构成的正交基矩阵。进一步地,由于 R a n k ( A ) = k Rank(\bm{A})=k Rank(A)=k,因此特征值矩阵 Σ Σ T \bm{\Sigma}\bm{\Sigma}^T ΣΣT和 Σ T Σ \bm{\Sigma}^T\bm{\Sigma} ΣTΣ只有 k k k个非零项:
Σ Σ T = [ λ 1 ⋱ λ k 0 ⋱ 0 ] m × m = [ λ k × k 0 0 0 ] m × m Σ T Σ = [ λ k × k 0 0 0 ] n × n \begin{aligned} \bm{\Sigma}\bm{\Sigma}^T&=\begin{bmatrix} \lambda_1&&&&&\\ &\ddots&&&&\\ &&\lambda_k&&&\\ &&&0&&\\ &&&&\ddots&\\ &&&&&0 \end{bmatrix}_{m\times m}=\begin{bmatrix} \bm{\lambda}_{k\times k} & \bm{0}\\ \bm{0} & \bm{0} \end{bmatrix}_{m\times m}\\ \bm{\Sigma}^T\bm{\Sigma}&=\begin{bmatrix} \bm{\lambda}_{k\times k} & \bm{0}\\ \bm{0} & \bm{0} \end{bmatrix}_{n\times n}\\ \end{aligned} ΣΣTΣTΣ=⎣⎢⎢⎢⎢⎢⎢⎡λ1⋱λk0⋱0⎦⎥⎥⎥⎥⎥⎥⎤m×m=[λk×k000]m×m=[λk×k000]n×n
同时利用 Σ \bm{\Sigma} Σ只存在主对角线元素有:
Σ = [ λ 1 ⋱ λ k ⋯ 0 ⋮ ⋱ 0 0 ] = [ λ 0 0 0 ] \bm{\Sigma}=\begin{bmatrix} \sqrt{\lambda_1}&&&&\\ &\ddots&&&\\ &&\sqrt{\lambda_k}&\cdots&0\\ &&\vdots&\ddots&\\ &&0&&0 \end{bmatrix}=\begin{bmatrix} \sqrt{\bm{\lambda}} & \bm{0}\\ \bm{0} & \bm{0} \end{bmatrix} Σ=⎣⎢⎢⎢⎢⎢⎡λ1⋱λk⋮0⋯⋱00⎦⎥⎥⎥⎥⎥⎤=[λ000]
即奇异值 σ i = λ i \sigma_i=\sqrt{\lambda_i} σi=λi。
至此,我们推到了一般矩阵的SVD分解可以写为如下形式:
A = U Σ V T \bm{A}=\bm{U}\bm{\Sigma}\bm{V}^T A=UΣVT
其中 U \bm{U} U称为矩阵 A \bm{A} A的左奇异值矩阵, V \bm{V} V称为矩阵 A \bm{A} A的右奇异值矩阵。
在前面的分析中我们知道,对于秩为 k k k的 m × n m\times n m×n矩阵 A \bm{A} A来说,其非零奇异值只有 k k k个,我们将SVD分解中的三个矩阵其写成分块矩阵形式有:
A = [ u k u m − k ] [ σ k 0 0 0 ] [ v k T v n − k T ] = [ u k σ k v k T 0 0 0 ] \bm{A}=\begin{bmatrix} \bm{u}_k & \bm{u}_{m-k} \end{bmatrix}\begin{bmatrix} \bm{\sigma}_k & \bm{0}\\ \bm{0} & \bm{0} \end{bmatrix}\begin{bmatrix} \bm{v}_k^T \\ \bm{v}_{n-k}^T \end{bmatrix}=\begin{bmatrix} \bm{u}_k\bm{\sigma}_k\bm{v}_k^T & \bm{0}\\ \bm{0} & \bm{0} \end{bmatrix} A=[ukum−k][σk000][vkTvn−kT]=[ukσkvkT000]
可以看出, A \bm{A} A矩阵所包含的信息量完全等价于 u k σ k v k T \bm{u}_k\bm{\sigma}_k\bm{v}_k^T ukσkvkT这三个小矩阵的乘积,显然矩阵计算的维数得到了显著下降,这也是SVD算法被广泛用于PCA降维的原因。
对于齐次方程 A x = 0 \bm{A}\bm{x}=\bm{0} Ax=0来说,若其满秩,则方程只有零解。而在参数拟和等问题中,我们经常会遇到量测的数量 m m m远大于待估计变量的数量 n n n的情况,此时方程 A x = 0 \bm{A}\bm{x}=\bm{0} Ax=0是超定方程( m > n m>n m>n)。这类方程并没有精确解,只能求解最小二乘解,而SVD正是求解最小二乘解的常用方法。
记需要求解的最小二乘代价函数为(为了书写方便这里省略常系数 1 2 \frac{1}{2} 21):
e ( x ) = ∥ A x ∥ 2 = x T A T A x \bm{e}(\bm{x})=\|\bm{Ax}\|^2=\bm{x}^T\bm{A}^T\bm{A}\bm{x} e(x)=∥Ax∥2=xTATAx
带入矩阵 A \bm{A} A的SVD分解有(注意这里矩阵 A \bm{A} A必须是列满秩的,即存在 n n n个非零的奇异值):
e ( x ) = x T A T A x = x T V Σ T U U T Σ V T x = x T V Σ T Σ V T x = x T V [ σ 1 2 ⋱ σ n 2 ] V T x \begin{aligned} \bm{e}(\bm{x})&=\bm{x}^T\bm{A}^T\bm{A}\bm{x}\\ &=\bm{x}^T\bm{V}\bm{\Sigma}^T\bm{U}\bm{U}^T\bm{\Sigma}\bm{V}^T\bm{x}\\ &=\bm{x}^T\bm{V}\bm{\Sigma}^T\bm{\Sigma}\bm{V}^T\bm{x}\\ &=\bm{x}^T\bm{V}\begin{bmatrix} \sigma_1^2&&\\ &\ddots&\\ &&\sigma_n^2\\ \end{bmatrix}\bm{V}^T\bm{x} \end{aligned} e(x)=xTATAx=xTVΣTUUTΣVTx=xTVΣTΣVTx=xTV⎣⎡σ12⋱σn2⎦⎤VTx
由于 { v 1 , v 2 , ⋯ , v n } \{\bm{v}_1,\bm{v}_2,\cdots,\bm{v}_n\} {v1,v2,⋯,vn}是 n n n维空间的标准正交基,因此 x \bm{x} x可以表示为 x = ∑ i = 1 n a i v i = V [ a 1 , a 2 , ⋯ , a n ] T \bm{x}=\sum\limits_{i=1}^na_i\bm{v}_i=\bm{V}\left[a_1,a_2,\cdots,a_n\right]^T x=i=1∑naivi=V[a1,a2,⋯,an]T,带入代价函数有:
e ( x ) = x T V [ σ 1 2 ⋱ σ n 2 ] V T x = [ a 1 a 2 ⋯ a n ] V T V [ σ 1 2 ⋱ σ k 2 ] V T V [ a 1 a 2 ⋮ a n ] = ∑ i = 1 n a i 2 σ i 2 (1) \begin{aligned} \bm{e}(\bm{x})&=\bm{x}^T\bm{V}\begin{bmatrix} \sigma_1^2&&\\ &\ddots&\\ &&\sigma_n^2\\ \end{bmatrix}\bm{V}^T\bm{x}\\ &=\left[\begin{array}{cccc}a_1 & a_2 & \cdots & a_n\end{array}\right]\bm{V}^T\bm{V}\begin{bmatrix} \sigma_1^2&&\\ &\ddots&\\ &&\sigma_k^2\\ \end{bmatrix}\bm{V}^T\bm{V}\left[\begin{array}{c}a_1 \\ a_2 \\ \vdots \\ a_n\end{array}\right]\\ &=\sum\limits_{i=1}^na_i^2\sigma_i^2 \end{aligned} \tag{1} e(x)=xTV⎣⎡σ12⋱σn2⎦⎤VTx=[a1a2⋯an]VTV⎣⎡σ12⋱σk2⎦⎤VTV⎣⎢⎢⎢⎡a1a2⋮an⎦⎥⎥⎥⎤=i=1∑nai2σi2(1)
我们假设奇异值矩阵的排列顺序是有小到大的,同时,由于齐次方程两侧乘以常系数并不会改变方程解的情况,因此我们可以引入约束 ∥ x ∥ = 1 \|x\|=1 ∥x∥=1,那么有:
∥ x ∥ 2 = 1 = ∑ i = 1 n ∑ j = 1 n a i a j v i T v j = ∑ i = 1 n a i 2 (2) \|x\|^2=1=\sum\limits_{i=1}^n\sum\limits_{j=1}^na_ia_j\bm{v}_i^T\bm{v}_j=\sum\limits_{i=1}^na_i^2 \tag{2} ∥x∥2=1=i=1∑nj=1∑naiajviTvj=i=1∑nai2(2)
显然式(1)取得最小值的条件是除最小奇异值外所有奇异值项的系数为0,联立式(2)可以进一步得到 a n 2 = 1 ⇒ a n = 1 a_n^2=1\Rightarrow a_n=1 an2=1⇒an=1。带回 x \bm{x} x的表达式有:
x = ∑ i = 1 n a i v i = v n \bm{x}=\sum\limits_{i=1}^na_i\bm{v}_i=\bm{v}_n x=i=1∑naivi=vn
即 x \bm{x} x为 A \bm{A} A最小奇异值 σ n \sigma_n σn对应的右奇异值矢量 v n \bm{v}_n vn。
上述结论成立的条件是矩阵 A \bm{A} A存在 n n n个非零奇异值,即至少是列满秩的。若矩阵 A \bm{A} A不满秩,那么其对应的最小二乘如下:
e ( x ) = x T A T A x = x T V Σ T U U T Σ V T x = x T V Σ T Σ V T x = x T V [ σ 1 2 ⋱ σ k 2 0 n − k ] V T x \begin{aligned} \bm{e}(\bm{x})&=\bm{x}^T\bm{A}^T\bm{A}\bm{x}\\ &=\bm{x}^T\bm{V}\bm{\Sigma}^T\bm{U}\bm{U}^T\bm{\Sigma}\bm{V}^T\bm{x}\\ &=\bm{x}^T\bm{V}\bm{\Sigma}^T\bm{\Sigma}\bm{V}^T\bm{x}\\ &=\bm{x}^T\bm{V}\begin{bmatrix} \sigma_1^2&&&\\ &\ddots&&\\ &&\sigma_k^2&\\ &&&\bm{0}_{n-k}\\ \end{bmatrix}\bm{V}^T\bm{x} \end{aligned} e(x)=xTATAx=xTVΣTUUTΣVTx=xTVΣTΣVTx=xTV⎣⎢⎢⎡σ12⋱σk20n−k⎦⎥⎥⎤VTx
可以看出此时该最小二乘存在 n − k n-k n−k维的零空间,前 k k k维可以按同样的方法确定,而后 n − k n-k n−k维则是自由变量,可以任意变化。