矩阵乘法是神经网络、图形学、科学计算等领域的核心运算,用于高效处理线性变换和批量数据计算。以下是其数学定义、计算规则及实际应用的系统解析。
1. 数学定义
2. 计算步骤(示例)
3. 代码实现
(1) Python(NumPy)
import numpy as npA = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])# 矩阵乘法
C = np.dot(A, B) # 或 A @ B
print(C)
输出:
[[19 22][43 50]]
(2) 手动实现(Python)
def matrix_multiply(A, B):m = len(A)n = len(A[0])p = len(B[0])C = [[0] * p for _ in range(m)]for i in range(m):for j in range(p):for k in range(n):C[i][j] += A[i][k] * B[k][j]return CA = [[1, 2], [3, 4]]
B = [[5, 6], [7, 8]]
print(matrix_multiply(A, B))
4. 关键性质
5. 在神经网络中的应用
(1) 前向传播
(2) 批量处理
一次计算多个样本(高效利用硬件并行性):
# X形状:(100, 784), W形状:(784, 128) → 输出形状:(100, 128)
Z = np.dot(X, W) + b
6. 常见误区与验证
(1) 维度匹配
(2) 逐元素乘法 vs 矩阵乘法
- 逐元素乘法(Hadamard积):
A * B
(要求同形状)。 - 矩阵乘法:
A @ B
或np.dot(A, B)
(遵循维度规则)。
7. 性能优化
(1) 使用BLAS库
NumPy底层调用BLAS(如OpenBLAS、MKL)加速矩阵运算。
(2) GPU加速
import torchA_gpu = torch.tensor(A, device='cuda')
B_gpu = torch.tensor(B, device='cuda')
C_gpu = torch.mm(A_gpu, B_gpu) # 比CPU快数十倍
(3) 稀疏矩阵优化
对大量零元素的矩阵(如自然语言处理的词向量),使用稀疏格式(如CSR)节省内存。
8. 数学扩展
(1) 张量乘法
高阶张量(如3D)的乘法需指定收缩轴,例如:
# 三维张量乘法(einsum表示法)
C = np.einsum('ijk,kl->ijl', A_3d, B_2d)
(2) 外积(Outer Product)
9. 总结
- 核心规则:行点积列,维度需匹配。
- 应用场景:神经网络权重计算、图像变换、推荐系统。
- 优化方向:并行计算、硬件加速、稀疏化处理。
矩阵乘法是机器学习的“基石运算”,掌握其原理和实现能深入理解模型底层运作!