🎓 总站 🏠 本课目录 01 图像基础 02 空间滤波 03 频率滤波 04 彩色处理 05 神经网络 06 表征学习 07 Transformer 08 CNN
视觉计算 · 第5章

回顾:神经网络

从神经元、感知机到多层感知机(MLP);激活函数、前向传播、损失函数、反向传播(BP)与梯度下降,以及归一化与过拟合等深度学习基石。

📚 学习进度
0%

🎯学习目标

  • 理解机器学习中的数据、先验与假设,掌握经验风险与期望风险的关系;
  • 掌握神经元、感知机与多层感知机(MLP)的结构;
  • 熟悉 Sigmoid / Tanh / ReLU 等激活函数及其优缺点;
  • 理解前向传播、损失函数(交叉熵)与反向传播(BP)算法;
  • 掌握梯度下降、批大小(batch)、学习率,以及过拟合与正则化、归一化层。

1机器学习基础:数据、先验与假设

机器学习的目标是从数据中、借助先验(priors),在一族假设(hypotheses)中找到最能解释数据的模型。深度网络就是其中一类高度灵活的假设族。

💡 一句话理解深度网络逐层把数据点变换为新的表示:每一层都是数据的一种表征(representation),前向方向 = 由观测数据走向潜在嵌入。

蒙特卡洛(Monte Carlo)估计期望

很多目标都写成期望 𝔼x~p[f(X)]。无法解析积分时,用采样平均近似:

1. 从分布 p(x) 抽取 N 个样本 x₁,…,x_N
2. 计算 f̂ = (1/N) Σ f(xᵢ)
3. 返回 f̂ 作为 𝔼[f(X)] 的近似

2神经元与感知机

一个人工神经元先对输入做线性加权求和(含偏置 b),再经过一个非线性激活函数得到输出:

z = w₁x₁ + w₂x₂ + … + wₙxₙ + b    (线性)
a = σ(z)                          (非线性激活)

只含一个神经元、激活为阶跃函数的模型即感知机(Perceptron),只能解决线性可分问题(无法表示异或 XOR)。把许多神经元堆叠成层,就得到深度网络。

x₁ x₂ x₃ w₁ w₂ w₃ Σ + bσ() a 输出
图1 · 单个神经元:线性加权求和 → 非线性激活

3激活函数 ⭐(核心考点)

非线性激活是深度网络表达力的来源——没有它,多层线性层等价于单层线性层。点击卡片翻转查看要点:

📈

Sigmoid

σ(x)=1/(1+e⁻ˣ)
输出 (0,1),可作概率。缺点:两端饱和导致梯度消失,输出非零中心
〰️

Tanh

tanh(x)
输出 (-1,1),零中心,收敛比 Sigmoid 快。缺点:仍会饱和、梯度消失
📐

ReLU

max(0,x)
正区间梯度恒为 1,缓解梯度消失、计算快、稀疏激活。缺点:负区间梯度为 0,可能"神经元死亡"
🍃

Leaky ReLU

max(0.01x,x)
负区间给一个小斜率,缓解死亡 ReLU 问题。
Sigmoid Tanh ReLU
图2 · 三种激活函数曲线对比

4前向传播与多层感知机(MLP)

MLP 由输入层、若干隐藏层、输出层组成:每一层做一次线性变换 + 非线性激活,逐层把数据映射到下一层表示。

第 l 层:  a⁽ˡ⁾ = σ( W⁽ˡ⁾ a⁽ˡ⁻¹⁾ + b⁽ˡ⁾ )
输入:    a⁽⁰⁾ = x
输出:    ŷ = softmax( a⁽ᴸ⁾ )
⭐ 快激活 vs 慢参数前向传播时,激活值(activations)随每个输入快速变化;而参数(weights)在训练中缓慢更新。这就是 "Fast Activations vs Slow Parameters"。
输入层 隐藏层 输出层
图3 · 多层感知机(MLP):输入 → 隐藏层 → 输出,逐层前向传播

5损失函数:经验风险近似期望风险

真实分布 p(x,y) 未知,我们用 i.i.d. 采样得到训练集 {(xₙ,yₙ)}。理论目标是最小化期望风险 𝔼p(x,y)[ℒ(ŷ,y)],实践中只能最小化经验风险

ℒ = (1/N) Σₙ ℒ(ŷ(xₙ), yₙ)      ← 经验风险(训练集平均损失)

分类常用交叉熵损失:网络输出各类别概率,取真实类别的 −log(prob) 作为损失。预测越准、该项越接近 0。

💡 I.I.D. 与 OOD训练假设数据独立同分布(I.I.D.);当测试数据来自不同分布时即分布外(OOD),模型性能往往下降。
损失用途说明
交叉熵 (Cross-Entropy)分类−Σ y·log(ŷ),配合 softmax
均方误差 (MSE)回归(ŷ−y)² 的平均

6反向传播与梯度下降 ⭐

训练一个深度网络分类器的流程,本质是用梯度下降反复迭代:

Forward:  逐层计算激活值 a⁽ˡ⁾,最终得到损失 ℒ
Backward: 由 ℒ 出发,用链式法则逐层回传梯度 ∂ℒ/∂W
Update:   W ← W − η · ∂ℒ/∂W      (η 为学习率)
… 重复以上三步
⭐ BP 算法三步前向(Forward)算损失 → 反向(Backward)用链式法则求各层梯度 → 更新(Update)沿负梯度方向调整参数。反复迭代直到收敛。
输入 x 隐藏层 输出 ŷ 损失 ℒ → Forward(算激活/损失) ← Backward(回传梯度)
图4 · 反向传播:前向算损失,反向回传梯度

批大小(batch)与学习率

超参数含义影响
学习率 η每步更新的步长太大震荡/发散,太小收敛慢
批大小 batch每次估计梯度用的样本数大批稳定但费内存,小批噪声大但泛化常更好

常见有批量梯度下降、随机梯度下降(SGD)、小批量(mini-batch)三种;小批量是工程实践主流。

7归一化层

归一化层基于一群神经元的取值,把激活值压缩到更优的数值范围,有利于训练稳定与加速收敛。

类型归一化对象
数据归一化 (Data Norm)每个变量在数据集上变成零均值、单位方差
批归一化 (BatchNorm)对激活张量的一列(同一特征跨样本)做标准化:减均值、除方差
层归一化 (LayerNorm)对激活张量的一行(同一样本跨特征)做标准化
💡 张量表示每一层都是数据的一种表示;批处理时把多个样本堆叠为张量(如 batch size = 3)一起前向,提高并行效率。

8过拟合与正则化

过拟合:模型在训练集表现好,但在未见数据(测试集 / OOD)表现差——把噪声也"背"了下来。常用对策:

⚖️

权重正则化

L2 / L1 惩罚大权重,偏好更简单的模型(奥卡姆剃刀)。

🎲

Dropout

训练时随机丢弃部分神经元,减少共适应、增强泛化。

🛑

提前停止

验证集误差回升时停止训练,避免继续拟合噪声。

⚠️ 欠拟合 vs 过拟合欠拟合 = 模型太简单,训练/测试都差;过拟合 = 模型太复杂,训练好但测试差。需在两者间权衡(偏差-方差权衡)。

重点例题

例题1:为什么 ReLU 比 Sigmoid 更适合深层网络? 答:① ReLU 在正区间梯度恒为 1,不会饱和,有效缓解深层网络的梯度消失;② 计算简单(只需比较与取最大);③ 带来稀疏激活。Sigmoid 两端饱和,梯度趋近 0,多层连乘后梯度迅速衰减,难以训练深层网络。
例题2:写出 BP 算法的三个步骤及作用
Forward :逐层算激活,得到预测 ŷ 与损失 ℒ
Backward:从 ℒ 出发,链式法则逐层求 ∂ℒ/∂W
Update  :W ← W − η·∂ℒ/∂W(η 学习率)
关键点:反向传播是链式求导的高效实现;梯度下降沿负梯度方向更新使损失下降。
例题3:交叉熵损失如何计算? 网络对各类别输出概率 ŷ,真实标签 one-hot 为 y。交叉熵 ℒ = −Σ yᵢ·log(ŷᵢ),因 y 只有真实类为 1,故等于真实类的 −log(prob)。预测概率越接近 1,损失越接近 0。

🎯自测(点击展开)

没有激活函数(非线性)的多层网络等价于什么?
等价于单层线性变换——多个线性层连乘仍是线性,无法表达复杂的非线性映射。
Sigmoid 的主要缺点是什么?
两端饱和导致梯度消失;输出非零中心,影响收敛速度。
经验风险与期望风险是什么关系?
期望风险是在真实分布上的平均损失(未知);经验风险是在训练集上的平均损失,用于近似期望风险。
学习率太大或太小分别会怎样?
太大:更新震荡甚至发散;太小:收敛非常慢,可能陷在局部区域。
BatchNorm 和 LayerNorm 的区别?
BatchNorm 对激活张量的一列(同一特征跨样本)标准化;LayerNorm 对一行(同一样本跨特征)标准化。
列举两种缓解过拟合的方法。
L2/L1 正则化、Dropout、提前停止、数据增强等。

📝强化题库

选择题点选即时判分;填空题输入后"检查"或"显示答案"。

已答 0/0答对 0正确率
已答 0/0答对 0