矩阵乘法核心思想(1):列空间

矩阵乘法核心思想(1):列空间

初次接触矩阵乘法时,是否感觉与矩阵加法相比,矩阵乘法不仅怪异而且枯燥繁复?这不能怪你,因为这种方法适合电脑计算,却不适合人脑理解。以矩阵-向量乘法为例,大部分教科书是这样计算的:

\begin{bmatrix} 2 & 3 \\ 2 & 4 \\3 & 7\end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 2x_1+3x_2 \\ 2x_1+4x_2 \\ 3x_1+7x_2\end{bmatrix}

这种以行为主内积运算(也称点积),将左矩阵( m\times n )第1行和右矩阵( n\times p )第1列(上例是向量,可视为1列的矩阵, p=1 )进行点积,进行 n 次乘法和 n-1 次加法才得到结果矩阵的第1行第1列元素 a_{11}(2,3)\cdot(x_1,x_2)=2x_1+3x_2 ,这种计算方式颗粒度太细,适合机器运算,却不利于理解;我们应该拥有更高维度更清晰的视角 —— 列向量

\begin{bmatrix} 2 & 3 \\ 2 & 4 \\3 & 7\end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = x_1\begin{bmatrix} 2 \\ 2 \\ 3\end{bmatrix}+x_2\begin{bmatrix} 3 \\ 4 \\ 7\end{bmatrix}

以列为主的视角将矩阵乘法视为矩阵的列向量进行线性组合(Linear Combination)所谓线性组合,即线性+组合,线性是指向量乘以一个标量,沿着向量的方向缩放,方向不变;组合是把多个向量加起来。列视角是线性代数非常核心的基础概念,基础并不是说它简单,而是说它像地基一样重要,在学习任何线代知识前,应该先要打好的地基。

矩阵乘法-列视角:列向量对矩阵进行线性组合,得到结果矩阵中的一列
矩阵乘法-列视角:右矩阵拆成3个向量,每个向量对左矩阵进行线性组合,得到结果矩阵中的一列,合在一起得到结果矩阵

我们知道:两条相交的直线确定一个平面。若x_1,x_2 为任意实数, x_1\begin{bmatrix} 2 \\ 2 \\ 3\end{bmatrix} + x_2\begin{bmatrix} 3 \\ 4 \\ 7\end{bmatrix} 能组合出一个2维平面空间内的任何向量,该平面是3维空间 R^{3} 的一个子集,是 R^{3} 的一个子空间。对于该平面内的任意向量 b=\begin{bmatrix} b_1 \\ b_2 \\ b_3\end{bmatrix}, 一定存在(x_1,x_2) ,能使得 x_1\begin{bmatrix} 2 \\ 2 \\ 3\end{bmatrix}+x_2\begin{bmatrix} 3 \\ 4 \\ 7\end{bmatrix} = b ,因此,我们称:该平面/子空间是这两个列向量所张成(Span)的列空间(Column Space),这两个向量是列空间的(Basis),通过对基的线性组合,可以得到空间内的任意向量,难怪有人说线代是"搞基"。

基的向量选择可以很任性,只要不平行就行;但我们还是要尽量选择彼此垂直的,称为正交基(Orthogonal basis),正交向量间线性无关;更进一步:把正交基的长度标准化为1的单位向量最佳,于是得到了标准正交基(Orthonormal basis)。反之,若两个向量平行,其中任一向量是另一向量的若干倍,两者在一条直线上,无法张成一个平面,故平行向量不能作为基。

列空间由矩阵 A 的列向量线性组合填充而成(Span),记为 C(A)

线性代数的初心和核心之一是求解 Ax=bAm\times n 的矩阵,以列向量表示: [a_1,\cdots ,a_n]xb 分别是 n\times1m\times1 的向量, b 位于 A 的列空间时, x 一定存在解 (x_1,x_2)b 表达为 A 的列向量线性组合 x_1a_1+x_2a_2 (2维示意图)。

u,v通过线性组合张成的空间

考虑 m\times n 的矩阵 A ,它的列为 \vec{a_1},\cdot\cdot\cdot,\vec{a_n} ,列空间:

C(A)=\left\{ \vec b | \vec b=A\vec x, \vec x \in \mathbb R^{n}\right\}

=\left\{ \vec b | \vec b=x_1\vec {a_1}+\cdot\cdot\cdot+x_n\vec {a_n}, \vec x \in \mathbb R^{n}\right\}

= Span({\left\{\vec {a_1},\cdot\cdot\cdot,\vec {a_n}\right\}})

\subset \mathbb R^{m}

b 位于 A 的列空间之外,变成了线性回归问题列向量无论进行怎样的线性组合都不可能组合出平面外的 b ,此题无解,于是,我们不得不退而求其次,找一个近似解 \hat x ,使A\hat x尽量靠近 b ,但必须在平面(列空间)内,显然,b 在平面内的投影是平面内离 b 最近的那个点,具体可参考Normal Equation的向量投影解法与几何和直觉解释

P.S. 机器学习场景中, A 的行数和列数分别对应样本数和特征(字段)数量,样本数往往远大于特征量(图像问题相反),比如1000个样本10个特征,小学数学多元一次方程组的知识告诉我们:1000个方程只有10个变量是无解的,这种情况被称为超定(Overdetermined)。

本质上,机器学习算法提供的不是数学意义上准确解,而是个实用主义的近似解,毕竟,比无解要好很多。

顺便提一句,当你拿起一本线性代数书籍,如果第一章是行列式,建议立刻马上放下它,因为它会加大你理解矩阵的难度,让你感到线代面目可憎,浪费你的宝贵时间。虽然这与历史发展的时间顺序是一致的,先有子(行列式),后有母(矩阵),英文矩阵为啥叫Matrix,因为有母体的意思,自行脑补下电影黑客帝国Matrix深刻的双关含义。行列式的几何意义是向量围成空间的面积或体积,有助于判断是否存在线性依赖(行列式等于0),但把行列式放在第一章显然德不配位,毕竟已经不是300年前了。

对矩阵列向量进行线性组合得到列空间的思想,是线代的最重要的基础,应在学习任何其他知识前,先要打好的地基。当年受老大哥的影响,如此重要的内容至今仍在教科书中缺席,而把行列式放在第一章,本末倒置,误人子弟几代人,导致大部分工程科研人员的线代知识架构在松软的沙滩上。线代作为数据时代像加减乘除那样重要的基础,基础的基础若不存在,更遑论人工智能?所有行业都在进行数字化转型,未来以比特为基础的虚拟世界与以原子为基础的现实世界同样重要,并且相互交融,数字化孪生(Digital Twin)蓬勃发展。矩阵和张量已无处不在,如果说以行列式为开篇的线代教材误国,恐不为过吧?

在理解了列空间、零空间、特征向量和奇异向量后,就可以开挂各种强大的应用:最小二乘法、傅立叶变换、LASSO、PCA和随机梯度下降(SGD)等。

*本文主要思想来自Gilbert Strange的18.06。下一篇将讨论以行为主的视角和行空间。

相关阅读:

编辑于 2022-05-15 06:27