Skip to content

线性代数基础 ​

线性代数是深度学习的核心语言。理解向量和矩阵,就理解了神经网络的计算本质。

一、向量 (Vector) ​

1.1 什么是向量? ​

向量是一个有序的数字列表,用来表示方向和大小。在机器学习中,每一个样本都可以用一个向量来表示。

x=[x1x2⋮xn]∈Rn

直觉理解:一个房子的特征向量可能是:

x=[120(面积)3(卧室数)2(楼层)5(建成年份)]

1.2 向量运算 ​

加法:对应元素相加

a+b=[a1+b1a2+b2⋮]

数量乘法:每个元素乘以标量

λa=[λa1λa2⋮]

点积(内积):

a⋅b=∑i=1naibi=a1b1+a2b2+⋯+anbn

点积的几何意义:

a⋅b=||a||⋅||b||⋅cos⁡θ
  • 点积 > 0:两向量夹角 < 90°(方向相近)
  • 点积 = 0:两向量正交(相互独立)
  • 点积 < 0:两向量夹角 > 90°(方向相反)

💡 在 Attention 机制中:Query 和 Key 的点积就是衡量"相关程度",点积越大代表这两个词越相关!

二、向量范数 (Vector Norm) ​

范数是衡量向量"大小"或"长度"的方式。

2.1 L1 范数(曼哈顿距离) ​

||x||1=∑i=1n|xi|=|x1|+|x2|+⋯+|xn|
  • 几何意义:在城市街道中从一点到另一点的距离
  • 应用:L1 正则化(Lasso),产生稀疏解(很多参数为 0)

2.2 L2 范数(欧氏距离) ​

||x||2=∑i=1nxi2=x12+x22+⋯+xn2
  • 几何意义:两点之间的直线距离
  • 应用:L2 正则化(Ridge),使参数趋向于小但不为 0

2.3 Lp 范数(通用形式) ​

||x||p=(∑i=1n|xi|p)1/p

2.4 代码实现 ​

python
import numpy as np

x = np.array([3, 4])

# L1 范数
l1 = np.linalg.norm(x, ord=1)  # 3 + 4 = 7
print(f"L1 范数: {l1}")

# L2 范数
l2 = np.linalg.norm(x, ord=2)  # sqrt(9 + 16) = 5
print(f"L2 范数: {l2}")

# 向量归一化(单位向量)
x_normalized = x / l2
print(f"归一化向量: {x_normalized}")  # [0.6, 0.8]

三、矩阵 (Matrix) ​

3.1 矩阵的形状 ​

矩阵是一个二维数字数组,形状为 m×n(m 行,n 列):

W=[w11w12⋯w1nw21w22⋯w2n⋮⋮⋱⋮wm1wm2⋯wmn]∈Rm×n

3.2 矩阵乘法 ​

C=A⋅B,A∈Rm×k, B∈Rk×n⇒C∈Rm×ncij=∑l=1kail⋅blj

💡 神经网络的本质就是矩阵乘法:每一层 输出 = 激活函数(W × 输入 + b),其中 W 是权重矩阵,b 是偏置向量。

python
import numpy as np

# 神经网络一层的前向传播
X = np.array([[1, 2, 3]])      # 输入:shape (1, 3)
W = np.random.randn(3, 4)      # 权重矩阵:shape (3, 4)
b = np.zeros(4)                # 偏置:shape (4,)

output = np.dot(X, W) + b      # 输出:shape (1, 4)
print(output.shape)            # (1, 4)

3.3 转置 ​

(AT)ij=Aji

性质:(AB)T=BTAT

3.4 重要矩阵类型 ​

类型定义应用
单位矩阵 I对角线为 1,其余为 0AI=A
对称矩阵A=AT协方差矩阵,海森矩阵
正交矩阵ATA=IPCA 的旋转矩阵

四、特征值与特征向量 ​

4.1 定义 ​

对于方阵 A,若存在非零向量 v 和标量 λ 使得:

Av=λv

则称 λ 为特征值(eigenvalue),v 为对应的特征向量(eigenvector)。

直觉理解:特征向量是矩阵变换不改变方向的特殊向量,特征值是该方向上的伸缩比例。

4.2 应用:主成分分析(PCA) ​

PCA 通过计算数据协方差矩阵的特征值和特征向量,找到数据方差最大的方向,从而实现降维:

  1. 对数据中心化(减去均值)
  2. 计算协方差矩阵 C=1nXTX
  3. 对 C 进行特征值分解,取前 k 个最大特征值对应的特征向量
  4. 将数据投影到这 k 个方向
python
import numpy as np
from sklearn.decomposition import PCA

# 生成高维数据
X = np.random.randn(100, 10)  # 100 个样本,10 个特征

# PCA 降到 2 维
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)

print(f"原始形状: {X.shape}")           # (100, 10)
print(f"降维后形状: {X_reduced.shape}") # (100, 2)
print(f"各成分解释的方差比: {pca.explained_variance_ratio_}")

五、广播机制 (Broadcasting) ​

NumPy 的广播机制允许不同形状的数组进行运算,这在深度学习中非常常用:

python
import numpy as np

# 矩阵加向量(广播)
A = np.ones((3, 4))   # shape: (3, 4)
b = np.array([1, 2, 3, 4])  # shape: (4,)

C = A + b  # b 自动广播到 (3, 4)
print(C.shape)  # (3, 4)

# 批量归一化(神经网络中常用)
X = np.random.randn(32, 128)  # batch_size=32, hidden_dim=128
mu = X.mean(axis=0)           # shape: (128,)
X_normalized = X - mu         # 广播减均值

总结 ​

概念核心公式AI 中的应用
向量点积a⋅b=∑aibiAttention 相似度
L2 范数|x|2=∑xi2权重正则化,梯度裁剪
矩阵乘法cij=∑lailblj神经网络线性层
特征分解Av=λvPCA 降维

AI 知识体系 — 从机器学习到大语言模型