AI

张量、矩阵、向量:AI 到底在计算什么?

单击上方图灵人工智能”,选择“星标”公众号

您想知道的人工智能干货,第一时间送达

图片
转自AI-Lab学习笔记,仅用于学术分享,如有侵权留言删除

数字多到画不下时,人为什么发明多轴地址?同一张矩阵为什么能按行、按列和按变换阅读?从问题重新走一遍向量、矩阵与张量的诞生路线。

数字多了,人先发明地址;要反复重组数字,又发明矩阵;坐标会换,才需要把读数和对象分开。本文不从定义起跑,而从这些麻烦重新走一遍。

① 数字如何长出多栏地址 → ② 看不见高维就改看操作 → ③ 重复配方为何变成矩阵 → ④ 坐标会换为何需要张量 → ⑤ 线性堆叠为何会塌缩 → ⑥ Shape 为何不是智能说明书

一根承载许多坐标的轴穿过索引片和矩阵计算装置,展开为复杂关系网络

▲ 一根承载许多坐标的轴穿过索引片和矩阵计算装置,展开为复杂关系网络

论文写矩阵,代码存 Tensor

Transformer 论文把注意力压缩成一行矩阵运算。此刻不用计算它,只要先看见这组符号:

Attention(Q,K,V) = softmax(QKᵀ / √dₖ) V

PyTorch 代码里却几乎全是 Tensor;到了芯片,NVIDIA 又把专门做矩阵乘加的单元叫作 Tensor Core。同一场计算,为什么偏要用三个名字?

先不要背定义,先看三群人各自在解决什么麻烦。论文作者想看清一小片关系,常把其他样本和注意力头暂时放到一边,只画一张二维关系表;程序必须同时保存所有样本、头和 token,所以需要更多地址栏;芯片关心的则是怎样把这些运算重排、分块和融合。名字不同,是因为观察位置不同。

这里还藏着另一组容易混淆的东西:地点、地点的坐标,以及手机里保存坐标的数组。经纬度改写成“从路口向东多少米、向北多少米”,地点没有搬家。地点是对象,坐标是表示,数组是容器。

接下来先不问“Tensor 的定义是什么”,而换成两个更接近创造者的问题:数字越来越多时,我们需要发明什么,才能找到其中一个?坐标可以改变时,又有什么关系必须保持不变?

下文公式只是把相邻的中文压缩成记号。第一次阅读可以全部跳过,只看公式前后的结论,主线仍然完整。

一、代码里的 Tensor,是一套多栏地址

假设我们记录 365 天、三家商店、两种水果的价格。把 2190 个数字排成一长串当然也能存,但当你问“7 月 3 日、城南店、梨多少钱”时,“请找第 1376 个数”几乎没有帮助。

更自然的办法,是为每个价格保留三栏地址。要找到它,必须回答三个问题:

哪一天?哪家店?哪种水果?

这份数据可以写成:

价格[日期, 店铺, 水果] shape = [365, 3, 2]

三根轴不是从三维空间里发现的,而是从三个必须回答的问题里长出来的。Shape 只记录每栏有多少种选择;它不表示水果账本生活在三维几何空间。

水果价格账本用日期、店铺、水果三栏地址定位一个价格

▲ 水果价格账本用日期、店铺、水果三栏地址定位一个价格

Transformer 代码也是同样的道理。为了只看地址问题,先假设一次处理两句话,每句话暂时切成三个 token,每个 token 用四个数表示:

B = 2    两个样本 T = 3    每句话三个 token D = 4    每个 token 四个坐标  X.shape = [2, 3, 4]

文字先被切成 token 编号并整理成批次,得到 [B,T];Embedding 像按编号查表,为每个编号取回 D 个数,才得到 [B,T,D]。大写 B、T、D 表示每栏的总长度,小写 b、t、d 表示这次具体选了哪一个。

预训练文本从语料切成token编号矩阵,再经Embedding展开为三轴表示

▲ 预训练文本从语料切成token编号矩阵,再经Embedding展开为三轴表示

X[b,t,d]

回答了哪些地址问题:哪个样本、哪个 token、第几个坐标

得到什么:一个数

X[b,t,:]

回答了哪些地址问题:固定样本和 token,取全部坐标

得到什么:一个 D 维向量

X[b,:,:]

回答了哪些地址问题:固定样本,取整句话

得到什么:一张 [T,D] 矩阵

X[:,:,:]

回答了哪些地址问题:三个地址都保留

得到什么:[B,T,D] Tensor

按索引范围由小到大,同一份数据可以取出:

一个格子 → 一行 → 一页 → 一摞页
从一个标量、一个token向量、一句话矩阵到一批句子的Tensor

▲ 从一个标量、一个token向量、一句话矩阵到一批句子的Tensor

到了四根、五根轴,纸上的“一摞页”已经画不下去,地址规则却没有失效。到这里再给它命名:在 PyTorch 和 TensorFlow 中,软件 Tensor 就是把不同数量的地址栏统一起来的数组容器。数字类型、存储设备和布局等,则是这个容器附带的工程信息。

在这个软件约定下,标量、向量、矩阵都能使用 Tensor 类型:

标量     shape = [] 向量     shape = [D] 矩阵     shape = [M,N] 多轴数组 shape = [B,T,D]

这只是统一的数组容器,并不自动具有严格的数学张量含义。

二、4096 维向量,为什么只有一根轴

关于 Tensor,最容易混淆的是“维”。

某些模型的 token 表示可以是 4096 维向量;X[B,T,D] 又常被软件文档称为三维 Tensor;相对论里有四维时空;数学还会说二阶、四阶张量。这几个数字不是在数同一件事。

为什么位移、声音片段和 token 表示这样不同的东西,都能叫向量?不是因为它们长得像箭头,而是因为我们暂时拿走具体材质,只保留一套围绕相加和按比例缩放的共同规则。向量空间就是对这套操作规则的抽象;“维数”则回答,要用多少个独立坐标才能记录其中一个对象。

先把一个 token 的四个坐标增加到 4096 个。寻找其中一个数字时,我们真的多问了 4095 类问题吗?没有,问题仍然只有一个:“第几个坐标?”变长的是同一根轴,不是地址栏的数量。

4096 维是向量空间的性质:先选一组互不冗余、又足以拼出所有向量的基本方向——数学上叫“基”——每个向量便需要 4096 个坐标。它在代码里可以只是:

shape = [4096] 数组轴数 = 1 这根轴的长度 = 4096

反过来:

shape = [2,2,2] 数组轴数 = 3 元素总数 = 8
4096维向量只有一根索引轴,而三轴小Tensor有三根地址轴

▲ 4096维向量只有一根索引轴,而三轴小Tensor有三根地址轴

几把尺子可以这样分:

向量空间维数

它在数什么:一个向量需要多少个独立坐标

例子:某些模型的 token 表示是 4096 维

数组轴数 / ndim

它在数什么:找一个元素需要几个索引

例子:[B,T,D] 有 3 根轴

Shape

它在数什么:每根数组轴分别有多长

例子:B、T、D

数学里的“张量阶”先留到第四节;它仍然不是上述任何一把尺子。

高维在这里要求的不是更强的想象力,而是换一种直觉:不再强迫自己画出 4096 根互相垂直的轴,而是追踪操作规则。数仍能逐项相加、按比例缩放;再规定一套计算长度和夹角的规则后,也能比较方向、距离和投影。规则从 4 维延伸到 4096 维,并没有突然换成另一种数学。

这些坐标也不必分别对应“动物性”“快乐程度”之类可命名属性。模型中的意义常分散在许多数值的组合里,一个坐标也可能参与多种特征。把 4096 维先理解成“一份很长、仍可按同样规则运算的数值清单”,已经足够继续阅读;二维图是练习操作的场地,不是高维空间的缩略照片。

三、一条公式,看懂论文矩阵与代码 Tensor

现在模型遇到一个实际任务:每个 token 有 D 个输入坐标,我们希望用同一套配方,把它们重新组合成 O 个输出坐标。这里所谓“映射”,并不是突然冒出的高深身份,只是把“给我一个输入,我按规则交出什么输出”单独拿出来研究。

最简单、最容易重复使用的配方是什么?对某个输出坐标 o,给每个输入坐标 d 配一个权重,分别相乘再相加;把 O 份配方并排放好,就得到权重矩阵 W[D,O]。暂时忽略偏置:

Y[b,t,o] = Σ_d X[b,t,d] · W[d,o]

这时下标的去留不再是记号游戏,而是在记录配方:

  • b、t
     在等号两边都保留:输出仍然属于同一个样本、同一个 token。
  • d
     同时出现在 X 和 W 中,又被求和:输入特征下标在这里被收缩,因此从结果中消失。
  • o
     由权重矩阵引入:它成为新的输出特征下标。

这种“分别处理,再把结果相加”的规则就是线性。输入相加,输出也相加;输入放大几倍,输出随之放大几倍。它容易分析、组合和批量复用,所以常被当作起点。许多平滑关系在足够小的范围内,也会先显出近似直线的一层变化;微积分把这一层记作导数。神经网络再加入激活函数、Softmax 和输入相关的 Attention,让整体不再只是一条固定的线性规则。

固定 b、t,这只是一个 D 维向量乘权重矩阵;同时保留全部 b、t,代码里就是 [B,T,D] 到 [B,T,O] 的 Tensor 运算。矩阵乘法也可以这样理解:两个数组沿一个共享下标配对、相乘、求和,再保留没有被求和的下标。

Attention 只是多了几栏地址。以常见的自注意力形状为例,令 query 与 key 的 token 数相同,并暂记每个头的 key、value 维数都为 d

Q、K、V : [B,H,T,d]

Attention 看似多了许多符号。如果 Q、K、V 仍然陌生,只先抓住一个问题:每个 token 位置此刻该怎样为可见位置分配汇总权重?在标准的密集自注意力中,每个 query 会与 T 个 key 计算兼容度;T 个 query 都这样做,逻辑上形成 T×T 个分数。可以把学习得到的 query、key、value 暂时想成“我在寻找什么”“我可以凭什么被找到”“我准备贡献什么内容”,但这些内部方向不保证各自对应可命名的人类概念。

固定样本 b 和注意力头 h,留下的就是:

[T,d] × [d,T] → [T,T]

这正是论文里的 QKᵀ。每个格子都是把一个 query 和一个 key 的对应数字分别相乘后再相加得到的分数,数学上叫点积。一整行分数经过缩放,遮住不可见位置,再由 Softmax 转成总和为 1 的权重,才用来汇总 value 向量。Attention 的巧妙之处,正是用许多标量决定怎样重新组合许多向量。论文写其中一片矩阵;程序保留 batch、head、token 和特征的完整逻辑轴。

计算普通线性层时,还可以把 B 和 T 在逻辑上暂时合并:

[B,T,D]    ↓ 可逆重排 [B×T,D] × W[D,O]    ↓ [B×T,O]    ↓ 恢复索引 [B,T,O]

只要恢复规则还在,这种 reshape 没有把信息压到更低维,只是更换索引方式。不过,可逆重排不保证后续任何运算都等价;如果合并 B 和 T 后做没有隔离样本的 Attention,不同句子的 token 就会彼此注意,模型已经变了。

同一个多索引Tensor按矩阵批量计算并恢复原有地址

▲ 同一个多索引Tensor按矩阵批量计算并恢复原有地址

矩阵乘法反复出现,一方面是因为神经网络中大量可学习关系本来就是线性或仿射映射;另一方面是规则矩阵乘法有很高的数据复用率,GPU 和 AI 加速器可以分块并行执行。FlashAttention 还会把矩阵乘法、Softmax 和后续乘法分块融合,避免显式保存完整的 [B,H,T,T] 分数表。

但这不表示“所有 Tensor 最终都会变成矩阵”。Softmax、归一化、激活、索引、归约和数据搬运都是其他操作;二维外形本身也不说明数学角色。

四、数字会变,对象不变:为什么需要数学张量

先给你四个数字,并不能判断它们是什么:它们可以是四个价格,也可以是一台变换机器的读数。只有规定“输入 x,机器输出 Ax”以后,这张矩阵才开始扮演线性映射:

A = [a  b]      x = [x₁]      y = Ax     [c  d]          [x₂]

为什么同一个 Ax 既能按列看,又能按行看?不妨真的操作一次。只把第一个输入旋钮开到 1,机器输出 A 的第一列;只开第二个,就得到第二列。任意输入只是把这两次基础反应按 x₁、x₂ 混合起来。记两列为 u=[a,c]ᵀv=[b,d]ᵀ

y = Ax = x₁u + x₂v  y₁ = ax₁ + bx₂ y₂ = cx₁ + dx₂

换到输出仪表这一边,第一个仪表用第一行的规则报告 y₁,第二个仪表用第二行的规则报告 y₂。列回答“基础输入分别去了哪里”,行回答“一个输出数字怎样从输入中读出来”。它们不是竞争的解释,而是同一条求和规则从对象一侧和提问一侧阅读。

写成 Ax=y 时,也没有换成另一台机器,只是反过来追问:若解存在,想抵达指定终点 y,应该输入什么?答案也可能不唯一。再把所有输入组成的网格一起送进去,就能看见整片空间怎样被拉伸、剪切或旋转。

同一台矩阵变换仪的四种观察方式:列决定基向量去向,行产生两个输出坐标,方程从终点反求起点,方格和平行四边形网格展示整个平面的变形

▲ 同一台矩阵变换仪的四种观察方式:列决定基向量去向,行产生两个输出坐标,方程从终点反求起点,方格和平行四边形网格展示整个平面的变形

因此,先问数字表在这里扮演什么,再问应该怎样读取它;只看矩阵外形,无法判断它是价格表还是变换机器。

现在旋转坐标尺。矩阵里的数字通常会改变,这台机器做的事情变了吗?没有。当 A 表示抽象线性映射时,我们只是为输入空间和输出空间各换了一组基。这个小实验迫使我们承认:数字表是某套量尺下的读数,真正的对象是输入与输出之间的关系。

这里还需要区分“对象”和“向对象提出的问题”。一只购物袋里有多少苹果、多少梨,可以写成数量向量 x;在单价固定且不计折扣时,一张单价表接收 x,返回总价这个数。后者不是因为横着写才特殊,而是因为它扮演一把线性的测量尺:对象相加,账单相加;数量翻倍,账单翻倍。数学把这种“接收向量、返回一个标量”的线性泛函叫作余向量。

在普通平面或三维空间里,一把这样的测量尺常能用另一根向量表示:计算 m·v,就把向量 m 对应成了余向量 v → m·v。所以向量和余向量在初等计算中常写得很像;但角色仍然不同:一个是可被测量的对象,一个是提出问题的尺子。

回头看矩阵 A,每一行正是一把这样的尺子:它接收输入 x,报告一个输出坐标;许多行合在一起,就得到输出向量。每一列则记录一个基础输入经过整台机器后的输出。行与列之所以同时成立,不是矩阵拥有两种神秘本质,而是“对象怎样被组合”与“结果怎样被测量”本来就是同一次计算的两面。

一个测量问题还不够时会怎样?材料内部某一点的受力就是这样的麻烦。经过同一点,可以切出无数朝向不同的小平面;如果为每个切面分别存一根力箭头,既存不完,也看不出它们之间的关系。更好的办法,是寻找一条能回答所有切面的规则。

用一根长度为 1、垂直于切面的箭头 n 指定朝向,数学上叫单位法向量;牵引力向量表示这个切面上单位面积所受的力。Cauchy 应力定理告诉我们,在连续介质的常规假设下,存在一个线性映射 σ,使这条规则写成:

给定切面法向 n         ↓ 应力 σ         ↓ 返回牵引力 t(n) = σn

选定三维坐标后:

tᵢ = Σⱼ σᵢⱼ nⱼ

j 标记输入的切面方向分量,i 标记输出的牵引力分量。因此,一张 3×3 表就能记录所有切面方向对应的牵引力,而不必保存无穷多支箭头。

如果再拿向量 m 这把尺子,读数就是:

m · σn

由于 σ 是线性映射,把 m、n 视为任意向量后,固定其中一个,这个读数对另一个都是线性的。当 m 是单位向量时,读数才是牵引力沿该方向的有符号分量。

先别急着命名。下面只换一套坐标尺,看看哪些数字会变,哪条关系会留下。这里两套坐标轴都是互相垂直的单位轴,Q 是正交旋转矩阵;Q 的列向量记录新基在旧基下的坐标:

旧坐标:t = σn  新坐标:σ' = QᵀσQ         n' = Qᵀn         t' = Qᵀt  仍然有:t' = σ'n'

图中只把坐标尺旋转 45°,材料、切面和受力都不动。σ、n、t 的数字读数全变了;此时 n′=(1,0)t′ 正好是 σ′ 的第一列,但两套读数仍在描述同一切面上的同一股力。

固定材料、切面、法向与受力,只把透明坐标量尺旋转45度;两块读数牌显示同一应力张量在两套坐标下的不同分量

▲ 固定材料、切面、法向与受力,只把透明坐标量尺旋转45度;两块读数牌显示同一应力张量在两套坐标下的不同分量

现在,数学张量这个名字才真正有用:

数学张量可以不借助具体基,定义为一个多重线性对象。选定基以后,它表现为多下标分量;换基时,这些分量按兼容规则一起改变,使同一个关系保持不变。

“多重线性”意味着它有若干输入位置,固定其他位置后,每个位置都分别尊重相加和缩放。为什么偏要保留这个限制?因为在有限维空间里,只要知道这条规则对各组基向量怎样回答,线性就会自动推出它对所有输入的回答;一张有限的分量表,因而能记录整条关系。每增加一个这样的槽位,选定基以后就多出一个分量下标。变换规则不是张量本身,而是保证两张不同读数表仍在描述同一个对象。

为什么教科书常把张量写成“若干输入,最后回答一个数”?因为向量输出还可以再交给一把余向量尺子;所有可能的标量读数合起来,足以确定原来的向量。于是,向量输出可以统一改写成“多一把尺子、多一个输入槽、最后一个数”。这是一种方便的记账方式,不是说由张量描述的关系只能输出标量。这也说明,不能把日常语言中“有几个参数”直接当成张量的阶。

由此可以区分三个语境:

  • 数学张量是多重线性对象;多下标数字是它在所选基下的分量。
  • 物理使用这种结构,让不同坐标下的表达给出一致的实验预测。
  • 软件 Tensor 是更宽泛的多轴数组。它可以保存张量分量,也可以保存与坐标变换毫无关系的普通数据。

到了数学语境,“阶”数的是分量有几个张量下标位置。应力 σᵢⱼ 有两个位置,总阶为 2;这与空间维数、数组轴数仍是不同的尺子。“四维时空”和“四阶张量”里的两个“四”,前者数坐标,后者数下标位置。

再回看开头的水果价格档案。它不会因为有三根数组轴,就自动成为几何或物理意义上的张量。可以把“选某一天、某家店、某种水果”分别写成只有选中位置为 1 的选择向量;若再允许这些选择按任意权重组合,并把查价规则按线性组合延伸,得到的运算才会对三个位置分别线性。原来的离散查价只是其中最简单的选择。代码数组和数学张量因此会共享多下标与收缩语言,却仍不是同义词。

所以,“标量、向量、矩阵都是张量的特例”必须注明语境。抽象标量和向量可以纳入张量体系;一列数字或一张矩阵却不会仅凭外形自动成为数学张量。判断它是否是数学张量,还需说明它代表什么对象,以及换基时怎样变化。

五、数组轴、网络层、硬件内核是三张地图

网络有很多层,会不会是 Tensor 自己也像洋葱一样越长越多层?先看运行记录:

X₀ [B,T,D]  ↓ Block 1 X₁ [B,T,D]  ↓ Block 2 X₂ [B,T,D]  ↓ ... Xᴸ [B,T,D]

从 X₀ 到 Xᴸ,Shape 可以始终是 [B,T,D],内部表示却被连续改写。事后把快照堆成 [L,B,T,D],新增的 L 只是“第几张运行记录”的地址栏,不是网络深度的来源。

那么,只把很多线性层叠起来,会不会自然得到复杂能力?试着把它们合并。暂时忽略偏置:

W₃(W₂(W₁x)) = (W₃W₂W₁)x

三层竟然塌成了一个矩阵;有偏置时,也仍能合成一个仿射变换。这个“失败实验”反而揭示了深层网络需要什么:激活函数和由输入决定的 Attention 使各层无法预先压成一个固定矩阵;归一化等机制帮助反复改写稳定进行。残差连接既保留信息通道,也常帮助深层模型稳定训练。

落到芯片上,一个逻辑 Block 会拆成矩阵乘法、Softmax、加法、归一化等许多计算内核;编译器也可能反过来把几个逻辑操作融合。

Tensor索引轴、网络层和计算内核是同一套AI计算的三张不同地图

▲ Tensor索引轴、网络层和计算内核是同一套AI计算的三张不同地图

这三层回答的是不同问题:

数据组织

它回答的问题:一个数字属于哪个样本、token、头和特征坐标?

模型架构

它回答的问题:信息依次经过哪些参数、函数和非线性组合?

执行工程

它回答的问题:这些运算怎样被重排、分块、融合和并行?

数组轴数、网络层数和计算内核数量没有一一对应关系。神经网络分层来自函数组合、架构设计和训练需要;把多索引计算整理成矩阵乘法,是另一个层面的执行工程。

六、Shape 是数据编排,不是智能说明书

把两个 [B,T,D] Tensor 的数值遮住:一个来自随机模型,一个来自成熟模型对一句诗的内部表示。只看 Shape,能认出哪一个理解语言吗?不能。Shape 只暴露书架的格局,不暴露书里写了什么。

软件 Tensor 说明数字怎样组织和索引,却不说明这些数字为什么共同表示讽刺、怎样召回事实,又怎样形成一段推理。容器不是智能的来源;训练形成的参数关系,以及运行中反复组合的线性、非线性和内容依赖计算,才是需要解释的对象。

再把全部权重和每一步激活摊开,是否就能立刻解释模型为何识别出讽刺?仍然不能。精确账本回答“它算了什么”,却未必回答“哪些计算构成稳定、可验证的原因”。例如,在某些隐藏层中,把若干坐标连同相关权重一起换个次序,输入输出功能仍可不变;一个概念还可能分布在许多方向,多个概念也可能叠加在同一组单元上。

“透明”至少有三层:

  • 计算可重放:知道权重、代码和输入后,可以复现每一步数值运算。
  • 表示可理解:能否把内部方向对应到稳定的人类概念。
  • 机制可解释:能否得到简短、忠实、可干预验证,并能跨输入复现的因果说明。

第一层不会自动推出后两层。

完全透明的计算机器产生精确账本,人类从中提取少数可检验因果路径

▲ 完全透明的计算机器产生精确账本,人类从中提取少数可检验因果路径

解释的难点,是从规模巨大、分布式、上下文相关的非线性计算中,找到稳定而可检验的因果结构。

张量也没有比矩阵更接近智能。数学意义的高阶张量仍是多线性对象;软件 Tensor 多一根数组轴,也只是多一栏地址。两者都不会自动产生非线性或能力。多线性只表示“固定其他输入槽时,对当前槽线性”;若多个槽同时来自同一个输入,整体仍可能是非线性的,QKᵀ 就是近在眼前的例子。模型的表达力来自线性映射、索引收缩、激活和 Softmax 等运算的反复组合,再由训练塑造其中的参数关系。

读懂 Tensor 的四个问题

张量不是越堆越高的数字。对象从来不等于它的坐标:数字可以随坐标变化,关系不能随量尺改变。

读懂一个 Tensor,需要回答四个问题:

  1. 这些轴在索引什么?
     是样本、token、注意力头,还是空间方向?
  2. 这次运算保留、消去和引入了哪些下标?
  3. 它只是一个多轴数组,还是某个数学对象在所选基下的分量?
  4. 当前讨论的是数据组织、模型函数、硬件执行,还是智能解释?

即使忘掉全部公式,也可以保留这条重新发明概念的路线。数字多了,我们需要地址,于是有了软件 Tensor;要反复重组数字,我们需要可组合的线性规则,于是矩阵成为基本工具。

要在换坐标后仍追踪同一个多重线性关系,我们区分对象与读数,并抽象出数学张量;只叠线性规则又会塌回一层,于是网络还需要非线性、内容相关的计算和训练。

这四个问题不能直接解释智能,却能消除几种常见误解:4096 维向量不是 4096 根数组轴;论文中的矩阵没有被代码里的 Tensor 淘汰;几十层网络也不是在逐层拆解一个高阶张量。

软件 Tensor 组织数字,数学张量刻画多重线性关系;两者都不会让数字天然获得意义。公式是这条发现路线留下的压缩记录,不是理解的起点。

AI 的智能仍未被完整解释,Tensor 本身却没有那么神秘。

本公众号延伸阅读

  • 《万物皆向量——当 AI 选择用数学理解世界》
    :单个 token 为什么可以进入高维向量表示;本文把它补充为一批向量怎样组织成 Tensor。
  • 《从矩阵乘法到 Transformer:LLM 背后的数学直觉》
    :矩阵乘法、QKV 和 Transformer 的基础桥梁;本文修正其中“只是维度不同”的过度简化。
  • 《一看就懂:矩阵乘法到底对 LLM 做了什么?》
    :二维几何怎样帮助建立线性直觉,以及这种直觉到了高维以后需要补上的边界。
  • 《推理是一种坍塌吗?——AI 思考时,内部到底发生了什么》
    :从高维轨迹和低维结构理解模型内部。
  • 《为什么我们总是在误解彼此?——高维世界、低维语言与 AI 的向量空间》
    :人和 AI 怎样用不同表示压缩高维世界。

核心参考资料

  1. Gilbert Strang, Lecture 1: The Geometry of Linear Equations, MIT OpenCourseWare. https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/resources/lecture-1-the-geometry-of-linear-equations/
  2. Tamara G. Kolda, Brett W. Bader, Tensor Decompositions and Applications, SIAM Review, 2009. https://doi.org/10.1137/07070111X
  3. Lek-Heng Lim, Tensors in Computations, Acta Numerica, 2021. https://doi.org/10.1017/S0962492921000076
  4. John M. Lee, Introduction to Smooth Manifolds, 2nd ed., Springer, 2012. https://doi.org/10.1007/978-1-4419-9982-5
  5. Morton E. Gurtin, Eliot Fried, Lallit Anand, The Mechanics and Thermodynamics of Continua, Cambridge University Press, 2010. https://doi.org/10.1017/CBO9780511762956
  6. MIT Mathematics, Stress Tensor Short Notes. https://math.mit.edu/classes/18.376/Notes/N07StressTensorShortNotes.pdf
  7. TensorFlow, Introduction to Tensors. https://www.tensorflow.org/guide/tensor
  8. PyTorch, Tensors. https://docs.pytorch.org/tutorials/beginner/basics/tensorqs_tutorial.html
  9. PyTorch, Tensor Views. https://docs.pytorch.org/docs/stable/tensor_view.html
  10. PyTorch, Scaled Dot Product Attention. https://docs.pytorch.org/docs/stable/generated/torch.nn.functional.scaled_dot_product_attention.html
  11. Ashish Vaswani et al., Attention Is All You Need, NeurIPS, 2017. https://papers.nips.cc/paper/7181-attention-is-all-you-need
  12. NVIDIA, Matrix Multiplication Background User's Guide. https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html
  13. NVIDIA, Programming Tensor Cores in CUDA 9. https://developer.nvidia.com/blog/programming-tensor-cores-cuda-9/
  14. Tri Dao et al., FlashAttention, NeurIPS, 2022. https://arxiv.org/abs/2205.14135
  15. Nelson Elhage et al., Toy Models of Superposition, 2022. https://transformer-circuits.pub/2022/toy_model/index.html

图片

文章精选:

1.图灵奖得主姚期智最新演讲: AI有边界,恰恰是好事

2.图灵奖得主本吉奥警告全网:AI已经学会“演给安全测试看”,下一代我们可能真的抓不住了!
3.图灵奖得主萨顿 WAIC 2026 最新演讲:现在的 AI 还不算真智能,我们正迈入经验时代
4.菲尔兹奖得主陶哲轩最新访谈:未来数学属于人类与 AI 的混合体
5.图灵奖得主、AI教父辛顿:AI已具备意识,且将进化成远超人类的智能生命体
6.图灵奖得主、“AI教父”辛顿认错:我当年想得太简单!卡死医疗AI落地的,其实是背后的法律
7.图灵奖得主Bengio预言o1无法抵达AGI!Nature权威解读AI智能惊人进化,终极边界就在眼前
8.图灵奖得主、强化学习之父Rich Sutton:大语言模型是一个错误的起点
9.图灵奖得主杨立昆:大语言模型缺乏对物理世界的理解和推理能力,无法实现人类水平智能
10.压缩即是全部 —— 菲尔兹奖得主 Michael Freedman 给数学和 AI 的一封信