实现矩阵的点积:从数学原理到 NumPy 实战

目录

一、前言

二、什么是点积

三、点积的几何意义

四、矩阵点积是什么

五、矩阵乘法规则

六、矩阵点积计算过程

七、矩阵点积流程图

八、使用Python手写点积

九、手写矩阵乘法

十、NumPy中的dot

十一、矩阵点积

[十二、推荐写法 @ 运算符](#十二、推荐写法 @ 运算符)

十三、dot与*的区别

十四、机器学习中的应用

十五、神经网络中的应用

十六、批量数据点积

十七、性能对比

十八、矩阵点积与深度学习

十九、点积与余弦相似度

二十、总结


一、前言

如果说机器学习领域有一个最重要的数学运算,那么答案大概率是:

复制代码
矩阵点积(Dot Product)

无论是:

复制代码
线性回归

逻辑回归

PCA

神经网络

Transformer

卷积神经网络

其底层都离不开矩阵点积。

甚至可以说:

整个深度学习,本质上就是大量矩阵点积的组合。

因此,理解矩阵点积是学习机器学习和深度学习的重要基础。


二、什么是点积

在线性代数中:

两个向量可以进行一种特殊运算:

复制代码
点积

Dot Product

例如:

向量A:

复制代码
[1,2,3]

向量B:

复制代码
[4,5,6]

点积定义:

复制代码
A·B

=

1×4

+

2×5

+

3×6

结果:

复制代码
=

4

+

10

+

18

=

32

因此:

复制代码
[1,2,3]

·

[4,5,6]

=

32

三、点积的几何意义

点积不仅仅是数字运算。

它还表示:

复制代码
两个向量之间的相似程度

公式:

复制代码
A·B

=

|A|

×

|B|

×

cosθ

其中:

复制代码
θ

表示两个向量夹角

当:

复制代码
θ = 0°

则:

复制代码
cosθ = 1

点积最大。

说明:

复制代码
两个向量方向完全一致

当:

复制代码
θ = 90°

则:

复制代码
cosθ = 0

点积为0。

说明:

复制代码
两个向量垂直

这也是:

复制代码
推荐系统

文本相似度

向量检索

大量使用点积的原因。


四、矩阵点积是什么

向量点积可以扩展到矩阵。

例如:

矩阵A:

复制代码
[
 [1 2]
 [3 4]
]

矩阵B:

复制代码
[
 [5 6]
 [7 8]
]

矩阵乘法:

复制代码
A × B

并不是:

复制代码
对应位置相乘

而是:

复制代码
行 × 列

进行点积。


五、矩阵乘法规则

矩阵:

复制代码
(m,n)

可以乘:

复制代码
(n,k)

结果:

复制代码
(m,k)

即:

复制代码
前一个矩阵列数

=

后一个矩阵行数

否则无法计算。


例如:

复制代码
(2,3)

×

(3,4)

合法。

结果:

复制代码
(2,4)

例如:

复制代码
(2,3)

×

(2,4)

非法。

因为:

复制代码
3 ≠ 2

六、矩阵点积计算过程

矩阵A:

复制代码
[
 [1 2]
 [3 4]
]

矩阵B:

复制代码
[
 [5 6]
 [7 8]
]

计算:

第一行第一列:

复制代码
1×5 + 2×7

=

19

第一行第二列:

复制代码
1×6 + 2×8

=

22

第二行第一列:

复制代码
3×5 + 4×7

=

43

第二行第二列:

复制代码
3×6 + 4×8

=

50

最终:

复制代码
[
 [19 22]
 [43 50]
]

七、矩阵点积流程图


八、使用Python手写点积

先实现向量点积。

python 复制代码
a = [1,2,3]
b = [4,5,6]

result = 0

for i in range(len(a)):
    result += a[i] * b[i]

print(result)

输出:

复制代码
32

九、手写矩阵乘法

python 复制代码
A = [
    [1,2],
    [3,4]
]

B = [
    [5,6],
    [7,8]
]

result = [
    [0,0],
    [0,0]
]

for i in range(len(A)):
    for j in range(len(B[0])):
        for k in range(len(B)):
            result[i][j] += (
                A[i][k] * B[k][j]
            )

print(result)

输出:

复制代码
[
 [19,22],
 [43,50]
]

十、NumPy中的dot

NumPy提供:

复制代码
np.dot()

实现点积。

示例:

python 复制代码
import numpy as np

a = np.array([
    1,
    2,
    3
])

b = np.array([
    4,
    5,
    6
])

print(
    np.dot(a,b)
)

输出:

复制代码
32

十一、矩阵点积

python 复制代码
import numpy as np

A = np.array([
    [1,2],
    [3,4]
])

B = np.array([
    [5,6],
    [7,8]
])

print(
    np.dot(A,B)
)

输出:

复制代码
[
 [19 22]
 [43 50]
]

十二、推荐写法 @ 运算符

Python 3.5以后:

支持:

复制代码
@

作为矩阵乘法符号。

python 复制代码
import numpy as np

A = np.array([
    [1,2],
    [3,4]
])

B = np.array([
    [5,6],
    [7,8]
])

print(A @ B)

输出:

复制代码
[
 [19 22]
 [43 50]
]

这是目前最推荐的写法。


十三、dot与*的区别

很多新手容易混淆:

复制代码
A * B

和:

复制代码
A @ B

假设:

python 复制代码
A = np.array([
    [1,2],
    [3,4]
])

B = np.array([
    [5,6],
    [7,8]
])

元素乘法:

复制代码
A * B

结果:

复制代码
[
 [5 12]
 [21 32]
]

矩阵乘法:

复制代码
A @ B

结果:

复制代码
[
 [19 22]
 [43 50]
]

区别非常大。


十四、机器学习中的应用

线性回归公式:

复制代码
y = Wx + b

实际上:

复制代码
W 与 x 的点积

NumPy实现:

python 复制代码
import numpy as np

W = np.array([
    0.5,
    1.2,
    0.8
])

X = np.array([
    100,
    80,
    60
])

b = 10

y = np.dot(W,X) + b

print(y)

十五、神经网络中的应用

一个神经元:

复制代码
z

=

W·X

+

b

然后:

复制代码
激活函数

例如:

复制代码
ReLU

Sigmoid

Tanh

整个神经网络:

本质上就是:

复制代码
矩阵点积

+

非线性函数

不断重复。


十六、批量数据点积

假设:

复制代码
X.shape

(1000,784)

表示:

复制代码
1000张图片

每张784个特征

权重:

复制代码
W.shape

(784,128)

计算:

复制代码
Z = X @ W

结果:

复制代码
(1000,128)

一次完成:

复制代码
1000个样本

128个神经元

的计算。


十七、性能对比

普通Python循环:

复制代码
for ...

复杂度高。


NumPy:

复制代码
A @ B

底层调用:

复制代码
BLAS

OpenBLAS

MKL

高性能数学库。

速度通常提升:

复制代码
几十倍

甚至上百倍

十八、矩阵点积与深度学习

现代深度学习训练过程中:

GPU大部分时间都在执行:

复制代码
矩阵乘法

例如:

复制代码
CNN

Transformer

BERT

GPT

本质都是:

复制代码
超大规模矩阵点积

因此:

复制代码
GPU算力

≈

矩阵乘法能力

十九、点积与余弦相似度

推荐系统经常使用:

复制代码
Cosine Similarity

公式:

复制代码
cosθ

=

A·B

/

(|A| × |B|)

NumPy实现:

python 复制代码
import numpy as np

A = np.array([1,2,3])
B = np.array([4,5,6])

similarity = (
    np.dot(A,B)
    /
    (
        np.linalg.norm(A)
        *
        np.linalg.norm(B)
    )
)

print(similarity)

输出:

复制代码
0.9746

说明:

复制代码
两个向量非常相似

二十、总结

矩阵点积是机器学习和深度学习最重要的基础运算之一。

核心思想:

复制代码
行与列做点积

数学规则:

复制代码
(m,n)

×

(n,k)

=

(m,k)

NumPy常用实现:

复制代码
np.dot(A,B)

或者:

复制代码
A @ B

应用场景:

复制代码
线性回归

逻辑回归

PCA

神经网络

Transformer

推荐系统

可以这样理解:

复制代码
机器学习中的"学习"

本质是在不断调整权重矩阵

而模型的预测过程

本质就是矩阵点积

掌握矩阵点积之后,你就真正迈进了机器学习和深度学习的大门。

相关推荐
江畔柳前堤16 小时前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
阿里云大数据AI技术17 小时前
分链路差异化设计的DSP准实时数仓|钛动科技基于阿里云实时计算 Flink 版 + DLF Paimon + EMR Serverless StarRocks 的实践
人工智能·flink
陕西企来客17 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
阿里云大数据AI技术17 小时前
从算力到智能体,面向 Agentic AI 的基础设施演进
人工智能·agent
hangyuekejiGEO18 小时前
GEO技术服务选型指南
大数据·人工智能·python
普通攻击往后拉18 小时前
Leetcode 206. 反转链表
算法·leetcode·链表
阿里云大数据AI技术18 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
维基框架18 小时前
GitHub源码处理提速 一趟扫描反而更慢
人工智能·github
冬奇Lab19 小时前
代码库知识库系列(05):向量检索 vs 知识图谱——加了调用图并没有变更好
人工智能
AKAMAI19 小时前
你的源服务器可能是你做出的最昂贵决定
运维·人工智能·云计算