在做非线性问题的优化时,难免会遇到一些自由度不可观的问题,如果这个自由度在理论上就是不可观的(比如,不管怎么运动都无法令这个自由度从不可观变成可观),那么在优化的时候就要单独地把这个自由度设置成fixed.
如果这个自由度理论上是可观的,而这并不表示该自由度在现实中一定是可观的(比如,需要满足一定的运动条件才能令这个自由度可观),也就是,对该自由度约束越多,可观性越强,反之亦然.
那么在优化中如何自动判定当前自由度是否可观呢?可观时,更新该自由度,不可观时,fixed该自由度. 下面介绍的TSVD
就是为了解决这个问题.
1. 线性空间
1.1 span
假设存在一向量空间
V
\mathcal{V}
V,span也是一个向量空间,它由一组来自
V
\mathcal{V}
V的向量
{
v
1
,
…
,
v
n
}
\left\{\mathbf{v}_{1}, \ldots, \mathbf{v}_{n}\right\}
{v1,…,vn}的全部可能的任意组合构成
span
[
{
v
1
,
…
,
v
n
}
]
=
{
∑
i
=
1
n
c
i
v
i
∣
c
i
∈
F
}
\operatorname{span}\left[\left\{\mathbf{v}_{1}, \ldots, \mathbf{v}_{n}\right\}\right]=\left\{\sum_{i=1}^{n} c_{i} \mathbf{v}_{i} \mid c_{i} \in \mathcal{F}\right\}
span[{v1,…,vn}]={i=1∑ncivi∣ci∈F}
线性无关的定义
如果只有当
c
i
c_{i}
ci都为零时,才能组合得到零向量的话,那么这组向量就是线性无关的,也就是说,这组向量中任何一个都不能通过其它向量组合得到
1.2 range定义
也叫,列空间/值域
线性映射(linear map)
f
f
f 可以将
V
\mathcal{V}
V mapping到另一个向量空间
W
\mathcal{W}
W,linear map
f
f
f的range or image定义如下:
r
a
n
g
e
[
f
]
=
{
w
∈
W
∣
w
=
f
(
v
)
,
v
∈
V
}
range [f]=\{\mathbf{w} \in \mathcal{W} \mid \mathbf{w}=f(\mathbf{v}), \mathbf{v} \in \mathcal{V}\}
range[f]={w∈W∣w=f(v),v∈V}
range是 W \mathcal{W} W的一个子集
1.3 kernel/nullspace定义
kernel [ f ] = { v ∈ V ∣ f ( v ) = 0 , 0 ∈ W } \text { kernel }[f]=\{\mathbf{v} \in \mathcal{V} \mid f(\mathbf{v})=\mathbf{0}, \mathbf{0} \in \mathcal{W}\} kernel [f]={v∈V∣f(v)=0,0∈W}
kernel是 V \mathcal{V} V的一个子集
1.4 rank-nullity theorem
dim [ kernel [ f ] ] + dim [ range [ f ] ] = dim [ V ] \operatorname{dim}[\text { kernel }[f]]+\operatorname{dim}[\text { range }[f]]=\operatorname{dim}[\mathcal{V}] dim[ kernel [f]]+dim[ range [f]]=dim[V]
2. 线性映射矩阵
定义一个线性映射 A m × n A_{m \times n} Am×n,表示可以将任意向量 v n × 1 ∈ V \mathbf{v_{n \times 1}} \in \mathcal{V} vn×1∈V映射到 w m × 1 ∈ W \mathbf{w_{m \times 1}} \in \mathcal{W} wm×1∈W
2.1 矩阵的range定义
range [ A ] = { w ∈ W ∣ w = A v , v ∈ V } \text { range }[\mathbf{A}]=\{\mathbf{w} \in \mathcal{W} \mid \mathbf{w}=\mathbf{A} \mathbf{v}, \mathbf{v} \in \mathcal{V}\} range [A]={w∈W∣w=Av,v∈V}
矩阵 A A A的列向量集合为 { a 1 , … , a n } \left\{\mathbf{a}_{1}, \ldots, \mathbf{a}_{n}\right\} {a1,…,an},那么range也可以定义成:
range [ A ] = span [ { a 1 , … , a n } ] \operatorname{range}[\mathbf{A}]=\operatorname{span}\left[\left\{\mathbf{a}_{1}, \ldots, \mathbf{a}_{n}\right\}\right] range[A]=span[{a1,…,an}]
进一步,矩阵的range的秩与矩阵的秩相等
rank
[
A
]
=
dim
[
range
[
A
]
]
\operatorname{rank}[\mathbf{A}]=\operatorname{dim}[\text { range }[\mathbf{A}]]
rank[A]=dim[ range [A]]
2.2 矩阵的kernel定义
null [ A ] = { v ∈ V ∣ A v = 0 , 0 ∈ W } \text { null }[\mathbf{A}]=\{\mathbf{v} \in \mathcal{V} \mid \mathbf{A} \mathbf{v}=\mathbf{0}, \mathbf{0} \in \mathcal{W}\} null [A]={v∈V∣Av=0,0∈W}
2.3 矩阵的rank-nullity theorem
dim [ null [ A ] ] + rank [ A ] = n \operatorname{dim}[\text { null }[\mathbf{A}]]+\operatorname{rank}[\mathbf{A}]=n dim[ null [A]]+rank[A]=n
3. SVD分解中的range、nullspace和rank
A = U D V T → A V = U D A=UDV^T \rightarrow A V = U D A=UDVT→AV=UD
比较column(矩阵块乘法)可得:
A
v
i
=
σ
i
u
i
A v_{i}=\sigma_{i} u_{i}
Avi=σiui
假设
r
a
n
k
(
A
)
=
r
rank(A)=r
rank(A)=r,
当奇异值大于零时(
A
v
i
σ
i
=
u
i
\frac{A v_{i}}{\sigma_{i}}= u_{i}
σiAvi=ui),参照2.1中矩阵range的定义可知,
range
[
A
]
=
span
[
{
u
1
,
…
,
u
r
}
]
\operatorname{range}[\mathbf{A}]=\operatorname{span}\left[\left\{\mathbf{u}_{1}, \ldots, \mathbf{u}_{r}\right\}\right]
range[A]=span[{u1,…,ur}]
当奇异值等于0时,可得,
null
[
A
]
=
span
[
{
v
r
+
1
,
…
,
v
n
}
]
\text { null }[\mathbf{A}]=\operatorname{span}\left[\left\{\mathbf{v}_{r+1}, \ldots, \mathbf{v}_{n}\right\}\right]
null [A]=span[{vr+1,…,vn}]
4. 近似矩阵
假设矩阵
A
A
A的rank是
r
r
r,其可以写成:
A
=
∑
i
=
1
r
σ
i
u
i
v
i
T
\mathbf{A} =\sum_{i=1}^{r} \sigma_{i} \mathbf{u}_{i} \mathbf{v}_{i}^{T}
A=i=1∑rσiuiviT
对其进行low-rank approximation,得到近似矩阵
A
k
A_k
Ak:
A
k
=
∑
i
=
1
k
σ
i
u
i
v
i
T
,
k
<
r
\mathbf{A}_{k}=\sum_{i=1}^{k} \sigma_{i} \mathbf{u}_{i} \mathbf{v}_{i}^{T}, \quad k<r
Ak=i=1∑kσiuiviT,k<r
上面的近似过程中仅使用了前
k
k
k个奇异值和奇异向量,
A
−
A
k
\mathbf{A}-\mathbf{A_k}
A−Ak由剩下的
r
−
k
r-k
r−k个奇异值和奇异向量构成,那么可得:
∥
A
−
A
k
∥
2
=
σ
k
+
1
\| \mathbf{A}-\mathbf{A_k} \|_2 = \sigma_{k+1}
∥A−Ak∥2=σk+1
5. 代数秩(algebraic rank)与数值秩(numerical rank)
5.1 代数秩
代数秩(algebraic rank)是指通过行列式变换得到的秩,
A
=
(
1
2
3
4
5
6
7
8
9
)
\mathbf{A}=\left(\begin{array}{lll} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{array}\right)
A=
147258369
对
A
A
A加上随机噪声得到
A
∗
A^*
A∗:
A
∗
=
(
1.0003
1.9983
3.0003
3.9992
4.9999
6.0003
7.0014
7.9998
8.9991
)
\mathbf{A}^{*}=\left(\begin{array}{lll} 1.0003 & 1.9983 & 3.0003 \\ 3.9992 & 4.9999 & 6.0003 \\ 7.0014 & 7.9998 & 8.9991 \end{array}\right)
A∗=
1.00033.99927.00141.99834.99997.99983.00036.00038.9991
A ∗ A^* A∗在代数上满秩(通过行列式变换得到),实际上却是欠定的,这种现象在真实世界中很常见
5.2 数值秩
根据
p
=
2
p=2
p=2诱导矩阵范数定义numerical rank 为
r
ϵ
r_{\epsilon}
rϵ,
ϵ
\epsilon
ϵ为近似阈值
rank
[
A
,
ϵ
]
=
min
∥
A
−
B
∥
2
≤
ϵ
rank
[
B
]
\operatorname{rank}[\mathbf{A}, \epsilon]=\min _{\|\mathbf{A}-\mathbf{B}\|_{2} \leq \epsilon} \operatorname{rank}[\mathbf{B}]
rank[A,ϵ]=∥A−B∥2≤ϵminrank[B]
其中
ϵ
\epsilon
ϵ应满足
σ
r
ϵ
>
ϵ
≥
σ
r
ϵ
+
1
\sigma_{r_{\epsilon}}>\epsilon \geq \sigma_{r_{\epsilon}+1}
σrϵ>ϵ≥σrϵ+1
σ r ϵ \sigma_{r_{\epsilon}} σrϵ与 σ r ϵ + 1 \sigma_{r_{\epsilon}}+1 σrϵ+1之间的gap应该足够大,以保证能够应对噪声对 ϵ \epsilon ϵ的影响,如果奇异值从大到小缓慢变化到零,那么numerical rank 将是 ill-defined 的