奇异值分解(Singular Value Decomposition,SVD)
引入
在上一节中我们回顾了矩阵的特征分解,但是特征分解只能对方阵进行(当然有的方阵可能也无法进行特征分解),那对于任意的一个矩阵
A
∈
R
m
×
n
A\in{R^{m\times{n}}}
A∈Rm×n 是否也能进行矩阵分解呢?答案是肯定的,那就是本节我们要介绍的奇异值分解(SVD)。
在正式介绍SVD之前,我们先来思考一下:
y
⃗
=
A
x
⃗
\vec{y}=A\vec{x}
y=Ax 代表什么意义?我们可以认为,矩阵
A
A
A 代表了一种线性变换,将n维的向量
x
⃗
\vec{x}
x 从
R
n
R^n
Rn 空间变换为
R
m
R^{m}
Rm 空间下的m维向量
y
⃗
\vec{y}
y。那进一步想,矩阵
A
A
A 到底是怎么把向量
x
⃗
\vec{x}
x 变换为向量
y
⃗
\vec{y}
y 的呢?或者说是经历了哪些步骤将向量
x
⃗
\vec{x}
x 变换为向量
y
⃗
\vec{y}
y 的呢?
如果存在一种分解方法,可以将矩阵
A
A
A 进行因子分解,得到
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT,其中
U
U
U 为
R
m
×
m
R^{m\times{m}}
Rm×m空间下的正交矩阵,
Σ
\Sigma
Σ 为
R
m
×
n
R^{m\times{n}}
Rm×n 空间下的
(
m
×
n
)
(m\times{n})
(m×n) 矩形对角矩阵,
V
T
V^T
VT 为
R
n
×
n
R^{n\times{n}}
Rn×n 空间下的正交矩阵。那么对于
A
x
⃗
=
U
Σ
V
T
x
⃗
A\vec{x}=U\Sigma V^T\vec{x}
Ax=UΣVTx 可以理解为先用
V
T
V^T
VT 对
x
⃗
\vec{x}
x 进行变换得到
V
T
x
⃗
V^T\vec{x}
VTx,再用
Σ
\Sigma
Σ 对
V
T
x
⃗
V^T\vec{x}
VTx 进行变换得到
Σ
V
T
x
⃗
\Sigma V^T\vec{x}
ΣVTx,最后用
U
U
U 对
Σ
V
T
x
⃗
\Sigma V^T\vec{x}
ΣVTx 进行变换得到
U
Σ
V
T
x
⃗
U\Sigma V^T\vec{x}
UΣVTx。那么问题来了,上述变换都表示什么意思呢?
V
V
V是正交矩阵,其列向量构成
R
n
R^n
Rn 空间的一组标准正交基,表示
R
n
R^n
Rn 中的正交坐标系的旋转或者反射变换,
U
U
U 同理;而
Σ
\Sigma
Σ 的对角元素
σ
1
,
σ
2
,
.
.
.
,
σ
n
\sigma_1,\sigma_2,...,\sigma_n
σ1,σ2,...,σn 是一组非负实数,表示
R
n
R^n
Rn 中的原始坐标实现坐标轴的
σ
1
,
σ
2
,
.
.
.
,
σ
n
\sigma_1,\sigma_2,...,\sigma_n
σ1,σ2,...,σn 倍的缩放变换。
结合下图给出一个更为直观的几何解释:原始空间的标准正交基(红色和黄色),经过坐标系的旋转变换
V
T
V^T
VT、坐标轴的缩放变换
Σ
\Sigma
Σ(黑色
σ
1
,
σ
2
\sigma_1,\sigma_2
σ1,σ2)、坐标系的旋转变换
U
U
U,得到和经过线性变换
A
A
A 等价的结果。
SVD的定义
经过上述的叙述,我们对SVD算是有了一个初步的了解,下面给出奇异值分解的定义:
定义3.1(奇异值分解) 矩阵的奇异值分解是指,将一个非零的 ( m × n ) (m\times{n}) (m×n) 实矩阵表示为以下三个实矩阵乘积形式的运算,即进行矩阵的因子分解: A = U Σ V T A=U\Sigma V^T A=UΣVT其中 U U U 是m阶正交矩阵, V V V 是n阶正交矩阵, Σ \Sigma Σ 是降序排列的非负的对角线元素组成的 ( m × n ) (m\times{n}) (m×n) 矩形对角矩阵,满足: U U T = I UU^T=I UUT=I V V T = I VV^T=I VVT=I Σ = d i a g ( σ 1 , σ 2 , . . . , σ p ) \Sigma=diag(\sigma_1,\sigma_2,...,\sigma_p) Σ=diag(σ1,σ2,...,σp) σ 1 ≥ σ 2 ≥ ⋯ ≥ σ p ≥ 0 \sigma_1\ge\sigma_2\ge\dots\ge\sigma_p\ge0 σ1≥σ2≥⋯≥σp≥0 p = m i n ( m , n ) p=min(m,n) p=min(m,n) U Σ V T U\Sigma V^T UΣVT 称为矩阵 A A A 的奇异值分解, σ i \sigma_i σi 称为矩阵的奇异值, U U U 的列向量称为左奇异向量, V V V 的列向量称为右奇异向量。
【注意】:奇异值分解不是要求矩阵 A A A 是方阵,事实上矩阵的奇异值分解可以看做是方阵对角化的推广。
任意给定一个实矩阵,其奇异值分解是否一定存在你?答案是肯定的,有 奇异值分解基本定理 给与保证,下面我们证明之。
【证明】:证明是构造性的,对给定的矩阵
A
A
A ,构造出其奇异值分解的各个矩阵。为了方便,不妨设
m
≥
n
m\ge n
m≥n。证明由三步完成:
(1)确定
V
V
V 和
Σ
\Sigma
Σ
矩阵
A
A
A 是
m
×
n
m\times{n}
m×n 实矩阵,则矩阵
A
T
A
A^TA
ATA 是n阶实对称矩阵。因而
A
T
A
A^TA
ATA 的特征值都是实数,且存在一个n阶的正交矩阵
V
V
V 实现
A
T
A
A^TA
ATA 的对角化,使得
V
T
(
A
T
A
)
V
=
Λ
V^T(A^TA)V=\Lambda
VT(ATA)V=Λ 成立。
而且,
A
T
A
A^TA
ATA 的特征值都是非负的。事实上,令
λ
\lambda
λ 是
A
T
A
A^TA
ATA 的一个特征值,
x
⃗
\vec{x}
x 是对应的特征向量,则
∥
A
x
⃗
∥
2
=
x
T
A
T
A
x
=
λ
x
T
x
=
λ
∥
x
∥
2
\parallel A\vec{x}\parallel^2=x^TA^TAx=\lambda x^Tx =\lambda \parallel x\parallel^2
∥Ax∥2=xTATAx=λxTx=λ∥x∥2于是
λ
=
∥
A
x
∥
2
∥
x
∥
2
≥
0
\lambda=\frac{\parallel Ax\parallel^2}{\parallel x\parallel^2}\ge0
λ=∥x∥2∥Ax∥2≥0可以假设正交矩阵
V
V
V 的列的排列使得对应的特征值形成降序排列
λ
1
≥
λ
2
≥
⋯
≥
λ
n
≥
0
\lambda_1\ge\lambda_2\ge\dots\ge\lambda_n\ge0
λ1≥λ2≥⋯≥λn≥0计算特征值的平方根(实际上就是矩阵
A
A
A的奇异值)
σ
j
=
λ
j
,
j
=
1
,
2
,
…
,
n
\sigma_j=\sqrt{\lambda_j},j=1,2,\dots,n
σj=λj,j=1,2,…,n设矩阵
A
A
A 的秩是
r
r
r,则矩阵
A
T
A
A^TA
ATA 的秩也是
r
r
r,由于
A
T
A
A^TA
ATA 是对称矩阵,它的秩等于正的特征值的个数,所以
λ
1
≥
λ
2
≥
⋯
≥
λ
r
>
0
,
λ
r
+
1
=
λ
r
+
2
=
⋯
=
λ
n
=
0
\lambda_1\ge\lambda_2\ge \dots \ge\lambda_r>0,\lambda_{r+1}=\lambda_{r+2}=\dots=\lambda_n=0
λ1≥λ2≥⋯≥λr>0,λr+1=λr+2=⋯=λn=0对应的有
σ
1
≥
σ
2
⋯
≥
σ
r
>
0
,
σ
r
+
1
=
σ
r
+
2
=
…
σ
n
=
0
\sigma_1\ge\sigma_2\dots\ge\sigma_r>0,\sigma_{r+1}=\sigma_{r+2}=\dots\sigma_n=0
σ1≥σ2⋯≥σr>0,σr+1=σr+2=…σn=0 令
V
1
=
(
v
1
v
1
…
v
r
)
,
V
2
=
(
v
r
+
1
v
r
+
2
…
v
n
)
V_1=\begin{pmatrix} v_1&v_1&\dots&v_r\end{pmatrix},V_2=\begin{pmatrix}v_{r+1}&v_{r+2}&\dots&v_n\end{pmatrix}
V1=(v1v1…vr),V2=(vr+1vr+2…vn)其中
v
1
,
…
,
v
r
v_1,\dots,v_r
v1,…,vr 为
A
T
A
A^TA
ATA 的正特征值对应的特征向量,
v
r
+
1
,
…
,
v
n
v_{r+1},\dots,v_n
vr+1,…,vn 为0特征值对应的特征向量,则
V
=
(
V
1
V
2
)
V=\begin{pmatrix}V_1&V_2\end{pmatrix}
V=(V1V2) 这就是矩阵
A
A
A的奇异值分解中的n阶正交矩阵
V
V
V。
令
Σ
1
=
(
σ
1
σ
2
⋱
σ
r
)
\Sigma_1=\begin{pmatrix}\sigma_1&&&&\\&\sigma_2&&&\\&&\ddots&\\&&&&\sigma_r\end{pmatrix}
Σ1=⎝⎜⎜⎛σ1σ2⋱σr⎠⎟⎟⎞则
m
×
n
m\times{n}
m×n 矩形对角矩阵
Σ
\Sigma
Σ 可以表示为
Σ
=
(
Σ
1
0
0
0
)
\Sigma=\begin{pmatrix}\Sigma_1&0\\0&0\end{pmatrix}
Σ=(Σ1000)这就是矩阵
A
A
A 的奇异值分解中的
m
×
n
m\times{n}
m×n 矩形对角矩阵
Σ
\Sigma
Σ。
下面推出后面要用到的一个公式。 因为
V
2
V_2
V2 的列向量是
A
T
A
A^TA
ATA 对应于特征值为0的特征向量,因此
V
2
V_2
V2 的列向量工程了A的零空间的一组标准正交基。因此
A
V
2
=
0
AV_2=0
AV2=0 由于
V
V
V 是正交矩阵,则
I
=
V
V
T
=
V
1
V
1
T
+
V
2
V
2
T
I=VV^T=V_1V_1^T+V_2V_2^T
I=VVT=V1V1T+V2V2T
A
=
A
I
=
A
V
1
V
1
T
+
A
V
2
V
2
T
=
A
V
1
V
1
T
A=AI=AV_1V_1^T+AV_2V_2^T=AV_1V_1^T
A=AI=AV1V1T+AV2V2T=AV1V1T
(2)确定
U
U
U
接着构造m阶正交矩阵
U
U
U,令
u
j
=
1
σ
j
A
v
j
,
j
=
1
,
2
,
…
,
r
u_j=\frac{1}{\sigma_j}Av_j,j=1,2,\dots,r
uj=σj1Avj,j=1,2,…,r
U
1
=
(
u
1
u
2
…
u
r
)
U1=\begin{pmatrix}u_1&u_2&\dots&u_r\end{pmatrix}
U1=(u1u2…ur)
则有
A
V
1
=
U
1
Σ
1
AV_1=U_1\Sigma_1
AV1=U1Σ1
U
1
U_1
U1 的列向量构成了一组标准正交基,因为
u
i
T
u
j
=
(
1
σ
i
v
i
T
A
T
)
(
1
σ
j
A
v
j
)
u_i^Tu_j=(\frac{1}{\sigma_i}v_i^TA^T)(\frac{1}{\sigma_j}Av_j)
uiTuj=(σi1viTAT)(σj1Avj)
=
1
σ
i
σ
j
v
i
T
(
A
T
A
v
j
)
=\frac{1}{\sigma_i\sigma_j}v_i^T(A^TAv_j)
=σiσj1viT(ATAvj)
=
σ
j
σ
i
v
i
T
v
j
=\frac{\sigma_j}{\sigma_i}v_i^Tv_j
=σiσjviTvj
=
δ
i
j
,
i
=
1
,
2
,
…
,
r
;
j
=
1
,
2
,
…
,
r
= \delta_{ij},i=1,2,\dots,r;j=1,2,\dots,r
=δij,i=1,2,…,r;j=1,2,…,r令
{
u
r
+
1
,
u
r
+
2
,
…
,
u
m
}
\{u_{r+1},u_{r+2},\dots,u_m\}
{ur+1,ur+2,…,um} 为
N
(
A
T
)
N(A^T)
N(AT) 的一组标准正交基,并令
U
2
=
(
u
r
+
1
u
r
+
2
…
u
m
)
U_2=\begin{pmatrix}u_{r+1}&u_{r+2}&\dots&u_m\end{pmatrix}
U2=(ur+1ur+2…um)
U
=
(
U
1
U
2
)
U=\begin{pmatrix}U_1&U_2\end{pmatrix}
U=(U1U2)则
u
1
,
u
2
,
…
,
u
m
u_1,u_2,\dots,u_m
u1,u2,…,um 构成了
R
m
R^m
Rm 的一组标准正交基。因此,
U
U
U 是m阶正交矩阵,这就是矩阵
A
A
A 的奇异值分解中的m阶正交矩阵。
(3)证明 U Σ V T = A U\Sigma V^T=A UΣVT=A
由上述推导可知
U
Σ
V
T
=
(
U
1
U
2
)
(
Σ
1
0
0
0
)
(
V
1
T
V
2
T
)
U\Sigma V^T=\begin{pmatrix}U_1&U_2\end{pmatrix}\begin{pmatrix}\Sigma_1&0\\0&0\end{pmatrix}\begin{pmatrix}V_1^T\\V_2^T\end{pmatrix}
UΣVT=(U1U2)(Σ1000)(V1TV2T)
=
U
1
Σ
1
V
1
T
=U_1\Sigma_1V_1^T
=U1Σ1V1T
=
A
V
1
V
1
T
=AV_1V_1^T
=AV1V1T
=
A
=A
=A
至此证明了矩阵
A
A
A 存在奇异值分解。
紧奇异值分解和截断奇异值分解
定理3.1 给出的奇异值分解 A = U Σ V T A=U\Sigma V^T A=UΣVT又称为完全奇异值分解。实际常用的奇异值分解是紧凑形式和截断形式。
【紧奇异值分解】
定义3.2(紧奇异值分解) 设有
m
×
n
m\times{n}
m×n 实矩阵
A
A
A,其秩为
r
a
n
k
(
A
)
=
r
,
r
≤
m
i
n
(
m
,
n
)
rank(A)=r,r\le min(m,n)
rank(A)=r,r≤min(m,n),则称
U
r
Σ
r
V
r
T
U_r\Sigma_rV_r^T
UrΣrVrT 为
A
A
A 的紧奇异值分解,即
A
=
U
r
Σ
r
V
r
T
A=U_r\Sigma_rV_r^T
A=UrΣrVrT
其中
U
r
U_r
Ur 是
m
×
r
m\times{r}
m×r 矩阵,
V
r
V_r
Vr 是
n
×
r
n\times{r}
n×r 矩阵,
Σ
r
\Sigma_r
Σr 是 r 阶对角矩阵,矩阵
U
r
U_r
Ur 由完全奇异值分解中
U
U
U 的前 r 列,矩阵
V
r
V_r
Vr 由
V
V
V 的前r列,矩阵
Σ
r
\Sigma_r
Σr 由
Σ
\Sigma
Σ 的前r个对角线元素得到,紧奇异值分解的对角矩阵
Σ
r
\Sigma_r
Σr 的秩与原始矩阵
A
A
A 的秩相等。
【截断奇异值分解】
定义3.3(截断奇异值分解) 设 A A A 为 m × n m\times{n} m×n 实矩阵,其秩 r a n k ( A ) = r , 且 0 < k < r rank(A)=r,且 0<k<r rank(A)=r,且0<k<r,则称 U k Σ k V k T U_k\Sigma_k V_k^T UkΣkVkT 为矩阵 A A A 的截断奇异值分解 A ≈ U k Σ k V k T A\approx U_k\Sigma_k V_k^T A≈UkΣkVkT其中, U k U_k Uk 是 m × k m\times{k} m×k 矩阵, V k V_k Vk 是 n × k n\times{k} n×k 矩阵, Σ k \Sigma_k Σk 是 k 阶对角矩阵; 矩阵 U k U_k Uk 由完全奇异值分解中 U U U 的前 k 列,矩阵 V k V_k Vk 由 V V V 的前 k 列,矩阵 Σ k \Sigma_k Σk 由 Σ \Sigma Σ 的前 k 个对角线元素得到。对角矩阵 Σ k \Sigma_k Σk 的秩比原始矩阵 A A A 的秩低。
【注】:
(1)实际应用中提到的矩阵的奇异值分解时,通常指的是截断奇异值分解。
(2)紧奇异值分解对应着无损压缩,截断奇异值分解对应着有损压缩。
SVD的主要性质
【1】 设矩阵 A A A 的奇异值分解为 A = U Σ V T A=U\Sigma V^T A=UΣVT,则以下关系成立: A T A = ( U Σ V T ) T ( U Σ V T ) = V ( Σ T Σ ) V T A^TA=(U\Sigma V^T)^T(U\Sigma V^T)=V(\Sigma^T\Sigma)V^T ATA=(UΣVT)T(UΣVT)=V(ΣTΣ)VT A A T = ( U Σ V T ) ( U Σ V T ) T = U ( Σ Σ T ) U T AA^T=(U\Sigma V^T)(U\Sigma V^T)^T=U(\Sigma\Sigma^T)U^T AAT=(UΣVT)(UΣVT)T=U(ΣΣT)UT,也就是说,矩阵 A T A A^TA ATA 和 A A T AA^T AAT 的特征分解存在,且可以由矩阵 A A A 的奇异值分解的矩阵表示。
【2】矩阵 A A A 的奇异值分解中,奇异值 σ 1 , σ 2 , … , σ n \sigma_1,\sigma_2,\dots,\sigma_n σ1,σ2,…,σn 是唯一的,而矩阵 U U U 和 V V V 不是唯一的。
【3】矩阵 A A A 和 Σ \Sigma Σ 的秩相等,等于正奇异值 σ i \sigma_i σi 的个数 r r r (包含重复的奇异值)。
【注】:掌握了前边所述的SVD的构造,奇异值分解的计算也就明白了。关于奇异值分解的计算和奇异值分解与矩阵近似的相关内容,感兴趣的可以参考参考文献[1]。
【参考文献】
[1] 统计学习方法 / 李航著。—2版。—北京:清华大学出版社,2019