上一章我们说了,所有的数据进入AI系统后都会变成向量。一张猫的照片变成一个几万维的向量,一段文字变成一个几百维的向量。
但你有没有想过一个问题:如果一张图片有几万个像素,那一个训练集里可能有几百万张图片------这就是几百万个向量。一个一个地处理,得算到什么时候?
我们需要一个更大的"容器",能把一堆向量同时装进去,一次性完成运算。
这个容器叫矩阵。
矩阵真正的威力在于:它可以一次把一整批向量同时变换。如果你把一百万张图片的向量并排放成一个矩阵,那么"矩阵乘矩阵"这一步,就同时完成了一百万次"矩阵乘向量"。GPU擅长做的,正是这种大规模并行变换。
一个表格,但不止是表格
矩阵长什么样?就是一个矩形的数字表格,有行、有列。
比如:
[ 1 2 3 ]
[ 4 5 6 ]
这是一个2行3列的矩阵,通常写成 2×3 矩阵("2乘3",读作"二乘三")。第一个数字是行数,第二个数字是列数。
这个描述听起来跟Excel表格没什么区别。但矩阵在数学里有两个特性,让它远远超出了"表格"的范畴。
第一,矩阵是有方向的。 2×3 和 3×2 是完全不同的两个矩阵。就像长方形横着放和竖着放,你不能把它们混为一谈。矩阵的维度搭配(行数和列数)决定了它能跟谁相乘------这就像拼图的接口一样,必须匹配才能咬合。
第二,矩阵代表一种"变换"。 这是最关键的一点。一个矩阵不仅仅是一堆数字,它背后藏着一个"操作指令":把输入空间中的每一个点,按照某种规则映射到输出空间的另一个点。你可以把一个矩阵理解为一台"变形机器"------你喂给它一个向量(或者一堆向量),它就按照它内置的规则,把它们扭转、拉伸、压扁、旋转,再吐出来。

矩阵乘向量:空间在"变形"
这是今天最重要的一个操作:矩阵乘以向量。
我们来看一个具体的例子。有一个 2×2 的矩阵 A 和一个 2 维向量 v:
A = [ 1 1 ], v = [ 1 ]
[ 0 1 ] [ 1 ]
规则是这样的:把矩阵的每一行分别跟向量做点积。
第一行 (1, 1) 和 v 点积:1×1 + 1×1 = 2
第二行 (0, 1) 和 v 点积:0×1 + 1×1 = 1
结果是一个新的向量 2, 1(通常竖着写)。
你看这个变换做了什么?原来 v = (1, 1) 在平面上的位置是向右上角45度。经过变换后它变成了 (2, 1)------水平方向被拉长了,但垂直高度没变。更妙的是,这个矩阵把整个二维空间都"剪切"了:原来竖直向上的方向 (0, 1) 被映射到了 (1, 1)------它被推倒了。一个正方形,被这个矩阵一推,变成了一个歪斜的平行四边形。面积没变,但形状被"揉"了一下。
(细心的读者会发现:这个矩阵的第一列 (1, 0) 是原 x 轴方向被变换后的落点------它没动;第二列 (1, 1) 是原 y 轴方向的落点------它被推倒了。矩阵的每一列,都在告诉你一个基向量被搬到了哪里。一旦你学会"读列",看矩阵的眼光就彻底变了。)
矩阵乘向量的几何本质就是:对输入向量做了一次空间变换。 拉伸、旋转、翻转、剪切------不同的矩阵做不同的事。AI里的神经网络,每一层都在做无数个这样的变换。

为什么神经网络里全是矩阵乘法
现在我们可以揭开一个大秘密了。
你在新闻里看到"神经网络有1750亿个参数"------这些参数以什么形式存在?绝大部分以矩阵的形式存在。每一层神经元之间的连接权重,就是一个巨大的矩阵。
输入进来是一个向量(比如一张图片的像素值)。它先跟第一层的权重矩阵相乘------这相当于把数据"扭曲"一次。然后经过激活函数(加一点非线性),再跟第二层的权重矩阵相乘------再扭曲一次。如此反复几十次、几百次。每一次"扭曲"都在逐步把原始数据变换成更容易分类或生成的形态。
所以神经网络的学习过程,本质上就是:反复调整这些矩阵里的数字,直到它们的联合变换能把输入向量准确地映射到正确的输出向量。 而"怎么调整"这件事,正是下一章要讲的微积分的用武之地------它告诉我们每个数字该往哪个方向调、调多少。
这也是为什么训练神经网络需要海量的算力------因为乘法的规模太大了。假设一个隐藏层有4096个神经元,上一层给它送来4096个输入,那这一层的权重矩阵就是 4096×4096,包含了超过1600万个参数。你乘一次就是1600万次乘法运算。而这样的层,在GPT-4里可能有上百层。
你明白了为什么需要GPU了吧?GPU就是专门为这种"大矩阵乘法"设计的高速计算器。
矩阵乘矩阵:两次变换合在一起
如果矩阵乘向量是一次变换,那矩阵乘矩阵就是"两次变换的复合"。
假设你有一个变换 A(比如剪切),和一个变换 B(比如旋转)。你先把向量 v 用 A 剪切,得到 Av;再把 Av 用 B 旋转,得到 B(Av)。
数学上有一个巧妙的性质:B(Av) = (BA)v。也就是说,你可以先算出 BA 这个新矩阵,然后用它直接一步到位地作用于 v。BA 就代表了"先剪切再旋转"这个组合动作。

这个性质在AI里特别实用。虽然我们很少真的去把多层网络的矩阵"合并"成一个------因为那样会太庞大------但理解这个"复合"的概念能帮你明白一件事:深层网络之所以强大,是因为它把无数个小的、简单的变换(拉伸、压扁、扭曲)串联起来,最终形成一个极其复杂的变换。单个变换只能做一点点调整,但几十个变换组合在一起,就能完成从"像素点阵"到"猫的标签"这种不可思议的飞跃。
别纠结于"解方程"那一套
我知道,有些读者听到"矩阵"两个字,脑子里冒出来的是"线性方程组""高斯消元""逆矩阵""行列式"。这些的确是线性代数的重要内容,但它们对这个系列的目标来说,基本是干扰项。
我们在AI语境里需要矩阵做什么?用它来批量地变换向量。 仅此而已。
你不必会手算矩阵乘法,更不必会求逆矩阵或解行列式。你只需要在脑子里种下这个画面:矩阵是一套"变形指令",把空间里的点搬来搬去。而深度学习,就是找到了上万套这样的"变形指令",把它们串在一起,刚好能把数据变成答案。
如果在阅读后面的文章时,你看到一个公式里出现了矩阵符号,你只需要对自己说:"哦,这里在处理一批数据点的空间变换。"这就够了。
把三块砖拼起来
我们花了三章,搭了三块地基。
函数是"规则"------输入到输出的对应关系。向量是"材料"------所有数据的通用格式。矩阵是"容器和工具"------批量处理这些材料的变换器。
合在一起就是:AI用矩阵作为工具,在向量组成的世界里,找到那个能把输入映射到输出的函数。
这三块砖,是整个系列的底盘。后面所有的东西------线性回归、神经网络、卷积、注意力------全都建立在这个底盘上。你可能会遇到更复杂的词汇,但它们的底层不会超出"函数、向量、矩阵"这个三角结构。
下一章,我们要在这三块砖旁边加上第四个元素:变化。以及描述变化的语言------微积分。
参考文献
-
3Blue1Brown. (2016). "Linear transformations and matrices | Chapter 3, Essence of Linear Algebra". YouTube.
- 推荐理由:这一期视频可能是"线性变换"这个概念的终极可视化演示------用动画把一个正方形网格在矩阵作用下变形,比任何文字描述都直观。强烈建议打开视频对照着看,你会看到上面那些"拉伸""旋转"的描述在屏幕上活过来。
-
Strang, G. (2016). Introduction to Linear Algebra (5th ed.). Wellesley-Cambridge Press. 第2章"Solving Linear Equations" 和第8章"Linear Transformations"。
- 推荐理由:Strang的教材把"线性变换"作为理解矩阵的核心视角------这正是我们需要的。第2章也从矩阵×向量讲起,跟本篇逻辑一致。你可以只看标题和图示,不用做习题。
-
Nielsen, M. (2015). Neural Networks and Deep Learning. 第1章"Using neural nets to recognize handwritten digits"。在线免费书籍:http://neuralnetworksanddeeplearning.com/
- 推荐理由:这本书是深度学习入门的经典之作。第1章里,作者用一个识别手写数字的神经网络展示了"权重矩阵"如何工作。你会看到我们讲的"矩阵变换"在这里变成了真正的代码,产生了真实的结果。极适合作为本篇的配套阅读。