0.2 向量与矩阵
怎么把「一只猫」告诉计算机?
计算机是个特别轴的家伙:它只会算数。你没法把一只毛茸茸的猫塞进 CPU,也没法把「开心」这种感觉输进显卡。
那大模型是怎么处理文字、图片、声音的?答案只有一个——先把万物翻译成一串数字。
比如描述一名同学,可以用两个数字:(每天学习时间,考试分数)。描述一只猫,可以用更多数字:(体重,年龄,毛长,粘人程度 ,……)。这种排好队的一串数字,就叫向量。
向量最妙的地方是:它可以被画出来。两个数字的向量就是平面上的一个点(或者从原点出发的一支箭头);三个数字就是立体空间中的一个点。数字更多画不出来了,但道理不变——每个向量都是某个「空间」里的一个位置。
于是「翻译成向量」这件事就有了魔力:
- 两只猫的向量会离得很近,猫和拖拉机的向量离得很远——「相似」变成了「距离近」,可以用算术算出来;
- 大模型里的每个词也是一个向量(第 1 章会让你亲眼看到),「国王」和「王后」是近邻。
矩阵:空间的变形器
向量是「点」,那矩阵是什么?教科书会说「按行列排好的一表数字」——没错但没用。真正的直觉是:
矩阵是一台「空间变形器」:向量进去,被旋转、拉伸、翻转之后的新向量出来。
亲手试试。下面这台变形器由 4 个数字(a、b、c、d)控制:
推荐的玩法(顺序玩完大约两分钟):
- 点「旋转 30°」——整张网格像 转盘一样转动,蓝色箭头 v 被转到紫色虚线 Av 的位置;
- 点「放大 1.5 倍」「水平剪切」——同一个 v,不同矩阵给出完全不同的 Av;
- 拖动蓝色箭头 v 到处跑——注意 Av 永远「联动」,因为变形规则(矩阵)没变;
- 最后点「压扁成一条线」——看 det(A) 变成 0,整个平面被拍扁,警告出现。
第 4 步值得多看一眼:det(A) 这个数字(行列式)衡量「面积被放大了几倍」。det = 0 意味着二维的平面被压成了一维的线——不同的输入被挤到同一个点上,再也分不开了,信息就此丢失。
这跟大模型有什么关系?
关系大到超乎想象:神经网络每一层的核心运算,就是「矩阵 × 向量」。
输入的词变成向量,进入第一层,被一个矩阵变形;结果进入第二层,被另一个矩阵变形……GPT 回答你问题时的「思考」,本质上是让向量穿过几十层变形器,每一层的矩阵里的数字,就是训练调出来的参数。所谓「7B 模型」,就是这些矩阵里一共有 70 亿个数字。
实验里的空间是 2 维的,看得见摸得着;大模型里的向量动辄几千维,谁也没法「看见」几千维的旋转。好在数学规则完全一样,2 维的直觉基本都能平移过去。另一个更重要的偏差:连乘再多的矩阵,效果仍等价于一次线性变形——只靠矩阵,模型永远学不会「弯曲」的规律。真正的神经网络在每层矩阵之间还夹了一个非线性「开关」(激活函数),这是第 2 章的主角。
小结
- 计算机只会算数,所以万物必须先变成向量(一串数字 = 高维空间中的一个点)。
- 向量化让「相似」变成可计算的「距离近」。
- 矩阵是空间的变形器;det = 0 的变形会压扁空间、丢失信息。
- 神经网络每层的核心运算就是矩阵 × 向量,模型参数主要就存在这些矩阵里。
延伸阅读
- 3Blue1Brown:《线性代数的本质》(B 站官方中字)——把「矩阵 = 空间变换」讲得出神入化,强烈推荐第 1~4 集。
- 下一节 0.3 概率:语言模型的母语:模型的输出为什么是「概率」而不是「答案」。