📘 西瓜书笔记 - 5.4 全局最小与局部极小:理解误差函数地形
在神经网络训练过程中,我们往往将训练目标表示为某种形式的损失函数或误差函数 E(w,θ)E(w, \theta),希望通过不断优化参数 ww、阈值 θ\theta 使其值最小。然而,由于该函数高度非线性且维度极高,我们面对的不再是简单的单峰函数,而是复杂的“误差地形”。本节,我们将探讨该地形中的两种关键点——局部极小与全局最小。
✅ 什么是全局最小与局部极小?
设误差函数为 E(w,θ)E(w, \theta),则:
-
局部极小(Local Minimum): 存在某邻域 ϵ>0\epsilon > 0,使得对任意参数组合 (w,θ)(w, \theta) 满足:
∥(w,θ)−(w∗,θ∗)∥≤ϵ⇒E(w,θ)≥E(w∗,θ∗)\| (w, \theta) - (w^*, \theta^*) \| \le \epsilon \Rightarrow E(w, \theta) \ge E(w^*, \theta^*)则称 (w∗,θ∗)(w^*, \theta^*) 是局部极小点。
-
全局最小(Global Minimum): 对所有参数组合 (w,θ)(w, \theta),都有:
E(w,θ)≥E(w∗,θ∗)E(w, \theta) \ge E(w^*, \theta^*)则称 (w∗,θ∗)(w^*, \theta^*) 是全局最小点。
📌 图 5.10 中形象展示了误差函数中存在多个局部极小,仅有一个为全局最小。
✅ 理论理解
-
神经网络训练的目标是最小化误差函数 E(w,θ)E(w, \theta)E(w,θ),即损失越小越好;
-
这是一个参数寻优问题,目标是找到最优参数组合使得误差最小。
💼 实战理解(OpenAI、Google Brain)
-
在大型语言模型(如 GPT-4、PaLM)训练中,训练过程就是最小化 cross-entropy loss;
-
多卡并行时需在分布式参数空间中协同优化,Tensor Parallel + Pipeline Parallel + ZeRO;
-
Google 在 TPU 上训练模型时,使用的是 大规模优化器(如 LAMB) 以确保误差下降过程稳定、收敛快。
🎯 为什么这很重要?
-
神经网络训练的目标是最小化损失;
-
若陷入局部极小,虽然看似训练“收敛”,但可能远离最优解;
-
真正理想的是到达误差函数的全局最小值。
✅ 理论理解
-
局部极小点是在一个邻域内误差函数值最小的点;
-
全局最小点是在整个参数空间误差最小的点;
-
所有全局最小一定是局部极小,反之不成立。
💼 实战理解(百度 Paddle、阿里 PAI、英伟达)
-
英伟达在训练 GAN 时发现 loss landscape 中存在大量局部极小,特别是生成器的 loss 更容易振荡;
-
百度自动驾驶的感知模块模型需要鲁棒性,通常在优化过程中使用多个 checkpoint,避免最终收敛到不理想的局部解;
-
阿里达摩院在 Recommendation CTR 模型优化中引入「multi-loss」机制缓解收敛到次优局部解的问题。
📉 梯度下降与极小值
神经网络常用的参数更新方法是梯度下降法:
-
每次沿负梯度方向迭代优化参数;
-
若误差函数在当前点的梯度为 0,更新量为 0,训练停止;
-
此时,所处位置即为局部极小点(或鞍点/驻点);
-
若误差函数仅有一个极小点,那它既是局部也是全局最小,训练效果最优。
✅ 理论理解
-
梯度为零意味着当前点为驻点(可能是极小、极大或鞍点);
-
若周围误差函数值都更大,则为局部极小;
-
局部极小可能有多个,但全局最小只能有一个。
💼 实战理解(谷歌 DeepMind、Meta FAIR)
-
DeepMind 在 AlphaZero 训练中观察到:即便 loss 已经非常低(趋近于局部极小),模型策略仍未收敛;
-
Meta 在训练稠密神经网络时发现,很多参数空间中的局部极小性能差异不大,甚至“坏极小”也能得到良好泛化;
-
实际部署中更关心的是“泛化最优”而非“数学意义下的最优”。
✅ 理论理解
-
梯度下降法沿负梯度方向迭代优化;
-
若梯度为零且为局部极小点,则训练将停在此处;
-
如果误差函数只有一个极小点,它就是全局最小。
💼 实战理解(字节跳动、微软研究院)
-
字节跳动在训练多塔结构的推荐系统时,使用 warm-up 策略避免早期陷入局部极小;
-
微软研究院的 DeepSpeed 框架提供 mixed precision + 迁移初始化技巧,使模型能避开前期不良最小值;
-
在推荐/广告系统中,early stopping 被用来判断“是否陷入平庸极小值”。
🔍 避免陷入局部极小的策略
由于真实任务中的误差函数常具有多个局部极小,以下策略可帮助我们跳出陷阱,更接近全局最小:
1. 多点初始化
“从多个山谷起步,看哪个最低”
-
初始化多个网络(不同的随机权重);
-
分别训练后选择误差最小者作为最终解;
-
这种做法在实际深度学习框架中广泛使用(如模型重启训练)。
理论理解
-
初始化多个神经网络,从不同起点出发;
-
选择最终误差最小者作为输出。
💼 实战理解(OpenAI、Google)
-
OpenAI 在训练 GPT-3 时测试多个 seeds 训练,挑选最优模型作为最终部署版本;
-
Google Vision Transformer (ViT) 使用不同初始化策略(He、Xavier、LSUV)对比收敛路径与最小值位置;
-
字节跳动在 AI 特效模型中做结构蒸馏时也采用多起点 + 冷启动策略组合。
2. 模拟退火(Simulated Annealing)
“偶尔接受坏解,从而跳出山谷”
-
每次迭代允许以一定概率接受更差的解;
-
概率随时间降低,逐渐趋于收敛;
-
常用于组合优化任务,也可用于神经网络训练中进行扰动优化。
✅ 理论理解
-
引入概率性扰动,有机会接受“坏”的解;
-
概率随迭代下降,最终趋向稳定。
💼 实战理解(英伟达 Jetson、无人车系统)
-
英伟达 Jetson 系统中用于参数搜索、系统能量最小控制;
-
百度 Apollo 自动驾驶中使用扰动型策略做 path optimization;
-
在嵌入式资源有限场景中,模拟退火是比深度优化更鲁棒的启发式搜索方式。
3. 随机梯度下降(SGD)
“噪声也有好处,能帮我们翻过小山包”
-
加入随机性后,更新方向不是完美对齐梯度;
-
即便处于局部极小点,也有可能因噪声跳出;
-
这正是 SGD 相比标准梯度下降的额外优势。
✅ 理论理解
-
更新方向存在随机扰动,能逃出局部极小;
-
比标准梯度下降更有利于探索整个误差空间。
💼 实战理解(所有大厂都用)
-
GPT、BERT、YOLO 等主流模型几乎都使用 SGD 或 Adam(含 noise)优化器;
-
微调阶段常用 SGD,因为它更容易“跳出旧模型极小值区域”;
-
BAT 推荐系统、搜索排序模型常在 SGD 上添加 Momentum、Nesterov、Dropout 进一步扰动路径。
4. 遗传算法(Genetic Algorithms)
“进化找最优,一代一代变好”
💼 实战理解(华为、微软 Edge AI)
-
将每组参数编码为个体;
-
使用进化策略(选择、交叉、变异)逐代优化;
-
虽然效率不如梯度法,但适用于不连续或非可微的问题。
-
✅ 理论理解
-
将参数看作染色体,进化策略寻找更优解;
-
不依赖梯度信息,适用于非光滑优化问题。
-
华为昇腾 AI 生态中,遗传算法用于自动搜索量化参数;
-
微软 EdgeAI 项目中使用遗传算法调整 edge device 上部署模型的结构和资源分配策略;
-
NVIDIA 在 Jetson 上的模型压缩优化(如 pruning + quantization)中也使用类似启发式算法。
📌 小结
概念 | 定义 |
---|---|
局部极小 | 周围点的函数值都不低于当前点 |
全局最小 | 所有点的函数值都不低于当前点 |
必然关系 | 全局最小 ⊂ 局部极小,但反之不成立 |
🧠 小结(总结性观点)
项 | 理论定义 | 工程实际 |
---|---|---|
局部极小 | 相邻都更大 | 可能收敛但效果平庸 |
全局最小 | 所有都更大 | 更理想但难以保证达到 |
跳出策略 | 扰动、初始化 | 多起点训练、SGD、模拟退火 |
工程关注点 | 不止最优 | 更强调泛化能力、稳定性、部署适配 |
📌 大厂优化实践中,目标不是找到数学意义上的最小点,而是找到“最泛化”、“最鲁棒”的点。性能好,才是真的好。
神经网络训练过程实质是一个复杂的非凸优化问题,我们并非总能得到全局最小,但合理策略可帮助我们趋近它。
📖 本文基于《机器学习》周志华,第五章“神经网络”5.4节整理。图示为图5.10:全局最小与局部极小。