奇异值分解
奇异值分解非常重要且有趣。首先对于
n
×
n
n\times n
n×n对称矩阵
A
A
A,可以通过对角化得到其对角化形式
A
=
P
D
P
−
1
A=PDP^{-1}
A=PDP−1,但是如果
A
A
A不是对称矩阵或者不是方阵,则不能进行对角化,但是可以通过奇异值分解得到类似形式。对于对角化,利用的重要性质是
A
v
1
=
λ
v
1
A\bold{v_1}=\lambda \bold{v_1}
Av1=λv1以及对称矩阵的特征向量互相正交。对于任意
m
×
n
m\times n
m×n矩阵,可以看做是
R
m
\Bbb R^m
Rm到
R
n
\Bbb R^n
Rn空间的一个映射,是否也存在一些
A
v
1
=
σ
1
u
1
A\bold{v_1}=\sigma_1\bold{u_1}
Av1=σ1u1的形式呢?
定理:奇异值分解
设
A
A
A是秩为
r
r
r的
m
×
n
m\times n
m×n矩阵,那么存在一个
m
×
n
m\times n
m×n矩阵
Σ
\Sigma
Σ,
D
D
D是一个
r
×
r
r\times r
r×r非零对角矩阵,其对角线元素是A的前
r
r
r个奇异值,
σ
1
≥
σ
2
≥
.
.
.
≥
σ
r
>
0
\sigma_1\ge\sigma_2\ge...\ge\sigma_r\gt0
σ1≥σ2≥...≥σr>0,并且存在一个
m
×
m
m\times m
m×m正交矩阵
U
U
U和
n
×
n
n\times n
n×n正交矩阵
V
V
V,满足
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT,这个分解叫做
A
A
A的一个奇异值分解,矩阵
U
U
U和
V
V
V不是由
A
A
A唯一确定的(只确定了部分
U
和
V
U和V
U和V正交基,其余满足单位正交条件即可),但
Σ
\Sigma
Σ对角线必须是
A
A
A的奇异值。
Σ
=
[
D
0
0
0
]
\Sigma=\left[ \begin{aligned} D \ \ & 0\\ 0 \ \ & 0\\ \end{aligned} \right]
Σ=[D 0 00]
引入的过程
奇异值分解基于一般的矩阵对角化性质可以被长方形矩阵模仿:一个对称矩阵
A
A
A的特征值的绝对值,表示度量
A
A
A拉长或者压缩一个向量(特征向量)的程度,如果
A
x
=
λ
x
Ax=\lambda x
Ax=λx,且
∣
∣
x
∣
∣
=
1
||x||=1
∣∣x∣∣=1,那么
∣
∣
A
x
∣
∣
=
∣
∣
λ
x
∣
∣
=
∣
λ
∣
∣
∣
x
∣
∣
=
∣
λ
∣
||Ax||=||\lambda x||=|\lambda|||x||=|\lambda|
∣∣Ax∣∣=∣∣λx∣∣=∣λ∣∣∣x∣∣=∣λ∣
如果
λ
1
\lambda_1
λ1是具有最大数值的特征值,那么对应的单位特征向量
v
1
\bold{v_1}
v1,确定一个有
A
A
A拉长影响最大的方向,也就是
x
=
v
1
\bold{x}=\bold{v_1}
x=v1时,
∣
∣
A
x
∣
∣
||A\bold{x}||
∣∣Ax∣∣长度最大化,
∣
∣
A
v
1
∣
∣
=
∣
λ
1
∣
||A\bold{v_1}||=|\lambda_1|
∣∣Av1∣∣=∣λ1∣。其中的原因在特征值部分已经做了介绍,任何向量都可以分解成特征向量的线性组合,选取最大特征值对应的特征向量方向,对向量的拉长自然是最大的。这里为什么要通过研究拉长最大的方向来引入奇异值,后面会做分析。
以一个矩阵
A
A
A为例,求
∣
∣
x
∣
∣
=
1
||\bold{x}||=1
∣∣x∣∣=1的条件下
∣
∣
A
x
∣
∣
||A\bold{x}||
∣∣Ax∣∣的最大长度和此时的
x
\bold{x}
x
A
=
[
4
11
14
8
7
−
2
]
A=\left[ \begin{aligned} 4&&11&&14\\ 8&&7&&-2\\ \end{aligned} \right]
A=[4811714−2]
求
∣
∣
A
x
∣
∣
||A\bold{x}||
∣∣Ax∣∣的最大值,等价于求
∣
∣
A
x
∣
∣
2
||A\bold{x}||^2
∣∣Ax∣∣2的最大值,
∣
∣
A
x
∣
∣
2
=
(
A
x
)
T
(
A
x
)
=
x
T
A
T
A
x
=
x
T
(
A
T
A
)
x
||A\bold{x}||^2=(A\bold{x})^T(A\bold{x})=\bold{x}^TA^TA\bold{x}=\bold{x}^T(A^TA)\bold{x}
∣∣Ax∣∣2=(Ax)T(Ax)=xTATAx=xT(ATA)x
而
(
A
T
A
)
T
=
A
T
A
T
T
=
A
T
A
(A^TA)^T=A^TA^{TT}=A^TA
(ATA)T=ATATT=ATA,
A
T
A
A^TA
ATA转置等于自身,是对称矩阵。根据前面对二次型的介绍,最大值的模是
A
T
A
A^TA
ATA的最大特征值
λ
1
\lambda_1
λ1,此时
x
\bold{x}
x为最大特征值
λ
1
\lambda_1
λ1对应的特征向量
v
1
\bold{v_1}
v1,令
σ
i
=
λ
i
\sigma_i=\sqrt{\lambda_i}
σi=λi,叫做作矩阵
A
A
A的奇异值,故
∣
∣
A
x
∣
∣
||A\bold{x}||
∣∣Ax∣∣的最大值为
σ
1
=
λ
1
\sigma_1=\sqrt{\lambda_1}
σ1=λ1.
考虑到
v
1
\bold{v_1}
v1是
m
×
1
m\times 1
m×1,令
u
1
\bold{u_1}
u1是
R
n
\Bbb R^n
Rn空间的单位基,则
A
v
1
=
σ
1
u
1
A\bold{v_1}=\sigma_1 \bold{u_1}
Av1=σ1u1,进而推广
A
v
i
=
σ
i
u
i
A\bold{v_i}=\sigma_i \bold{u_i}
Avi=σiui,这个推广是可行的,因为
A
T
A
A^TA
ATA是对称矩阵,所以
v
i
v_i
vi之间相互正交(特征值一节已经证明,且证明比较简单)。幸运的是,在
R
n
\Bbb R^n
Rn空间中,
u
i
\bold{u_i}
ui在奇异值不同的情况下也是相互正交的,因为:
设
u
i
\bold{u_i}
ui和
u
j
\bold{u_j}
uj对应不同奇异值
σ
i
\sigma_i
σi和
σ
j
\sigma_j
σj,则
σ
i
σ
j
u
i
⋅
u
j
=
(
σ
i
u
i
)
T
(
σ
j
u
j
)
=
(
A
v
i
)
T
(
A
v
j
)
=
v
i
T
(
A
T
A
)
v
j
=
v
i
T
λ
j
v
j
=
0
\sigma_i\sigma_j\bold{u_i}\cdot\bold{u_j}=(\sigma_i\bold{u_i})^T(\sigma_j\bold{u_j})\\ =(A\bold{v_i})^T(A\bold{v_j})=\bold{v_i}^T(A^TA)\bold{v_j}=\bold{v_i}^T\lambda_j\bold{v_j}=0
σiσjui⋅uj=(σiui)T(σjuj)=(Avi)T(Avj)=viT(ATA)vj=viTλjvj=0
下面来讨论,为什么要通过研究
∣
∣
A
x
∣
∣
||A\bold{x}||
∣∣Ax∣∣的最大值、次大值来引入奇异值的分析。首先当然是出于类比的原因,因为特征值和特征向量就是对单位向量拉长最大、次大。。的数值和方向。如果不加最大值这个限制,还能不能分解
A
A
A呢?此时仍旧可以分解
A
=
Q
M
V
A=QMV
A=QMV,
Q
,
V
Q, V
Q,V分别是
m
×
m
,
n
×
n
m\times m, n\times n
m×m,n×n的单位正交基,问题就在于,此时M就不是奇异值构成的对角阵了,且计算是比较复杂的,其实对称矩阵也可以写成非特征向量构成的P满足
A
=
P
M
P
−
1
A=PMP^{-1}
A=PMP−1的形式,但是此时只是换了一组正交基,不能发现矩阵的本质特性,不能简化运算。按照这种分解方式,研究的是矩阵在椭圆的长轴、次长轴…一个分解的性质,具有明确的几何意义和物理意义。也正是因为奇异值分解有求取
∣
∣
A
x
∣
∣
||A\bold{x}||
∣∣Ax∣∣最大值的含义,使其可以用于主成分分析法,拉长最大的方向,是将原像数据映射到像空间导致差别最大的数据,含有最多的分类信息量。
举个例子
求取
A
=
[
1
−
1
−
2
2
2
−
2
]
A=\left[ \begin{aligned} 1&&-1\\ -2&&2\\ 2&&-2 \end{aligned} \right]
A=
1−22−12−2
第一步:先求
A
T
A
=
[
9
−
9
−
9
9
]
A^TA=\left[\begin{aligned}9&&-9\\-9&&9\end{aligned}\right]
ATA=[9−9−99]
第二步:求
A
T
A
A^TA
ATA的特征值
λ
1
=
18
,
λ
2
=
0
\lambda_1=18,\lambda_2=0
λ1=18,λ2=0和特征向量
v
1
=
[
2
2
−
2
2
]
v
2
=
[
2
2
2
2
]
\bold{v_1}=\left[\begin{aligned}\frac{\sqrt{2}}{2} \\ -\frac{\sqrt{2}}{2}\end{aligned}\right] \bold{v_2}=\left[\begin{aligned}\frac{\sqrt{2}}{2} \\ \frac{\sqrt{2}}{2}\end{aligned}\right]
v1=
22−22
v2=
2222
第三步:求
U
U
U. 只能求得一个非零向量
u
1
=
1
σ
1
A
v
1
=
[
1
3
−
2
3
2
3
]
\bold{u_1}=\frac{1}{\sigma_1}A\bold{v_1}=\left[\begin{aligned} \frac{1}{3} \\ -\frac{2}{3} \\ \frac{2}{3} \\ \end{aligned}\right]
u1=σ11Av1=
31−3232
使用格拉姆施密特方法补齐U的单位正交基。
x
1
−
2
x
2
+
2
x
3
=
0
x_1-2x_2+2x_3=0
x1−2x2+2x3=0,分别取
x
2
=
0
,
x
3
=
1
,
则
x
1
=
−
2
x_2=0,x_3=1, 则x_1=-2
x2=0,x3=1,则x1=−2和
x
1
=
0
,
x
2
=
1
,
则
x
3
=
1
x_1=0,x_2=1, 则x_3=1
x1=0,x2=1,则x3=1,此时后两个向量都和
u
1
\bold{u_1}
u1正交,有格拉姆施密特方法,求得
u
2
=
[
−
2
2
3
−
2
6
2
6
]
u
3
=
[
0
2
2
2
2
]
\bold{u_2}=\left[\begin{aligned} -\frac{2\sqrt{2}}{3} \\ -\frac{\sqrt{2}}{6} \\ \frac{\sqrt{2}}{6} \\ \end{aligned}\right] \bold{u_3}=\left[\begin{aligned} 0 \\ \frac{\sqrt{2}}{2} \\ \frac{\sqrt{2}}{2} \\ \end{aligned}\right]
u2=
−322−6262
u3=
02222
求得A的奇异值分解为
A
=
U
Σ
V
T
=
[
1
3
−
2
2
3
0
−
2
3
−
2
6
2
2
2
3
2
6
2
2
]
[
3
2
0
0
0
0
0
]
[
2
2
−
2
2
2
2
2
2
]
A=U\Sigma V^T=\left[ \begin{aligned} \frac{1}{3} &&-\frac{2\sqrt{2}}{3}&&0 \\ -\frac{2}{3} &&-\frac{\sqrt{2}}{6}&&\frac{\sqrt{2}}{2} \\ \frac{2}{3} &&\frac{\sqrt{2}}{6}&&\frac{\sqrt{2}}{2} \\ \end{aligned} \right] \left[ \begin{aligned} 3\sqrt{2} &&0 \\ 0&&0 \\ 0&&0 \\ \end{aligned} \right] \left[ \begin{aligned} \frac{\sqrt{2}}{2} &&-\frac{\sqrt{2}}{2} \\ \frac{\sqrt{2}}{2}&&\frac{\sqrt{2}}{2} \\ \end{aligned} \right]
A=UΣVT=
31−3232−322−626202222
3200000
2222−2222
对于非0奇异值
3
2
3\sqrt{2}
32实际上只有一个非零向量
v
1
\bold{v_1}
v1和
u
1
\bold{u_1}
u1,
U
,
V
U,V
U,V其余的正交基是为了满秩补齐的,实际上,在分解和计算A的时候,完全可以使用0进行填充,对与计算A没有任何影响。另外,对于
U
U
U因为只有一个正交基,所以另外的两个单位正交基实际上并不是唯一的(补齐它们,实际对计算A没有任何影响,因为在计算矩阵的时候,他们将和
Σ
\Sigma
Σ里的0值相乘)
对于奇异值分解若
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT,则
A
T
=
V
Σ
U
T
A^T=V\Sigma U^T
AT=VΣUT。对于
A
A
A的奇异值分解,若
λ
i
,
v
i
\lambda_i, \bold{v_i}
λi,vi分别是
A
T
A
A^TA
ATA的一个特征值和特征向量,
σ
i
=
λ
i
\sigma_i=\sqrt{\lambda_i}
σi=λi是对应的奇异值,则有
A
v
i
=
σ
i
u
i
A\bold{v_i}=\sigma_i\bold{u_i}
Avi=σiui,
σ
i
A
T
u
i
=
A
T
A
v
i
=
λ
i
v
i
\sigma_iA^T\bold{u_i}=A^TA\bold{v_i}=\lambda_i\bold{v_i}
σiATui=ATAvi=λivi,所以
A
T
u
i
=
λ
i
σ
i
v
i
=
σ
i
v
i
A^T\bold{u_i}=\frac{\lambda_i}{\sigma_i}\bold{v_i}=\sigma_i\bold{v_i}
ATui=σiλivi=σivi,所以,如果
V
V
V的某一列是
A
A
A原像空间的单位正交基,
U
U
U的对应列是
A
A
A的像空间的单位正交基,则
U
U
U的该列是
A
T
A^T
AT原像空间的单位正交基,
V
V
V的对应列是
A
T
A^T
AT的像空间的单位正交基。所以
A
T
A^T
AT的奇异值分解有上述形式。此处没有证明
A
T
A
A^TA
ATA和
A
A
T
AA^T
AAT具有相同的非零特征值。
基于这个原因对于求
A
m
×
n
A_{m\times n}
Am×n的奇异值分解(m<<n),可以通过求
A
T
A^T
AT的奇异值分解来实现,则计算复杂度降低:计算
A
T
A
A^TA
ATA复杂度从
2
m
n
2
2mn^2
2mn2下降到
2
m
n
2m^n
2mn,计算行列式的时间复杂度由
n
!
n!
n!下降到
m
!
m!
m!
因此,如果上面计算
A
T
A^T
AT的奇异值分解,可以立即得到
A
T
=
(
U
Σ
V
T
)
T
=
V
Σ
U
T
A^T=(U\Sigma V^T)^T=V\Sigma U^T
AT=(UΣVT)T=VΣUT,而上述矩阵均为已知。
证明:
A
T
A
A^TA
ATA和
A
A
T
AA^T
AAT有相同的非0特征值。
假设
λ
\lambda
λ是
A
T
A
A^TA
ATA的特征值,则有
A
T
A
v
=
λ
v
A^TA\bold{v}=\lambda\bold{v}
ATAv=λv,设
u
=
A
v
\bold{u}=A\bold{v}
u=Av,则有
A
A
T
u
=
A
A
T
A
v
=
A
λ
v
=
λ
A
v
=
λ
u
AA^T\bold{u}=AA^TA\bold{v}=A\lambda \bold{v}=\lambda A\bold{v}=\lambda\bold{u}
AATu=AATAv=Aλv=λAv=λu,故
λ
\lambda
λ是
A
A
T
AA^T
AAT的特征值,对应的特征向量
u
=
A
v
\bold{u}=A\bold{v}
u=Av
奇异值分解的简化和A的伪逆
当
Σ
\Sigma
Σ包含零元素的行或列是,矩阵
A
A
A具有更简洁的分解,利用上面建立的符号,取
r
=
r
a
n
k
A
r=rank\ A
r=rank A,将
U
,
V
U,V
U,V矩阵分块为第一块包含r列的子矩阵:
U
=
[
U
r
U
m
−
r
]
,
U
r
=
[
u
1
.
.
.
u
r
]
U=[U_r\ U_{m-r}], U_r=[\bold{u_1}\ ...\bold{u_r}]
U=[Ur Um−r],Ur=[u1 ...ur]
V
=
[
V
r
U
n
−
r
]
,
V
r
=
[
v
1
.
.
.
v
r
]
V=[V_r\ U_{n-r}], V_r=[\bold{v_1}\ ...\bold{v_r}]
V=[Vr Un−r],Vr=[v1 ...vr]
那么
U
r
是
m
×
r
,
V
r
是
n
×
r
U_r是m \times r, V_r是n\times r
Ur是m×r,Vr是n×r,则
A
=
[
U
r
U
m
−
r
]
[
D
0
0
0
]
[
V
r
T
V
n
−
r
T
]
=
U
r
D
V
r
T
A=[U_r\ \ U_{m-r}] \left[\begin{aligned}D&&0\\0&&0\end{aligned}\right] \left[\begin{aligned}V_r^T\\V_{n-r}^T\end{aligned}\right]=U_rDV_r^T
A=[Ur Um−r][D000][VrTVn−rT]=UrDVrT
这叫做A的简化奇异值分解,并把
A
+
=
V
r
D
−
1
U
r
T
A^+=V_rD^{-1}U_r^T
A+=VrD−1UrT叫做A的伪逆,也叫穆尔-彭罗斯逆
此时
A
x
=
b
A\bold{x}=\bold{b}
Ax=b的最小二乘解,可以由伪逆给出
x
^
=
A
+
b
=
V
r
D
−
1
U
r
T
b
\hat{\bold{x}}=A^+\bold{b}=V_rD^{-1}U_r^T\bold{b}
x^=A+b=VrD−1UrTb
则
A
x
^
=
(
U
r
D
V
r
T
)
(
V
r
D
−
1
U
r
T
b
)
=
U
r
U
r
T
b
A\hat{\bold{x}}=(U_rDV_r^T)(V_rD^{-1}U_r^T\bold{b})=U_rU_r^T\bold{b}
Ax^=(UrDVrT)(VrD−1UrTb)=UrUrTb