矩阵的常见运算
一天的成本会算了,一周呢?从批量算账走进矩阵乘法、转置与运算顺序。
一天会算了,一周怎么办?
上一课,你已经替奶茶店发明了一张配方表 W。每一行是一杯饮品,每一列是一种原料。把今天的原料单价 x 放进去,Wx 就会吐出三杯饮品的成本。
可老板又递来一张纸:「下周每天的价格都不一样,能不能把整周的成本一次算出来?」最小方案很直接:每天各算一次 Wx,再把答案排在一起。这能用,但七天要写七遍同样的动作。
矩阵乘矩阵:每一列都是熟悉的 Wx
先只看两天。我们沿用原来的配方,第一天价格是 [1,2,1,0],第二天是 [2,1,2,1]。把它们作为两列,X 就是一张 4×2 的价格表。
| 饮品 | 茶 | 奶 | 糖 | 珍珠 |
|---|---|---|---|---|
| 珍珠奶茶 | 2 | 1 | 0 | 3 |
| 奶霸布丁 | 0 | 4 | 1 | 2 |
| 古早甜茶 | 1 | 0 | 3 | 1 |
| 原料 | 第一天 | 第二天 |
|---|---|---|
| 茶 | 1 | 2 |
| 奶 | 2 | 1 |
| 糖 | 1 | 2 |
| 珍珠 | 0 | 1 |
Y 的第 j 列 = W × X 的第 j 列
于是第一列成本是 [4,9,4],第二列是 [8,8,9]。合起来,Y 的每行是一款饮品,每列是一天。任意一个格子 Yᵢⱼ,都来自W 的第 i 行与 X 的第 j 列做点积。所谓「行乘列」,原来就是老朋友点积。
中间两个 n 必须相等,它们对应要配对相乘的项数;结果保留外侧的 m 行与 k 列。不匹配的形状不是算得不准,而是这个矩阵乘法根本没有定义。
转置不是乘法,逐元素乘法也不是
老板习惯「一天一行」的报表,我们刚才却把一天放在一列。怎么办?把行和列交换,得到转置 Xᵀ:原来的 4×2 变成 2×4,格子 Xᵢⱼ 搬到 Xᵀⱼᵢ。数字没改,排列和轴的角色变了。
另一个容易认错的亲戚是逐元素乘法 A⊙B:同样大小的两张表,对应格子各自相乘,不求和,结果仍是同样的形状。它适合给每个位置单独打折、加门控或遮罩。
| 动作 | 在做什么 | 形状示例 |
|---|---|---|
| 矩阵乘法 | 行与列点积,重新组合信息 | (3×4)(4×2) → 3×2 |
| 转置 | 交换行轴与列轴 | 4×2 → 2×4 |
| 逐元素乘法 | 对应位置分别相乘 | (3×4)⊙(3×4) → 3×4 |
这里的逐元素乘法先要求形状相同。实际框架还允许某些形状通过广播对齐,第 06 课张量会解释这个补充规则。
先后顺序,真的会改变结果
给图片先旋转再横向拉宽,与先横向拉宽再旋转,最后的形状可能不同。计算也如此:B(Ax)=(BA)x,最靠近 x 的矩阵先作用。
| 顺序 | 中间结果 | 最终结果 |
|---|---|---|
| 先 A 后 B:BAx | [2,0] | [0,2] |
| 先 B 后 A:ABx | [0,1] | [0,1] |
所以通常 AB≠BA,有时交换顺序后连形状都不匹配。不过结合方式可以变:(AB)C=A(BC),只要各次乘法有定义。下一课会把「矩阵代表动作」这个几何视角展开。
动手算:同一个动作,重复执行
把第二天的珍珠价格调高,看三杯饮品的成本分别增加多少。哪款配方用珍珠最多,哪款成本就对这个价格最敏感。再换成错误形状,看看为什么无法开始算。
神经网络处理一批输入时,也在重复这个逻辑:同一组权重,对多个向量做同一种变换。到了注意力章节,QKᵀ 则会把一组查询与一组键的点积排成整张匹配表。先理解这里的行、列与配对,后面就不会只看到一串陌生符号。
总结:从一列,到一整张表
矩阵乘矩阵不是新魔法,而是把矩阵乘向量成批执行。先看形状,再看每一行和每一列怎样配对,最后看动作的先后顺序。
💡 用大白话梳理:这一课的核心直觉
- 矩阵乘法:内部维度匹配,结果保留外部维度。
- 转置:交换行列;逐元素乘法:同位置相乘,概念不同。
- BAx 表示先做 A 再做 B;通常不能把 BA 改成 AB。
- 下一课换成几何视角:这些乘法怎样搬动整个空间?
学习小测验
动动脑筋:核心直觉小测验(选出你的答案后点击「提交」,即可查看生动通俗的详细解析)
05 什么是线性变换
给矩阵换一副几何眼镜,看整个空间如何旋转、拉伸、投影与平移。