深度学习预备知识:数据操作、线性代数与微积分基础
深度学习预备知识:数据操作、线性代数与微积分基础
作为入门深度学习的第一步,扎实的数学和数据操作基础必不可少。这篇笔记整理了深度学习核心的预备知识,涵盖数据结构、线性代数、降维方法和微积分等内容,是入门的“打底”内容。
一、数据操作:N维数组(张量)是核心
在机器学习和神经网络中,N维数组(也称为张量) 是承载数据的核心结构。不同维度的张量对应不同的应用场景:
| 维度 | 名称 | 应用场景示例 |
|---|---|---|
| 0-d | 标量 | 表示一个类别(如“猫”“狗”的标签) |
| 1-d | 向量 | 一个样本的特征向量(如一个人的身高、体重等特征) |
| 2-d | 矩阵 | 样本-特征矩阵(多行样本+多列特征) |
| 3-d | 3维张量 | RGB图片(宽 × 高 × 颜色通道) |
| 4-d | 4维张量 | RGB图片批量(批量大小 × 宽 × 高 × 通道) |
| 5-d | 5维张量 | 视频批量(批量大小 × 时间 × 宽 × 高 × 通道) |
张量元素的访问(以4×4矩阵为例)
对于一个4×4的矩阵,我们可以通过索引灵活访问元素、行、列或子区域:
- 单个元素:
[1,2]→ 比如取到值7(注:索引规则依工具而定,通常从0或1开始) - 整行:
[1,:]→ 访问第1行的所有列,比如得到(5,6,7,8) - 整列:
[:,1]→ 访问第1列的所有行,比如得到(2,6,10,14) - 子区域:
[1:3,1:](左闭右开)→ 取第1-2行、第1列之后的区域,得到(6,7,8,10,11,12)[:,1:3,:2](步长)→ 每3行取一次、每2列取一次,得到(1,3,13,15)
二、线性代数:标量、向量与矩阵运算
线性代数是深度学习的“数学骨架”,核心是标量、向量、矩阵的操作。
1. 标量(0维张量)
标量是单个数值,基础操作包括:
- 简单运算: C = a + b C = a+b C=a+b、 c = a ⋅ b c=a\cdot b c=a⋅b、 c = sin a c=\sin a c=sina
- 长度(绝对值):
∣ a ∣ = { a i f a > 0 − a o t h e r w i s e |a|=\begin{cases}a & if\ a>0 \\ -a & otherwise\end{cases} ∣a∣={a−aif a>0otherwise - 不等式性质: ∣ a + b ∣ ≤ ∣ a ∣ + ∣ b ∣ |a+b|≤|a|+|b| ∣a+b∣≤∣a∣+∣b∣、 ∣ a ⋅ b ∣ = ∣ a ∣ ⋅ ∣ b ∣ |a\cdot b|=|a|\cdot |b| ∣a⋅b∣=∣a∣⋅∣b∣
2. 向量(1维张量)
向量是有序的数值集合,操作包括:
- 逐元素运算:
- 加法: c = a + b c = a+b c=a+b( c i = a i + b i c_i = a_i + b_i ci=ai+bi)
- 乘法: c = a ⋅ b c = a\cdot b c=a⋅b( c i = a i b i c_i = a_i b_i ci=aibi)
- 函数映射: c = sin a c = \sin a c=sina( c i = sin a i c_i = \sin a_i ci=sinai)
- 长度(L2范数):
∣ ∣ a ∣ ∣ 2 = [ ∑ i n a i 2 ] 1 2 ||a||_2 = \left[\sum_{i}^{n} a_i^2\right]^{\frac{1}{2}} ∣∣a∣∣2=[i∑nai2]21
性质: ∣ ∣ a ∣ ∣ ≥ 0 ||a|| ≥ 0 ∣∣a∣∣≥0、 ∣ ∣ a + b ∣ ∣ ≤ ∣ ∣ a ∣ ∣ + ∣ ∣ b ∣ ∣ ||a+b|| ≤ ||a|| + ||b|| ∣∣a+b∣∣≤∣∣a∣∣+∣∣b∣∣、 ∣ ∣ a ⋅ b ∣ ∣ ≤ ∣ a ∣ ⋅ ∣ ∣ b ∣ ∣ ||a\cdot b|| ≤ |a| \cdot ||b|| ∣∣a⋅b∣∣≤∣a∣⋅∣∣b∣∣ - 点乘:两个向量的对应元素相乘再求和
a T b = ∑ i n a i b i a^T b = \sum_{i}^{n} a_i b_i aTb=i∑naibi - 正交:若两个向量点乘为0,则它们正交
a T b = ∑ i n a i b i = 0 a^T b = \sum_{i}^{n} a_i b_i = 0 aTb=i∑naibi=0
3. 矩阵(2维张量)
矩阵是二维的数值表格,操作包括:
- 逐元素运算:
- 加法: C = A + B C = A+B C=A+B( C i j = A i j + B i j C_{ij} = A_{ij} + B_{ij} Cij=Aij+Bij)
- 数乘: C = α ⋅ B C = \alpha \cdot B C=α⋅B( C i j = α B i j C_{ij} = \alpha B_{ij} Cij=αBij)
- 函数映射: C = sin A C = \sin A C=sinA( C i j = sin A i j C_{ij} = \sin A_{ij} Cij=sinAij)
- 矩阵乘法:
- 矩阵×向量: c = A b c = Ab c=Ab( c i = ∑ j n A i j b j c_i = \sum_{j}^{n} A_{ij} b_j ci=∑jnAijbj)
- 矩阵×矩阵: C = A B C = AB C=AB( C i k = ∑ j n A i j B j k C_{ik} = \sum_{j}^{n} A_{ij} B_{jk} Cik=∑jnAijBjk)
三、降维方法:高维数据的简化
深度学习中常处理高维数据,降维是关键步骤,常见方法有3类:
1. 聚合降维(Aggregation)
通过统计聚合操作(求和、平均、最大/最小值)直接降低维度,比如对图片的像素求平均得到一个标量。
2. 投影降维(Projection)
通过变换映射将高维数据投射到低维空间:
- 线性变换:如PCA(主成分分析),比如将100维数据投影到3维,保留主要信息
- 非线性变换:如t-SNE,用于高维数据可视化(比如把MNIST手写数字降到2D展示)
3. 特征选择降维(Feature Selection)
直接删除不重要的特征列:
- 删去方差接近0的特征(无变化的数据,无区分度)
- 用统计方法(如卡方检验)筛选核心特征
四、范数:衡量向量的“大小”
范数是将向量(或矩阵)映射为非负标量的函数,核心作用是量化向量的“模长”或矩阵的“复杂度”,是深度学习中正则化、距离度量、优化目标的核心工具。一个函数 f ( x ) f(\boldsymbol{x}) f(x) 要成为范数,必须满足以下3个刚性性质:
- 缩放性:
f
(
α
x
)
=
∣
α
∣
⋅
f
(
x
)
f(\alpha \boldsymbol{x}) = |\alpha| \cdot f(\boldsymbol{x})
f(αx)=∣α∣⋅f(x)(
α
\alpha
α 为任意常数)
含义:向量缩放 ∣ α ∣ |\alpha| ∣α∣ 倍,其范数也缩放 ∣ α ∣ |\alpha| ∣α∣ 倍,保证范数与向量的缩放比例一致。 - 三角不等式:
f
(
x
+
y
)
≤
f
(
x
)
+
f
(
y
)
f(\boldsymbol{x}+\boldsymbol{y}) \leq f(\boldsymbol{x})+f(\boldsymbol{y})
f(x+y)≤f(x)+f(y)
含义:两个向量和的范数,不大于两个向量范数的和,对应几何中的“三角形两边之和大于第三边”。 - 非负性:
f
(
x
)
≥
0
f(\boldsymbol{x}) \geq 0
f(x)≥0,且当且仅当
x
=
0
\boldsymbol{x}=\boldsymbol{0}
x=0(零向量)时,
f
(
x
)
=
0
f(\boldsymbol{x})=0
f(x)=0
含义:范数的结果是一个非负数,只有零向量的范数为0,保证范数能有效衡量“大小”。
1. 常见的 L-P 范数
对于
n
n
n 维向量
X
=
(
x
1
,
x
2
,
⋯
,
x
n
)
\boldsymbol{X}=(x_1,x_2,\cdots,x_n)
X=(x1,x2,⋯,xn),L-P 范数的通用定义为:
L
p
=
∣
∣
X
∣
∣
p
=
[
∑
i
=
1
n
∣
x
i
∣
p
]
1
p
L_p = ||\boldsymbol{X}||_p = \left[\sum_{i=1}^{n} |x_i|^p\right]^{\frac{1}{p}}
Lp=∣∣X∣∣p=[i=1∑n∣xi∣p]p1
其中
p
≥
1
p\geq1
p≥1,不同的
p
p
p 值对应不同的范数,各有其几何意义和应用场景。
(1)L1 范数(曼哈顿距离)
当
p
=
1
p=1
p=1 时,得到 L1 范数,其定义为:
∣
∣
X
∣
∣
1
=
∑
i
=
1
n
∣
x
i
∣
||\boldsymbol{X}||_1 = \sum_{i=1}^{n} |x_i|
∣∣X∣∣1=i=1∑n∣xi∣
- 几何意义:在二维空间中,L1 范数对应两点沿坐标轴的“直角距离”(如从 ( x 1 , y 1 ) (x_1,y_1) (x1,y1) 到 ( x 2 , y 2 ) (x_2,y_2) (x2,y2) 的距离为 ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ |x_1-x_2|+|y_1-y_2| ∣x1−x2∣+∣y1−y2∣),因类似曼哈顿街区的路径而得名。
- 核心特点:对向量中的异常值敏感度较低,且具有稀疏性诱导能力——优化过程中会倾向于让向量的部分元素变为 0,保留关键元素。
- 深度学习应用:
- L1 正则化:在损失函数中添加 L1 范数项,迫使模型的部分权重变为 0,实现特征选择,简化模型结构。
- 鲁棒性模型:处理含噪声或离群点的数据时,L1 范数能降低异常值对模型的干扰。
(2)L2 范数(欧氏距离)
当
p
=
2
p=2
p=2 时,得到 L2 范数,其定义为:
∣
∣
X
∣
∣
2
=
∑
i
=
1
n
x
i
2
||\boldsymbol{X}||_2 = \sqrt{\sum_{i=1}^{n} x_i^2}
∣∣X∣∣2=i=1∑nxi2
- 几何意义:对应二维/三维空间中两点的直线距离,是最直观的“向量长度”度量方式。
- 核心特点:对向量中的异常值敏感度较高(平方运算会放大异常值的影响),优化过程中会让向量的所有元素均匀趋近于 0(而非直接置 0)。
- 深度学习应用:
- L2 正则化(权重衰减):在损失函数中添加 L2 范数项,限制模型权重的大小,防止过拟合,使模型更稳定。
- 距离度量:KNN、K-Means 等算法中,用 L2 范数计算样本间的相似度。
- 梯度下降优化:通过计算损失函数的 L2 范数,衡量梯度的大小,调整学习率。
(3)L∞ 范数(无穷范数)
当
p
→
∞
p\to\infty
p→∞ 时,L-P 范数收敛到 L∞ 范数,其定义为:
∣
∣
X
∣
∣
∞
=
max
(
∣
x
1
∣
,
∣
x
2
∣
,
…
,
∣
x
n
∣
)
||\boldsymbol{X}||_\infty = \max(|x_1|,|x_2|,\dots,|x_n|)
∣∣X∣∣∞=max(∣x1∣,∣x2∣,…,∣xn∣)
- 几何意义:L∞ 范数只关注向量中绝对值最大的元素,忽略其他元素的影响,对应二维空间中以原点为中心的“正方形”距离边界。
- 核心特点:极端关注向量的“峰值”,能快速衡量向量的最大幅值。
- 深度学习应用:
- 对抗性攻击:衡量模型输入的最大扰动幅度,评估模型的鲁棒性。
- 梯度裁剪:限制梯度的 L∞ 范数,防止梯度爆炸。
2. 矩阵的范数
范数的概念可扩展到矩阵,深度学习中最常用的是 F-范数(弗罗贝尼乌斯范数),对于
m
×
n
m\times n
m×n 矩阵
A
\boldsymbol{A}
A,其定义为:
∣
∣
A
∣
∣
F
=
∑
i
=
1
m
∑
j
=
1
n
A
i
j
2
||\boldsymbol{A}||_F = \sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n} A_{ij}^2}
∣∣A∣∣F=i=1∑mj=1∑nAij2
- 核心特点:等价于将矩阵拉伸为一个长向量后计算 L2 范数,满足范数的三个基本性质。
- 深度学习应用:
- 矩阵近似:衡量原始矩阵与低秩矩阵的差异,用于主成分分析(PCA)、奇异值分解(SVD)等降维算法。
- 模型参数正则化:限制神经网络中权重矩阵的 F-范数,防止参数过大导致的过拟合。
3. 范数的核心应用总结
| 范数类型 | 核心特点 | 典型应用场景 |
|---|---|---|
| L1 范数 | 诱导稀疏性、对异常值鲁棒 | 特征选择、L1 正则化 |
| L2 范数 | 衡量欧氏长度、平滑权重 | 权重衰减、距离度量 |
| L∞ 范数 | 关注最大幅值 | 梯度裁剪、对抗性攻击评估 |
| F-范数 | 矩阵的整体大小度量 | 低秩矩阵近似、权重正则化 |
五、微积分:深度学习的“优化工具”
微积分用于求解函数的变化率,是梯度下降等优化算法的基础。
1. 函数
函数是“输入→输出”的映射关系,比如深度学习中常用的线性函数:
y
=
w
x
+
b
y = wx + b
y=wx+b
(
w
w
w是权重,
b
b
b是偏置)
2. 导数与偏导数
- 导数:函数在某一点的斜率,衡量单变量函数的变化率
- 偏导数:针对多元函数(如
z
=
x
2
+
y
2
z = x^2 + y^2
z=x2+y2),对其中一个变量求导时,将其他变量视为常数
示例: ∂ z ∂ x = 2 x \frac{\partial z}{\partial x} = 2x ∂x∂z=2x, ∂ z ∂ y = 2 y \frac{\partial z}{\partial y} = 2y ∂y∂z=2y
3. 梯度(Gradient)
梯度是多元函数的偏导数组成的向量,表示函数变化最快的方向:
设输入是n维向量
X
=
[
x
1
,
x
2
,
⋯
,
x
n
]
T
X = [x_1,x_2,\cdots,x_n]^T
X=[x1,x2,⋯,xn]T,输出是标量,则梯度为:
∇
X
f
(
x
)
=
[
∂
f
(
x
)
∂
x
1
,
∂
f
(
x
)
∂
x
2
,
⋯
,
∂
f
(
x
)
∂
x
n
]
T
\nabla_X f(x) = \left[\frac{\partial f(x)}{\partial x_1}, \frac{\partial f(x)}{\partial x_2}, \cdots, \frac{\partial f(x)}{\partial x_n}\right]^T
∇Xf(x)=[∂x1∂f(x),∂x2∂f(x),⋯,∂xn∂f(x)]T
4. 链式法则
用于求解复合函数的导数(深度学习反向传播的核心):
若
y
=
f
(
u
)
y=f(u)
y=f(u)且
u
=
g
(
x
)
u=g(x)
u=g(x)都可微,则:
d
y
d
x
=
d
y
d
u
⋅
d
u
d
x
\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}
dxdy=dudy⋅dxdu
1692

被折叠的 条评论
为什么被折叠?



