矩阵”到底是什么

1. 把数字摆成方块:一张"数表"

想象老师让统计班级 3 次小测成绩:

学生 第1次 第2次 第3次
小A 85 90 88
小B 78 82 86

把数字单独拎出来,按原位置排好:

复制代码
85  90  88
78  82  86

这就是"矩阵" ------一个 m 行 n 列的矩形数表。

上面这张叫 2×3 矩阵(先报行数,再报列数)。


2. 向量:只有一列(或一行)的矩阵

把"小A 三次成绩"竖着写:

复制代码
85
90
88

它只有 1 列,叫 列向量 ;如果横着写 [85 90 88],就叫 行向量

向量就是"一条数字",矩阵就是"多条向量并排"。


3. 为什么要弄成方块?

  • 一眼看出谁对应谁(行=学生,列=考试)
  • 电脑能把"整张表"当一个整体来算,速度飞快

4. 矩阵 × 向量:一次把账算完

还是那张成绩表:

复制代码
G = 85  90  88
    78  82  86

现在算"每人总分",只要给每门课一个"权重"向量 w:

复制代码
w = 1   (第1次占比1)
    1.2 (第2次占比1.2)
    1   (第3次占比1)

步骤:把 G 的每一行去点积 w

  • 小A:85×1 + 90×1.2 + 88×1 = 291
  • 小B:78×1 + 82×1.2 + 86×1 = 272.4

写成矩阵乘法:

复制代码
G · w = [291]  ← 小A
        [272.4]← 小B

口诀:矩阵 × 向量 = 对矩阵每行做"对应位置相乘再相加"(点积)。


5. 矩阵 × 矩阵:批量算账

再加一次考试,权重换成矩阵 W(3×2):

复制代码
W = 1   0.8
    1.2 1
    1   0.9

把 G(2×3)× W(3×2)→ 结果 2×2:

  • 左高 × 右宽 = 新尺寸

  • 每个元素 = 左行 点 右列

    G·W = [291 263.2] ← 小A两次总评
    [272.4 246.2] ← 小B两次总评

电脑一次 GEMM(General Matrix Multiply)全部搞定。


6. 矩阵乘法的三条"形状铁律"

  1. 左矩阵列数 = 右矩阵行数
  2. 结果行数 = 左行数,列数 = 右列数
  3. 每个元素 = 对应行 × 对应列 的点积

记住口诀:(m×n)·(n×p)→(m×p)


7. 从"数表"看 AI 的万能套路

------矩阵怎样一路查表、旋转、掰弯,最终让电脑"看懂"一句话

(本节绝不跳步,每一行乘出来都给你看)


7.1 查表:one-hot 抽列仍是矩阵乘

词典还是 4 个字:【我、爱、猫、狗】,编号 0→3。

"猫"的 one-hot 向量 x:

复制代码
0
0
1          ← 只有这里是 1
0

Embedding 矩阵 E(3×4,每列对应一词):

复制代码
0.2  0.5 -0.1  0.8
0.3  0.4  0.7  0.2
0.1  0.6  0.9 -0.3

乘一遍

复制代码
E · x =
[-0.1]      ← 第 2 列被完整抽出
[ 0.7]
[ 0.9]

数学事实

4×1 的 one-hot 与 3×4 的矩阵相乘,结果恰好是矩阵的第 2 列

所以"查表"这个动作,外表是乘,实质是拿列,电脑还能继续求导。


7.2 线性搬家:Attention 里的 Q/K/V 投影

句子只有两个字【我 爱】,已经查完表得到 2 个向量(行=字,列=维度):

复制代码
X =                 ← 2×3 矩阵(先升到 3 维方便演示)
[ 0.2  0.5  0.1]   ← "我"
[ 0.3  0.4  0.7]   ← "爱"

现在要把它三次搬家 :问空间 Q、被问空间 K、给信息空间 V。

做法:再准备 3 个 3×3 的小矩阵 WQ, WK, WV,元素随机扔:

WQ 举例(先给具体数):

复制代码
 0.2  0.1 -0.3
-0.1  0.3  0.4
 0.5 -0.2  0.6

算 Q = X · WQ(2×3 乘 3×3 → 2×3,每行独立):

复制代码
第 1 行(我):
q1_0 = 0.2×0.2 + 0.5×(-0.1) + 0.1×0.5 = 0.04 - 0.05 + 0.05 = 0.04
q1_1 = 0.2×0.1 + 0.5×0.3  + 0.1×(-0.2)= 0.02 + 0.15 - 0.02 = 0.15
q1_2 = 0.2×(-0.3)+0.5×0.4 + 0.1×0.6 = -0.06 + 0.20 + 0.06 = 0.20

第 2 行(爱):
q2_0 = 0.3×0.2 + 0.4×(-0.1) + 0.7×0.5 = 0.06 - 0.04 + 0.35 = 0.37
...(同理算完)

最终 Q:

复制代码
[ 0.04  0.15  0.20]   ← 我
[ 0.37  0.26  0.54]   ← 爱

看到了吗?

同一个 X,换一张表 WQ,就被旋转+缩放 到新坐标系;

K、V 同理,只是换另外两张随机表。
所有字一起乘完,GPU 一次 kernel 解决。


7.3 注意力权重:矩阵乘自己的转置

现在用 Q、K 算"谁跟谁相关"。

尺寸:Q(2×3), K(2×3)

先算 S = Q · Kᵀ(2×3 乘 3×2 → 2×2)

复制代码
S[0,0] = q1 · k1 = 0.04×0.10 + 0.15×0.25 + 0.20×0.35 = 0.004 + 0.0375 + 0.07 ≈ 0.1115
S[0,1] = q1 · k2 = ...

得到 2×2 的"原始分矩阵" S:

复制代码
[ 0.1115  0.089 ]   ← 我 对 我/爱 的分
[ 0.142   0.128 ]   ← 爱 对 我/爱 的分

接着 softmax 按行归一化 → 权重矩阵 A(每行和=1)。
没有任何手工规则,全是点积 + exp + 除法


7.4 加权求和:再一次矩阵乘

拿到权重 A(2×2) 与值 V(2×3) 相乘:

复制代码
O = A · V   (2×2 乘 2×3 → 2×3)

每一行就是 用权重把 V 里的向量求和 ,得到新表示。
Attention 输出 O 完成。


7.5 FFN:对每个向量单独"升维→掰弯→降维"

拿 O 的第 1 行 o = [o0, o1, o2](3 维)举例:

  1. 升维:
    h = o · W₁ (W₁ 是 3×12 表,随机初始)
    → 得到 12 维向量
  2. 掰弯:
    h = ReLU(h) 【负数变 0,正数保持】
  3. 降维:
    y = h · W₂ (W₂ 是 12×3 表)
    → 回到 3 维

尺寸链 :3 → 12 → 3
参数量:3×12 + 12×3 = 72(忽略偏置)

结论

FFN 不对字与字之间操作,只把每个字的向量单独送进"小前馈网络"加工一次,让表达能力从"直线"升级成"折线/曲线"。


7.6 残差 + LayerNorm:把高速路留回梯度

Attention/FFN 都可能把信息带远,要留条捷径:

复制代码
x = LayerNorm( FFN(x) + x )
  • + x 保证梯度能沿原路返回(残差)
  • LayerNorm 把向量均值归 0、方差归 1,训练更稳

数学

μ = mean(x), σ = std(x)

x̂ = (x − μ) / √(σ² + ε)

output = γ · x̂ + β (γ, β 也是可训练向量)


7.7 输出层:再查同一张 Embedding 表

最后要猜下一个字,把当前向量 h 乘回 E 的转置

复制代码
logits = h · Eᵀ   (1×3 乘 3×4 → 1×4)

→ 得到 4 个分数,softmax 变概率,采样或取最大即可。

好处

输入输出共享同一张语义表,参数省一半,小模型尤其明显。


7.8 小结:矩阵一条龙流程

复制代码
字 ID
  ↓ one-hot × E              ← 查表(3×4 乘 4×1 → 3)
  ↓  X 拼成矩阵
  ↓ X·WQ , X·WK , X·WV       ← 三次投影(2×3 乘 3×3 → 2×3)
  ↓ A = softmax(Q·Kᵀ)        ← 权重(2×2)
  ↓ O = A·V                  ← 加权求和(2×2 乘 2×3 → 2×3)
  ↓ FFN:升维→ReLU→降维    ← 每行单独 3→12→3
  ↓ +残差 & LayerNorm
  ↓ logits = h·Eᵀ            ← 再查表
  ↓ softmax → 概率 → 下一字

所有步骤都是"换一张表 → 矩阵乘 → 偶尔掰弯"

电脑眼里没有语义,只有大块大块数字搬家

8. 小结(一句话背走)

矩阵 = 把数字摆成方块,乘法 = 批量点积,AI 里所有"查表、旋转、加工"全用它一张表搞定。

相关推荐
图先6 小时前
线性代数第二讲—矩阵
线性代数
图先6 小时前
线性代数第六讲——二次型
线性代数
AI科技星1 天前
统一场论质量定义方程:数学验证与应用分析
开发语言·数据结构·经验分享·线性代数·算法
咚咚王者1 天前
人工智能之数学基础 线性代数:第二章 向量空间
人工智能·线性代数
元周民1 天前
非厄米矩阵高精度计算预先判定需要的计算精度(matlab)
线性代数·matlab·矩阵
java修仙传1 天前
力扣hot100:搜索二维矩阵
算法·leetcode·矩阵
浅川.251 天前
xtuoj 矩阵
线性代数·矩阵
ACERT3331 天前
05-矩阵理论复习第五章 向量与矩阵范数
python·算法·矩阵
前端小白在前进1 天前
⭐力扣刷题:螺旋矩阵
算法·leetcode·矩阵