Skip to content

线性代数基础

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

一、向量 (Vector)

1.1 什么是向量?

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

x=[x1x2xn]Rn

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

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

1.2 向量运算

加法:对应元素相加

a+b=[a1+b1a2+b2]

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

λa=[λa1λa2]

点积(内积)

ab=i=1naibi=a1b1+a2b2++anbn

点积的几何意义:

ab=||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×nm 行,n 列):

W=[w11w12w1nw21w22w2nwm1wm2wmn]Rm×n

3.2 矩阵乘法

C=AB,ARm×k, BRk×nCRm×ncij=l=1kailblj

💡 神经网络的本质就是矩阵乘法:每一层 输出 = 激活函数(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 中的应用
向量点积ab=aibiAttention 相似度
L2 范数|x|2=xi2权重正则化,梯度裁剪
矩阵乘法cij=lailblj神经网络线性层
特征分解Av=λvPCA 降维

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