【AI】矩阵、向量与乘法

简单来说,高级的矩阵运算可以被看作是多个低级向量运算的集合。这不仅是概念上的简化,也是硬件(如GPU)实际执行并行计算的方式。

我们用一个具体的例子,从矩阵乘法一步步分解到向量乘法。

假设我们有两个矩阵 A 和 B ,要计算 C = A * B 。

  • A 是一个 2x3 矩阵
  • B 是一个 3x2 矩阵
  • 结果 C 将是一个 2x2 矩阵
bash 复制代码
A = [[1, 2, 3],
     [4, 5, 6]]

B = [[10, 11],
     [20, 21],
     [30, 31]]

级别1:矩阵 x 矩阵 (Matrix-Matrix Multiplication)

这是最高级别的操作。按照定义, C 中的每个元素 Ci, j 是由 A 的第 i 行和 B 的第 j 列的点积(Dot Product)得到的。

  • C0, 0 = (A的第0行) · (B的第0列) = (110) + (220) + (3*30) = 10 + 40 + 90 = 140
  • C0, 1 = (A的第0行) · (B的第1列) = (111) + (221) + (3*31) = 11 + 42 + 93 = 146
  • C1, 0 = (A的第1行) · (B的第1列) = (410) + (520) + (6*30) = 40 + 100 + 180 = 320
  • C1, 1 = (A的第1行) · (B的第2列) = (411) + (521) + (6*31) = 44 + 105 + 186 = 335

所以,最终结果是:

bash 复制代码
C = [[140, 146],
     [320, 335]]

级别2:简化为 矩阵 x 向量 (Matrix-Vector Multiplication)

现在,我们换个角度看 C = A * B 。我们可以把矩阵 B 看作是由两个列向量 b1 和 b2 并排组成的。

  • b1 (B的第一列) = 10, 20, 30
  • b2 (B的第二列) = 11, 21, 31

那么, A * B 的结果 C ,它的每一列其实就是 A 分别乘以 B 的每一列的结果。

计算 C 的第一列 c1 : c1 = A * b1

bash 复制代码
c1 = [[1, 2, 3],   *  [10,
      [4, 5, 6]]      20,
                       30]

这变成了一个 矩阵-向量乘法 。

  • c1 的第一个元素 = (110) + (220) + (3*30) = 140
  • c1 的第二个元素 = (410) + (520) + (6*30) = 320 所以, c1 = 140, 320 。这正是 C 的第一列!

计算 C 的第二列 c2 : c2 = A * b2

bash 复制代码
c2 = [[1, 2, 3],   *  [11,
      [4, 5, 6]]      21,
                       31]
  • c2 的第一个元素 = (111) + (221) + (3*31) = 146
  • c2 的第二个元素 = (411) + (521) + (6*31) = 335 所以, c2 = 146, 335 。这正是 C 的第二列!

结论 :一个矩阵-矩阵乘法 A * B ,可以被完美地分解成一系列并行的矩阵-向量乘法。GPU就是利用这个原理,同时计算 Ab1 , Ab2 ... ,从而实现大规模并行加速。

级别3:简化为 向量 x 向量 (Vector-Vector Multiplication)

现在我们再把 矩阵-向量乘法 c1 = A * b1 进行分解。这里有两种等价的视角。

视角A:点积 (Dot Product) 的集合

这是最经典的视角,也是我们刚才实际计算时用的方法。 c1 的每个元素,都是 A 的一个 行向量 和向量 b1 的 点积 。

  • c10 = (A的第0行) · b1 = 1, 2, 3 · 10, 20, 30 = 140
  • c11 = (A的第1行) · b1 = 4, 5, 6 · 10, 20, 30 = 320

结论 :一个矩阵-向量乘法,可以被分解成一系列 向量-向量点积 。每个点积都是独立计算的,这又是大规模并行的基础。

视角B:列向量的线性组合 (Linear Combination)

这是另一个非常重要且直观的视角。一个矩阵乘以一个向量,等于这个矩阵所有 列向量 的 加权和 ,而权重就是那个向量里的元素。

让我们看看 c1 = A * b1 :

bash 复制代码
c1 = [[1, 2, 3],   *  [10,
      [4, 5, 6]]      20,
                       30]

A 的列向量分别是: a_col1 = 1, 4 , a_col2 = 2, 5 , a_col3 = 3, 6 b1 的元素是 10, 20, 30 。

根据这个视角, c1 应该是: c1 = (b1的第1个元素 * A的第1列) + (b1的第2个元素 * A的第2列) + (b1的第3个元素 * A的第3列) c1 = 10 * 1, 4 + 20 * 2, 5 + 30 * 3, 6 c1 = 10, 40 + 40, 100 + 90, 180 c1 = 10+40+90, 40+100+180 c1 = 140, 320

结果完全一样!

结论 :这个视角告诉我们矩阵-向量乘法的几何意义。它把向量 b1 从一个坐标系(标准坐标系)转换到了由矩阵 A 的列向量所张成的新的坐标系中。

总结

  • 矩阵 x 矩阵 :可以看作是多个独立的 矩阵 x 向量 操作的集合。
  • 矩阵 x 向量 :可以看作是多个独立的 行向量 · 列向量 (点积) 操作的集合。
  • 矩阵 x 向量 (另一视角):也可以看作是矩阵的 列向量 的 线性组合 。

所以,最复杂的矩阵乘法,其最底层的基石就是 向量乘法 (主要是点积)。现代计算库(如BLAS)和硬件(如GPU)就是将上层复杂的运算,层层分解成海量的、简单的、可并行处理的向量运算,从而获得惊人的计算速度。

相关推荐
hsfxuebao2 分钟前
Hermes Agent进化篇:Skills、Hooks、Plugins、Cron
人工智能·后端
tellmewhoisi3 分钟前
机器学习:集成学习4(XGBoost的正则化项)
人工智能·机器学习·集成学习
青春不败 177-3266-05204 分钟前
AI-Agent无人机农林生态遥感技术应用
人工智能·生态学·农业遥感·遥感·多光谱遥感·智慧农林·林业遥感
slacker-kian7 分钟前
SAP On-Premise 部署环境下 ABAP 开发对接 AI Agent 方案探讨
人工智能·ai·sap·agent·abap·mcp·odata
程序人生88811 分钟前
从“把隐私文件上传到别人云端“到本地可控:DocConverter Web 立项初心与架构选型
前端·图像处理·人工智能·opencv·架构·ocr·文心一言
数智工坊11 分钟前
视觉SLAM第11讲|回环检测:词袋模型、字典构建与相似度计算全解析
人工智能·深度学习·线性代数
TechEdu20260613 分钟前
[人工智能]Python11:NumPy 源代码、软件架构与软件流程
人工智能·numpy
loulanyue_13 分钟前
突破单点AI瓶颈:慧博零售全域Agent的数智化实践——读慧博科技CTO贾世龙2026云栖专场演讲
人工智能·科技·零售
蜗牛互联网17 分钟前
Java HttpClient 调用 Gemini 图像理解与金额字段校验
java·开发语言·人工智能·后端·python
开开心心就好18 分钟前
视频里的图片怎么提取?双击一下就导出
java·前端·人工智能·spring·智能手机·intellij-idea·excel