矩陣乘法是神經網絡、圖形學、科學計算等領域的核心運算,用于高效處理線性變換和批量數據計算。以下是其數學定義、計算規則及實際應用的系統解析。
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. 總結
- 核心規則:行點積列,維度需匹配。
- 應用場景:神經網絡權重計算、圖像變換、推薦系統。
- 優化方向:并行計算、硬件加速、稀疏化處理。
矩陣乘法是機器學習的“基石運算”,掌握其原理和實現能深入理解模型底層運作!