🎯 学习目标

  • 理解向量、矩阵的基本概念
  • 掌握矩阵运算的核心操作
  • 了解特征值与特征向量
  • 学会使用NumPy进行线性代数运算
💡
为什么学习线性代数?

神经网络本质上是大量的矩阵运算。理解线性代数是理解深度学习原理的基础。

📐 向量基础

向量的定义

向量是有序的数字列表,可以表示方向和大小。

# 列向量 v = [1] [2] [3] # 行向量 v = [1, 2, 3] # NumPy表示 import numpy as np v = np.array([1, 2, 3])

向量运算

import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) # 加法 print(a + b) # [5, 7, 9] # 标量乘法 print(2 * a) # [2, 4, 6] # 点积(内积) print(np.dot(a, b)) # 32 # 模长(范数) print(np.linalg.norm(a)) # 3.741...

📊 矩阵基础

import numpy as np # 创建矩阵 A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 矩阵形状 print(A.shape) # (3, 3) # 矩阵转置 print(A.T) # 矩阵加法 B = np.ones((3, 3)) print(A + B) # 矩阵乘法(点积) print(np.dot(A, B)) # 或 print(A @ B) # Python 3.5+ # 矩阵的逆 A_inv = np.linalg.inv(A) # 行列式 det = np.linalg.det(A)

🔄 矩阵乘法图解

矩阵乘法

矩阵乘法是深度学习的核心运算。(m×n) × (n×p) = (m×p)

# 矩阵乘法规则 # A (m×n) * B (n×p) = C (m×p) A = np.array([[1, 2], # 2×2 [3, 4]]) B = np.array([[5, 6], # 2×2 [7, 8]]) C = A @ B # C = [[1*5+2*7, 1*6+2*8], # [3*5+4*7, 3*6+4*8]] # C = [[19, 22], # [43, 50]]

🔑 特征值与特征向量

📌
核心概念

对于方阵A,如果存在非零向量v和标量λ,使得 Av = λv,则λ是特征值,v是对应的特征向量。

import numpy as np A = np.array([[4, 2], [1, 3]]) # 计算特征值和特征向量 eigenvalues, eigenvectors = np.linalg.eig(A) print("特征值:", eigenvalues) print("特征向量:\n", eigenvectors) # 验证: A @ v = λ * v for i in range(len(eigenvalues)): v = eigenvectors[:, i] print(f"验证: A @ v{i} ≈ λ{i} * v{i}") print(np.allclose(A @ v, eigenvalues[i] * v))

📈 在深度学习中的应用

神经网络前向传播

# 单层神经网络 # y = Wx + b W = np.random.randn(10, 5) # 权重矩阵 x = np.random.randn(5, 1) # 输入向量 b = np.random.randn(10, 1) # 偏置 y = W @ x + b # 输出

批量处理

# 批量处理多个样本 # Y = XW + B X = np.random.randn(32, 5) # 32个样本 W = np.random.randn(5, 10) # 权重 B = np.random.randn(1, 10) # 偏置 Y = X @ W + B # 批量输出

📝 本节小结

  • • 向量和矩阵是AI计算的基本数据结构
  • • 矩阵乘法是神经网络的核心运算
  • • NumPy是Python中进行线性代数运算的标准库
  • • 理解线性代数有助于理解深度学习原理