最近在翻张贤达的矩阵分析书, 看到矩阵方程求解这一块时,又遇到了老熟人“子空间方法”。之前对这一块掌握的都不是太熟, 顺便结合着网上的一些博客以及MIT的课程, 写下这篇, 以记录对子空间的理解。
向量空间与子空间首先要介绍的就是子空间的基本概念, 那就不可避免地涉及向量空间, 姑且可以形象地认为这是“父空间”的意思。
向量空间: 该空间对空间内向量的线性组合(相加,数乘)封闭。也就是说如果一个向量集合所组成的空间满足两种操作(数乘、相加)且通过这两种操作及他们之间的线性组合后的向量仍然在这个集合所形成的空间中。
比如 R 2 R^2 R2 (所有的2维实向量)就是一个向量空间。
子空间: 向量空间的一部分
盗一张图~整个坐标系是
R
2
R^2
R2向量空间的话, 紫色的这条直线就可以看做是一个
R
2
R^2
R2的子空间。
令 V = C n V=\mathbb{C}^n V=Cn, 代表 n n n维的复向量空间。 令 S = { u 1 , ⋯ , u m } S=\left\{u_{1}, \cdots, u_{m}\right\} S={u1,⋯,um}是向量空间 V V V中的向量子集合,其中 m ≤ n m\le n m≤n。则 u 1 , ⋯ , u m u_{1}, \cdots, u_{m} u1,⋯,um的所有线性组合的集合 W W W称为由 u 1 , ⋯ , u m u_{1}, \cdots, u_{m} u1,⋯,um张成的子空间,即: W = Span { u 1 , ⋯ , u m } = { u ∣ u = a 1 u 1 + ⋯ + a m u m } W=\operatorname{Span}\left\{\boldsymbol{u}_{1}, \cdots, \boldsymbol{u}_{m}\right\}=\left\{\boldsymbol{u} | \boldsymbol{u}=a_{1} \boldsymbol{u}_{1}+\cdots+\boldsymbol{a}_{m} \boldsymbol{u}_{m}\right\} W=Span{u1,⋯,um}={u∣u=a1u1+⋯+amum}
以上图为例, V = R 2 V=R^2 V=R2, 当 m = 1 m=1 m=1时, S = { u 1 } S=\{u_1\} S={u1}, 若 u 1 = [ 1 , 1 ] T u_1=[1, 1]^T u1=[1,1]T, 那么由 S S S (就 u 1 u_1 u1一个向量)张成的子空间就是这条紫色直线。 ( W = { u ∣ u = a 1 u 1 } W=\{u|u=a_1u_1\} W={u∣u=a1u1})
很容易证明一点, 如果张成集 S S S中的某个向量可以被表示为其他向量的线性组合, 那可以从 S S S中删去该向量,仍张成相同的子空间 W W W。 即该向量是冗余的。
将 S S S中的冗余向量全部删除之后, 剩下的 p p p个向量必定是线性无关的, 且仍能张成子空间 W W W, 那么, 这 p p p个向量就被称为是 W W W的一组基。
继续举个例子说明: 如果 S = { [ 1 0 ] , [ 0 1 ] , [ 1 1 ] } S=\{\left[\begin{array}{l}1 \\0\end{array}\right], \left[\begin{array}{l}0 \\1\end{array}\right], \left[\begin{array}{l}1 \\1\end{array}\right]\} S={[10],[01],[11]}, 显然 [ 1 1 ] \left[\begin{array}{l}1 \\1\end{array}\right] [11] 可以表示为前两者的加和, 故是冗余的,删去。 而 S = { [ 1 0 ] , [ 0 1 ] } S=\{\left[\begin{array}{l}1 \\0\end{array}\right], \left[\begin{array}{l}0 \\1\end{array}\right]\} S={[10],[01]}仍能张成这个子空间(其实就是 R 2 R^2 R2本身),这两个向量就是一组基。 (也正好是一组标准正交基)
一些定理与定义:
- 一组基的向量个数, 被称为该子空间 W W W的维数 d i m ( W ) \mathrm{dim}(W) dim(W)。
- 令 B = { b 1 , b 2 , ⋯ , b n } B=\left\{b_{1}, b_{2}, \cdots, b_{n}\right\} B={b1,b2,⋯,bn}子空间 W W W的一组基, 则对于其中任意一个向量 x x x, 都存在一组唯一的标量 c 1 , c 2 , ⋯ , c n c_{1}, c_{2}, \cdots, c_{n} c1,c2,⋯,cn,有: x = c 1 b 1 + c 2 b 2 + ⋯ + c n b n \boldsymbol{x}=c_{1} \boldsymbol{b}_{1}+c_{2} \boldsymbol{b}_{2}+\cdots+\boldsymbol{c}_{n} \boldsymbol{b}_{n} x=c1b1+c2b2+⋯+cnbn 一个更通俗易接收的说法是: 把基里的每个向量看做空间的一条坐标轴, 那么空间中任何一个向量都可以通过一组坐标在这个坐标系中表示。
一些数据, 随机地分布在 R 3 R^3 R3这样一个三维空间内。 而我们感兴趣的数据, 存在于该空间内的一个平面之上。这个平面就是一个子空间。 那我们就应该单独找出这个子空间,并在这个子空间上进行进一步的分析。 下图就是一个子空间方法的阐释: 左图是我们研究的三维空间内的数据。 通过svd等方法,我们找到了他们是聚集在一个平面内(子空间), 并找出了这个子空间的一组基(左图的红箭头),右图就是我们把数据投影到这个2维平面(子空间)上进行分析,就比一开始在整个三维空间内分析,清晰了许多。
与矩阵密切相关的,共有四个极为常用的基本子空间: 行空间, 列空间, 零空间和左零空间。 其中, 列空间我认为是最重要的。
定义: 对于复矩阵 A = [ a 1 , a 2 , ⋯ , a n ] ∈ C m × n \boldsymbol{A}=\left[\boldsymbol{a}_{1}, \boldsymbol{a}_{2}, \cdots, \boldsymbol{a}_{n}\right] \in \mathbb{C}^{m \times n} A=[a1,a2,⋯,an]∈Cm×n, a i \boldsymbol{a}_{i} ai是 m × 1 m\times 1 m×1的向量。 其列向量的所有线性组合的集合构成的子空间, 称为 A \mathbf{A} A的列空间:
Col ( A ) = Span { a 1 , a 2 , ⋯ , a n } = { y ∈ C m ∣ y = ∑ j = 1 n α j a j , α j ∈ C } \begin{aligned} \operatorname{Col}(\boldsymbol{A}) &=\operatorname{Span}\left\{\boldsymbol{a}_{1}, \boldsymbol{a}_{2}, \cdots, \boldsymbol{a}_{n}\right\} \\ &=\left\{\boldsymbol{y} \in \mathbb{C}^{m} | \boldsymbol{y}=\sum_{j=1}^{n} \alpha_{j} \boldsymbol{a}_{j}, \alpha_{j} \in \mathbb{C}\right\} \end{aligned} Col(A)=Span{a1,a2,⋯,an}={y∈Cm∣y=j=1∑nαjaj,αj∈C}
定义非常的简单。由之前对子空间的定义也可以知道, 可以将矩阵中线性有关的列去掉, 留下线性无关的一组列,就是列空间的一组基。 因此显然有: rank ( A ) = dim [ Col ( A ) ] \operatorname{rank}(A)=\operatorname{dim}[\operatorname{Col}(A)] rank(A)=dim[Col(A)]
再介绍 A \mathbf{A} A的值域(range),便于后续的理解:
Range ( A ) = { y ∈ C m ∣ A x = y , x ∈ C n } \operatorname{Range}(\boldsymbol{A})=\left\{\boldsymbol{y} \in \mathbb{C}^{m} | \boldsymbol{A} \boldsymbol{x}=\boldsymbol{y}, \quad \boldsymbol{x} \in \mathbb{C}^{n}\right\} Range(A)={y∈Cm∣Ax=y,x∈Cn}
令 x = [ α 1 , . . . , α n ] T x=[\alpha_1, ..., \alpha_n]^T x=[α1,...,αn]T, 易知:
Range ( A ) = Col ( A ) = Span { a 1 , a 2 , ⋯ , a n } \operatorname{Range}(\boldsymbol{A})=\operatorname{Col}(\boldsymbol{A})=\operatorname{Span}\left\{\boldsymbol{a}_{1}, \boldsymbol{a}_{2}, \cdots, \boldsymbol{a}_{n}\right\} Range(A)=Col(A)=Span{a1,a2,⋯,an}.
奇异值分解与列空间介绍了基本概念之后, 现在步入本文的正题:奇异值分解与列空间的关系, 并进一步引导出盲矩阵方程的求解方法。
首先, 对秩为 r r r的矩阵 A \mathbf{A} A,我们有truncated SVD分解(只取奇异值非零部分的奇异值分解)如下: A = U r Σ r V r H = ∑ i = 1 r σ i u i v i H \boldsymbol{A}=\boldsymbol{U}_{r} \boldsymbol{\Sigma}_{r} \boldsymbol{V}_{r}^{\mathrm{H}}=\sum_{i=1}^{r} \sigma_{i} \boldsymbol{u}_{i} \boldsymbol{v}_{i}^{\mathbf{H}} A=UrΣrVrH=i=1∑rσiuiviH
接下来,将其与 A \mathbf{A} A的列空间联系起来。
根据我们介绍的值域 R a n g e ( A ) \mathrm{Range}(A) Range(A)的定义, 有:
Range ( A ) = { y ∈ C m : y = A x , x ∈ C n } = { y ∈ C m : y = ∑ i = 1 r σ i u i v i H x , x ∈ C n } = { y ∈ C m : y = ∑ i = 1 r u i ( σ i v i H x ) , x ∈ C n } = { y ∈ C m : y = ∑ i = 1 r α i u i , α i = σ i v i H x ∈ C } = Span { u 1 , ⋯ , u r } \begin{aligned} \operatorname{Range}(\boldsymbol{A}) &=\left\{\boldsymbol{y} \in \mathbb{C}^{m}: \boldsymbol{y}=\boldsymbol{A} \boldsymbol{x}, \quad \boldsymbol{x} \in \mathbb{C}^{n}\right\} \\ &=\left\{\boldsymbol{y} \in \mathbb{C}^{m}: \boldsymbol{y}=\sum_{i=1}^{r} \sigma_{i} \boldsymbol{u}_{i} \boldsymbol{v}_{i}^{\mathrm{H}} \boldsymbol{x}, \quad \boldsymbol{x} \in \mathbb{C}^{n}\right\} \\ &=\left\{\boldsymbol{y} \in \mathbb{C}^{m}: \boldsymbol{y}=\sum_{i=1}^{r} \boldsymbol{u}_{i}\left(\sigma_{i} \boldsymbol{v}_{i}^{\mathbf{H}} \boldsymbol{x}\right), \quad \boldsymbol{x} \in \mathbb{C}^{n}\right\} \\ &=\left\{\boldsymbol{y} \in \mathbb{C}^{m}: \boldsymbol{y}=\sum_{i=1}^{r} \alpha_{i} \boldsymbol{u}_{i}, \quad \alpha_{i}=\sigma_{i} \boldsymbol{v}_{i}^{\mathrm{H}} \boldsymbol{x} \in C\right\} \\ &=\operatorname{Span}\left\{\boldsymbol{u}_{1}, \cdots, \boldsymbol{u}_{r}\right\} \end{aligned} Range(A)={y∈Cm:y=Ax,x∈Cn}={y∈Cm:y=i=1∑rσiuiviHx,x∈Cn}={y∈Cm:y=i=1∑rui(σiviHx),x∈Cn}={y∈Cm:y=i=1∑rαiui,αi=σiviHx∈C}=Span{u1,⋯,ur}
由于值域与列空间的等价关系: Col ( A ) = Range ( A ) = Span { u 1 , ⋯ , u r } \operatorname{Col}(\boldsymbol{A})=\operatorname{Range}(\boldsymbol{A})=\operatorname{Span}\left\{\boldsymbol{u}_{1}, \cdots, \boldsymbol{u}_{r}\right\} Col(A)=Range(A)=Span{u1,⋯,ur}
可知, u 1 , ⋯ , u r \boldsymbol{u}_{1}, \cdots, \boldsymbol{u}_{r} u1,⋯,ur是 Col ( A ) \operatorname{Col}(\boldsymbol{A}) Col(A)的一组基。
正交基: 当一组基两两互相正交, 被称为正交基。 标准正交基: 当一组正交基,每个基的模为1时,被称为标准正交基。
由以上定义及SVD分解的性质可知: u 1 , ⋯ , u r \boldsymbol{u}_{1}, \cdots, \boldsymbol{u}_{r} u1,⋯,ur归一化后是一组标准正交基。
盲矩阵求解的子空间法介绍完概念之后, 我们通过子空间的方法来求解盲矩阵问题:
现有以下方程: X = A S \boldsymbol{X}=\boldsymbol{A} \boldsymbol{S} X=AS
X \mathbf{X} X是我们的观测数据, 我们希望基于此反推出未知的 A \mathbf{A} A与 S \mathbf{S} S。现假设两者都是满秩。
显然,我们有: Col ( X ) = Col ( A ) \operatorname{Col}(\mathbf{X}) = \operatorname{Col}(\mathbf{A}) Col(X)=Col(A).
证明: 第n列, X n = A × S n = Σ S i , n A i \mathbf{X}_n = \mathbf{A} \times \mathbf{S}_n =\Sigma \mathbf{S}_{i,n}\mathbf{A}_i Xn=A×Sn=ΣSi,nAi。 所以 X \mathbf{X} X的每一列都是 A \mathbf{A} A的列向量的线性组合,即,位于 A A A的列空间内。
令 X \mathbf{X} X的截尾奇异值分解(truncated SVD)为: X = U ^ Σ ^ V ^ H \boldsymbol{X}=\hat{\boldsymbol{U}} \hat{\boldsymbol{\Sigma}} \hat{\boldsymbol{V}}^{\mathbf{H}} X=U^Σ^V^H
由上面分析的奇异值分解与列空间的关系,可知:
Col ( U ^ ) = Col ( A ) \operatorname{Col}(\hat{\mathbf{U}}) = \operatorname{Col}(\mathbf{A}) Col(U^)=Col(A).
而张成同一个子空间的两个矩阵,可以有如下的表示:
U ^ = A T \hat{\boldsymbol{U}}=\boldsymbol{A} \boldsymbol{T} U^=AT
T \mathbf{T} T是一个非奇异矩阵。 这个式子很容易理解: 因为 U ^ \hat{\mathbf{U}} U^和 A \mathbf{A} A是在同一个列空间内, 也就是说, 可以通过对 A \mathbf{A} A的列进行线性变换,得到 U ^ \hat{\mathbf{U}} U^中的每一列。 那么用线性代数的写法就是上述的式子了。 而因为 U ^ \hat{\mathbf{U}} U^满秩,又假设了 A \mathbf{A} A满秩, 那么 T \mathbf{T} T也必然就是一个满秩的非奇异矩阵了。
根据以上推理, 盲矩阵估计问题可以这样的步骤下求解:
最简单的, 如果
A
\mathbf{A}
A已知, 那么
T
=
A
−
1
U
^
T=\mathbf{A}^{-1}\hat{\mathbf{U}}
T=A−1U^, 那么最后一步的
S
=
A
−
1
U
^
U
T
^
X
=
A
−
1
X
.
\mathbf{S}=\mathbf{A}^{-1}\hat{\mathbf{U}}\hat{\mathbf{U}^T}\mathbf{X}=\mathbf{A}^{-1}\mathbf{X}.
S=A−1U^UT^X=A−1X. 也就是最正常的解。
但现在的问题在于, 如果 A \mathbf{A} A未知呢?
通信中的盲矩阵方程求解通信问题中, A \mathbf{A} A矩阵虽然未知, 但有其特定的结构, 因此可以解出答案。 这里没有一般性,简单截取了张贤达书中的一个例子:
利用
A
\mathbf{A}
A的特殊结构,就能求解这个问题了。
本文的核心是理解子空间与列空间的概念,并大概了解其如何应用。