矩阵
线性代数补充讲义:矩阵
Last updated on
矩阵可以先理解成“一个按行、按列排列的数表”,但如果只把它看成数表,会错过矩阵最重要的意义。在线性代数里,矩阵真正重要,是因为它可以同时表示:
- 一组数据;
- 一组线性方程;
- 一组向量;
- 一个线性变换;
- 从一个坐标系到另一个坐标系的规则;
- 多个线性变换的复合。
而“矩阵乘法为什么要那样定义”,最深刻的理解恰恰来自你问的两个视角:行视角和列视角。
一、矩阵到底是什么?
例如
这是一个 矩阵。
它有 2 行、3 列。
一般写成
其中 表示:
例如上面
因为 6 位于第 2 行、第 3 列。
但这只是矩阵的“外观”。
更重要的问题是:
这一堆数为什么值得专门研究?
答案是:
因为大量复杂问题,本质上都可以归结为“多个量之间的线性关系”,而矩阵正是描述这些线性关系最自然的工具。
二、为什么要研究矩阵?
先从一个非常普通的问题开始。
假设有三个未知量
满足
我们可以把系数单独提出来:
这就是矩阵。
于是整个方程组可以压缩成
其中
这时矩阵已经不只是“数表”,而是在表示:
输入 ,经过某种线性规则以后,得到两个输出。
也就是说,
矩阵 就代表这个变换。
三、矩阵最核心的理解:一个线性变换
假设
输入向量
那么
也就是说矩阵定义了一个函数:
所以你可以把矩阵理解成:
一种特殊函数的编码方式。
这个函数满足线性性质:
以及
这就是“线性变换”。
所以线性代数里研究矩阵,本质上是在研究:
线性变换如何表示、如何组合、如何求逆、如何改变坐标、如何分析其结构。
四、为什么矩阵有“行”和“列”?
这是理解矩阵最关键的地方之一。
对于
你既可以按行看:
其中
也可以按列看:
其中
这两种视角对应着两种完全不同但等价的理解。
五、列视角:矩阵的列表示“基向量被送到哪里”
这是理解矩阵最重要的观点之一。
假设
它的两列是
对于
有
也就是
所以:
矩阵乘向量,本质上就是用向量中的坐标,对矩阵的列做线性组合。
这是列视角最核心的一句话。
六、为什么矩阵的列特别重要?
因为标准基向量是
任意向量都可以写成
因为线性变换满足线性性,所以
而
恰好就是矩阵 的第一列,
恰好就是第二列。
所以
这意味着:
矩阵的第 列,就是第 个标准基向量经过这个线性变换以后到达的位置。
这是矩阵的几何本质。
七、举一个特别直观的例子
考虑
第一列是
第二列是
因此
被变成
而
被变成
所以这个矩阵代表:
- 方向放大 2 倍;
- 方向放大 3 倍。
即
从这个角度,你甚至可以说:
一个 矩阵,就是告诉你原来的两个坐标轴基向量应该变到哪里去。
知道基向量去哪了,所有向量去哪也就知道了。
八、行视角:矩阵的每一行表示“一个测量规则”
现在换一个视角。
仍然考虑
以及
那么
第一项
实际上是第一行
和向量
的点积。
第二项
是第二行和输入向量的点积。
所以
因此行视角是:
矩阵的每一行,都定义了一个对输入向量的“线性测量”。
比如
作用在
上,得到
相当于:
“我要按照 的权重,把 混合成一个数。”
九、行视角和列视角其实是在描述同一件事
对于
从列看
也就是:
输入坐标决定如何组合矩阵的列。
从行看
也就是:
每一行和输入做点积,得到一个输出坐标。
所以一个矩阵乘向量,可以同时看成:
也可以看成
二者完全等价。
十、矩阵乘法为什么定义成“行乘列”?
现在来到核心。
假设
和
那么
是一个
矩阵。
大家最开始学的是:
左矩阵的行乘右矩阵的列。
即
但如果只是背这个公式,会觉得非常奇怪。
为什么不能逐元素乘?
为什么一定“行乘列”?
真正原因是:
矩阵乘法必须表示线性变换的复合。
十一、矩阵乘法本质上是“变换的复合”
假设
然后
一个向量 先经过 :
再经过 :
我们希望存在一个矩阵直接完成整个过程:
于是必须要求
所以
表示:
先做 ,再做 。
注意顺序是从右到左。
十二、用列视角理解矩阵乘法
这是最重要的矩阵乘法视角之一。
设
那么
等于
也就是说:
的每一列,就是 作用在 的对应列上。
公式是
所以你可以把 想成:
把 的每一列都送进变换 。
十三、列视角还能得到另一个重要结论
假设
而 的第 列为
那么
因此
的每一列,都是 的列向量的线性组合。
所以:
更准确地说:
这个性质以后学秩的时候极其重要。
十四、从行视角理解矩阵乘法
同样有
我们也可以从 的行出发。
设 的第 行是
那么
的第 行等于
也就是说:
的每一行,是 的各行的线性组合。
例如如果
那么
因此
这和刚才的列结论是对称的:
十五、“行乘列”究竟是什么意思?
取
那么
例如左上角元素:
因此
右上角:
所以
最终
但这里不要把“行乘列”理解成一种人为规定的技巧。
它实际上来自:
作用在
之上。
十六、一个特别适合深刻理解的三层图景
以后看到
你可以同时从三个层面理解。
第一层:计算层面
就是
按行乘列计算。
第二层:列空间层面
如果
那么
所以:
输入 提供权重,矩阵的列提供“材料”。
第三层:几何变换层面
矩阵规定标准基
分别被送到
因为任意向量都是基向量的线性组合,所以整个空间如何变化也就完全确定了。
这其实是最深层的理解。
十七、为什么 矩阵对应 ?
如果
那么它有 列。
输入向量必须有 个分量:
因为要用这 个数字作为权重去组合 个列向量。
而每个列向量都有 个分量,因此输出有 个分量:
所以
可以记成一句口诀:
列数决定输入维度,行数决定输出维度。
十八、为什么矩阵乘法要求“内维相等”?
例如
为什么中间两个 必须一样?
因为
而
输出一个 维向量,而 恰好接受一个 维向量。
所以可以接起来:
于是
因此
这并不是一个需要死背的尺寸规则,它来自“函数复合的输入输出必须匹配”。
十九、为什么一般 ?
这也是矩阵乘法最容易困惑的地方。
如果矩阵表示变换,那么
表示:
先 ,再 。
而
表示:
先 ,再 。
很多变换顺序不同,结果当然不同。
例如:
- 先旋转;
- 再沿 轴拉伸。
和
- 先沿 轴拉伸;
- 再旋转。
一般结果完全不同。
所以
其实非常自然。
二十、行和列还对应“方程”和“变量”
对于线性方程组
假设
那么:
从行看
每一行对应一个方程:
所以:
行 = 约束。
从列看
设
那么方程可以写成
于是问题变成:
能不能用矩阵的列向量,通过某种线性组合得到 ?
所以:
列 = 生成空间的方向。
这就是为什么线性方程组、列空间、秩,本质上都是同一件事的不同表达。
二十一、一个非常重要的“行列双重视角”
对于
可以同时问两个问题。
行视角
相当于:
找一个 ,同时满足所有线性约束。
列视角
相当于:
找一组系数,使矩阵的列向量线性组合成 。
这两个问题看起来不同,实际上完全是同一个方程。
二十二、矩阵还可以看成“坐标系统之间的翻译器”
假设有一组新基
把它们放进矩阵:
如果一个向量在新基下坐标是
那么标准坐标就是
所以矩阵可以负责:
把一套坐标表示转换成另一套坐标表示。
以后学相似矩阵
其实本质就是:
同一个线性变换,在不同坐标系下的不同矩阵表达。
所以矩阵不是变换本身,严格来说:
矩阵是线性变换在某组基下的坐标表示。
这个观点到了特征值、相似对角化时非常重要。
二十三、为什么矩阵在数学和现实里这么普遍?
因为很多关系在局部、近似或者本质上都是线性的。
例如:
1. 图像
一张灰度图可以表示为矩阵:
每个元素表示像素。
2. 神经网络
一层神经网络经常有
其中 就是权重矩阵。
3. 计算机图形学
旋转、缩放、投影都可以由矩阵表示。
比如二维旋转:
4. 数据科学
假设有 个样本,每个样本有 个特征:
那么通常:
- 一行 = 一个样本;
- 一列 = 一个特征。
5. 微分方程
很多系统最终可以写成
于是矩阵 决定系统怎样演化。
6. 马尔可夫链
状态转移可以写成
矩阵 描述状态之间如何转移。
二十四、再给你一个非常漂亮的矩阵乘法分解
设
和
把 按列写:
把 按行写:
那么
这里每一个
都是一个秩 1 矩阵。
比如
所以矩阵乘法还可以理解成:
若干个“列向量 × 行向量”的外积叠加。
这个视角以后在:
- 秩;
- 奇异值分解;
- 低秩近似;
- 机器学习;
里极其重要。
二十五、把矩阵的四种理解统一起来
你以后看到矩阵
最好脑子里同时存在下面四层理解。
第一层:数表
这是最表面的。
第二层:方程系数
每一行代表一个方程。
第三层:向量集合
每一列是一个向量。
第四层:线性变换
这是最深刻、最统一的理解。
二十六、最值得记住的“行列哲学”
可以把整个矩阵思想压缩成几句话。
行是什么?
行是在“读取输入”。
对于
每一行都和 做点积。
所以:
列是什么?
列是在“构造输出”。
所以:
矩阵乘向量是什么?
同时也是
矩阵乘矩阵是什么?
同时:
以及
二十七、最后给你一个整体心智模型
我建议以后不要把矩阵想成一张死板的数字表,而想成一个“机器”。
假设
那么:
输入 n 个坐标
│
▼
┌───────────┐
│ 矩阵 A │
│ 线性变换器 │
└───────────┘
│
▼
输出 m 个坐标从列视角看:
输入坐标
x₁, x₂, ..., xₙ
│
▼
给矩阵各列分配权重
│
▼
x₁a₁ + x₂a₂ + ... + xₙaₙ
│
▼
输出向量从行视角看:
输入向量 x
│
├── 第1行与 x 点积 ──→ y₁
│
├── 第2行与 x 点积 ──→ y₂
│
├── ...
│
└── 第m行与 x 点积 ──→ yₘ所以真正掌握矩阵以后,你看到
脑子里不应该只出现“行乘列”。
而应该同时看到:
而看到
则应该想到:
这基本就是理解整个线性代数的入口。