##矩阵SVD分解的理论基础
首先,我们先说明什么是矩阵的奇异值分解(single value decomposition),简称SVD。
给定一个矩阵
A
∈
R
m
×
n
A \in R^{m \times n}
A∈Rm×n, 设它的秩为r,则它具有以下的分解形式
A
m
×
n
=
U
m
×
m
Σ
m
×
n
V
n
×
n
T
A_{m \times n} = U_{m \times m} \Sigma_{m \times n} V_{n \times n}^T
Am×n=Um×mΣm×nVn×nT
其中,U是正交矩阵,其列向量是
A
A
T
AA^T
AAT的单位特征向量,V 也是正交矩阵,其列向量是对应的
A
T
A
A^TA
ATA的单位特征向量,
Σ
\Sigma
Σ具有下述的形式
Σ
=
(
Σ
1
O
O
O
)
\Sigma = \left( \begin{array}{cc} \Sigma_1 & O \\ O & O\end{array} \right)
Σ=(Σ1OOO)
且
Σ
1
=
d
i
a
g
(
σ
1
,
σ
2
,
…
,
σ
r
)
\Sigma_1 = diag(\sigma_1,\sigma_2,\ldots,\sigma_r)
Σ1=diag(σ1,σ2,…,σr),r是矩阵A的秩,
σ
i
(
i
=
1
,
2
,
…
,
r
)
\sigma_i(i=1,2,\ldots,r)
σi(i=1,2,…,r) 是矩阵
A
A
T
AA^T
AAT (或
A
T
A
A^TA
ATA)的非零特征值的正平方根,也叫做A的\textbf{奇异值},当然A还可能包括零奇异值。
在我们知道了什么是SVD后,接下来看一下SVD是怎么来的,在开始之前我们先介绍一下矩阵的四个基本子空间的基本性质。
###四个基本子空间
设矩阵
A
∈
R
m
×
n
A \in R^{m \times n}
A∈Rm×n,秩rank(A) = r,
A的行空间
R
(
A
T
)
R(A^T)
R(AT) 为A 的行向量张成集合,
A的列空间 R(A)为A 的列向量的张成集合,
A的的零空间 N(A)为满足Ax = 0 的所有x 组成的集合,
A
T
A^T
AT的零空间
N
(
A
T
)
N(A^T)
N(AT) 为满足
A
T
y
=
0
A^Ty = 0
ATy=0的所有y 组成的集合。
\par 四个基本子空间的维数分别为dim(R(A)) = r,dim(
R
(
A
T
)
R(A^T)
R(AT)) = r,dim(N(A)) = n-r,dim(
N
(
A
T
)
N(A^T)
N(AT)) = m - r,而且
R
(
A
)
⊥
N
(
A
T
)
R(A) \perp N(A^T)
R(A)⊥N(AT),
R
(
A
T
)
⊥
N
(
A
)
R(A^T) \perp N(A)
R(AT)⊥N(A)。
####有关特征值的结论
- A A T AA^T AAT和 A T A A^TA ATA具有相同的非零特征值,而且所有特征值均大于等于0
- $A = U \land U^T 为 对 称 矩 阵 A 的 特 征 值 分 解 ( 对 称 性 保 证 特 征 向 量 正 交 ) , 为对称矩阵A的特征值分解(对称性保证特征向量正交), 为对称矩阵A的特征值分解(对称性保证特征向量正交),\land$是对角线元素A的特征值的对角矩阵,U的列向量为对应的A的特征向量。
- rank(A) = r,则 A T A A^TA ATA的正特征值有r个
##SVD的由来
在矩阵A的行空间,我们选择一组标准正交基
v
1
,
v
2
,
…
,
v
r
v_1,v_2,\ldots,v_r
v1,v2,…,vr,经过A 变换,得到列空间的r个元素
u
1
,
u
2
,
…
,
u
r
u_1,u_2,\ldots,u_r
u1,u2,…,ur,我们希望变换后的
u
1
,
u
2
,
…
,
u
r
u_1,u_2,\ldots,u_r
u1,u2,…,ur也是正交的,所以我们在行空间选择的标准正交基就不能是任意的,它需要满足使得变换后的
u
1
,
u
2
,
…
,
u
r
u_1,u_2,\ldots,u_r
u1,u2,…,ur也正交。写成矩阵形式
A
[
v
1
,
v
2
,
…
,
v
r
]
=
[
u
1
,
u
2
,
…
,
u
r
]
A[v_1,v_2,\ldots,v_r] = [u_1,u_2,\ldots,u_r]
A[v1,v2,…,vr]=[u1,u2,…,ur]
我们把
u
1
,
u
2
,
…
,
u
r
u_1,u_2,\ldots,u_r
u1,u2,…,ur单位化,设其长度分别为
σ
1
,
σ
2
,
…
,
σ
r
\sigma_1,\sigma_2,\ldots,\sigma_r
σ1,σ2,…,σr,并记单位化后的向量重新记为
u
1
,
u
2
,
…
,
u
r
u_1,u_2,\ldots,u_r
u1,u2,…,ur,则
A
[
v
1
,
v
2
,
…
,
v
r
]
=
[
σ
1
u
1
,
σ
2
u
2
,
…
,
σ
r
u
r
]
=
[
u
1
,
u
2
,
…
,
u
r
]
[
σ
1
0
0
0
0
σ
2
0
0
0
0
…
0
0
0
0
σ
r
]
A[v_1,v_2,\ldots,v_r] = [\sigma_1 u_1,\sigma_2 u_2,\ldots,\sigma_r u_r] = [u_1,u_2,\ldots,u_r]\left[ \begin{array}{cccc} \sigma_1 & 0 & 0 & 0 \\ 0 & \sigma_2 & 0 & 0 \\ 0 & 0 & \ldots & 0 \\ 0 & 0 & 0 & \sigma_r \end{array} \right]
A[v1,v2,…,vr]=[σ1u1,σ2u2,…,σrur]=[u1,u2,…,ur]⎣⎢⎢⎡σ10000σ20000…0000σr⎦⎥⎥⎤
我们把零空间也考虑进来,记A的零空间的一组标准正交基
v
r
+
1
,
v
r
+
2
,
…
,
v
n
v_{r+1},v_{r+2},\ldots,v_n
vr+1,vr+2,…,vn,
A
T
A^T
AT的零空间的一组标准正交基为
u
r
+
1
,
u
r
+
2
,
…
,
u
n
u_{r+1},u_{r+2},\ldots,u_n
ur+1,ur+2,…,un,则
A
[
v
1
,
v
2
,
…
,
v
r
,
v
r
+
1
,
v
r
+
2
,
…
,
v
n
]
=
[
σ
1
u
1
,
σ
2
u
2
,
…
,
σ
r
u
r
,
0
,
0
,
…
,
0
]
A[v_1,v_2,\ldots,v_r,v_{r+1},v_{r+2},\ldots,v_n] = [\sigma_1 u_1,\sigma_2 u_2,\ldots,\sigma_r u_r,0,0,\ldots,0]
A[v1,v2,…,vr,vr+1,vr+2,…,vn]=[σ1u1,σ2u2,…,σrur,0,0,…,0]
=
[
u
1
,
u
2
,
…
,
u
r
,
u
r
+
1
,
u
r
+
2
,
…
,
u
m
]
[
σ
1
0
0
0
0
σ
2
0
0
0
0
…
0
0
0
0
σ
r
O
]
= [u_1,u_2,\ldots,u_r,u_{r+1},u_{r+2},\ldots,u_m]\left[ \begin{array}{ccccc} \sigma_1 & 0 & 0 & 0 & \quad \\ 0 & \sigma_2 & 0 & 0 & \quad \\ 0 & 0 & \ldots & 0 & \quad \\ 0 & 0 & 0 & \sigma_r & \quad \\ \quad & \quad & \quad & \quad & \textbf{O} \end{array} \right]
=[u1,u2,…,ur,ur+1,ur+2,…,um]⎣⎢⎢⎢⎢⎡σ10000σ20000…0000σrO⎦⎥⎥⎥⎥⎤
写成矩阵形式如下
KaTeX parse error: Undefined control sequence: \mbox at position 14: AV = U\Sigma,\̲m̲b̲o̲x̲{即,}A = U \Sigm…
什么样的U,V,
Σ
\Sigma
Σ满足上面的要求呢?我们需要解出来。
首先,左乘
A
T
A^T
AT,我们得到,
A
T
A
=
V
Σ
T
U
T
U
Σ
V
T
=
V
Σ
T
Σ
V
T
A^TA = V \Sigma^TU^TU\Sigma V^T = V \Sigma^T \Sigma V^T
ATA=VΣTUTUΣVT=VΣTΣVT
由对称矩阵的特征值分解,我们可以知道,
Σ
\Sigma
Σ中的
σ
1
,
σ
2
,
…
,
σ
r
\sigma_1,\sigma_2,\ldots,\sigma_r
σ1,σ2,…,σr取
A
T
A
A^TA
ATA的非零(即正)特征值的正平方根,也是做A正
奇异值,的正V 的列向量取对应的特征向量。
然后,右乘
A
T
A^T
AT,我们得到,
A
A
T
=
U
Σ
V
T
V
Σ
T
U
T
=
U
Σ
Σ
T
U
T
AA^T = U\Sigma V^TV \Sigma^TU^T = U \Sigma \Sigma^T U^T
AAT=UΣVTVΣTUT=UΣΣTUT
由对称矩阵的特征值分解,我们可以知道,
Σ
\Sigma
Σ中的
σ
1
,
σ
2
,
…
,
σ
r
\sigma_1,\sigma_2,\ldots,\sigma_r
σ1,σ2,…,σr取
A
A
T
AA^T
AAT的非零(即正)特征值正平方根,U的列向量取对应的特征向量。
由于
A
A
T
AA^T
AAT和
A
T
A
A^TA
ATA具有相同的非零特征值,而且所有特征值均大于等于0,所以上述结论是成立的。
####再看SVD
从上面的推导我们可以看出,
- V的前r列组成 R ( A T ) R(A^T) R(AT)的标准正交基
- U的前r列组成 R ( A ) R(A) R(A)的标准正交基
- V的后n-r列组成N(A)的标准正交基
- U的后m-r列组成 N ( A T ) N(A^T) N(AT)的标准正交基
我们把矩阵A的SVD展开
\begin{eqnarray*}
A & = & U \Sigma V^T \ & = & [u_1,u_2,\ldots,u_r,u_{r+1},u_{r+2},\ldots,u_m] \left[ \begin{array}{ccccc}
\sigma_1 & 0 & 0 & 0 & \quad \
0 & \sigma_2 & 0 & 0 & \quad \
0 & 0 & \ldots & 0 & \quad \
0 & 0 & 0 & \sigma_r & \quad \
\quad & \quad & \quad & \quad & \textbf{O}
\end{array} \right][v_1,v_2,\ldots,v_r,v_{r+1},v_{r+2},\ldots,v_n]^T \
& = & \sigma_1 u_1v_1^T + \sigma_2 u_1v_1^T + \ldots + \sigma_r u_1v_1^T \
& = & \sum_{i=1}^r \sigma_i u_iv_i^T
\end{eqnarray*}
例 求矩阵A = ( 4 4 − 3 3 ) \left( \begin{array}{cc} 4 & 4 \\ -3 & 3 \end{array} \right) (4−343)的奇异值分解。
解
A
T
A
=
(
25
7
7
25
)
A^TA = \left( \begin{array}{cc} 25 & 7 \\ 7 & 25 \end{array} \right)
ATA=(257725),特征值
λ
1
=
32
,
λ
2
=
18
,
\lambda_1 = 32, \lambda_2 = 18,
λ1=32,λ2=18,对应的单位正交向量分别为
(
1
2
1
2
)
\left( \begin{array}{c} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{array} \right)
(2121),
(
1
2
−
1
2
)
\left( \begin{array}{c} \frac{1}{\sqrt{2}} \\ \frac{-1}{\sqrt{2}} \end{array} \right)
(212−1),
所以 V =
(
1
2
1
2
1
2
−
1
2
)
\left( \begin{array}{cc} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{-1}{\sqrt{2}} \end{array} \right)
(2121212−1),
Σ
=
(
32
0
0
18
)
\Sigma = \left( \begin{array}{cc} \sqrt{32} & 0 \\ 0 & \sqrt{18} \end{array} \right)
Σ=(320018).
又 A V = ( 8 2 0 0 − 6 2 ) AV = \left( \begin{array}{cc} \frac{8}{\sqrt{2}} & 0 \\ 0 & \frac{-6}{\sqrt{2}} \end{array} \right) AV=(28002−6).
因此 U = ( 8 2 1 32 0 0 − 6 2 1 18 ) = ( 1 0 0 − 1 ) U = \left( \begin{array}{cc} \frac{8}{\sqrt{2}}\frac{1}{\sqrt{32}} & 0 \\ 0 & \frac{-6}{\sqrt{2}}\frac{1}{\sqrt{18}} \end{array} \right) = \left( \begin{array}{cc} 1 & 0 \\ 0 & -1 \end{array} \right) U=(28321002−6181)=(100−1)
所以 A = ( 1 0 0 − 1 ) ( 32 0 0 18 ) ( 1 2 1 2 1 2 − 1 2 ) A = \left( \begin{array}{cc} 1 & 0 \\ 0 & -1 \end{array} \right)\left( \begin{array}{cc} \sqrt{32} & 0 \\ 0 & \sqrt{18} \end{array} \right)\left( \begin{array}{cc} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{-1}{\sqrt{2}} \end{array} \right) A=(100−1)(320018)(2121212−1).