主题
第 7 章 网络优化与正则化
第二部分 · 基础模型课件 59 页讲义约 40 分钟Optimization & Regularization
学习目标
- 理解深度网络优化的主要难点:非凸、鞍点、平坦最小值、梯度消失 / 爆炸;
- 掌握小批量梯度下降,理解批量大小与学习率的关系;
- 掌握学习率调整(衰减、周期性调整、预热、自适应学习率)与梯度方向优化(动量、Nesterov),能写出 Adam 的完整更新公式;
- 掌握 Xavier / He 初始化的推导思路,理解批量归一化与层归一化的计算与区别;
- 了解网格搜索、随机搜索、贝叶斯优化等超参数优化方法;
- 掌握 ℓ1/ℓ2 正则、权重衰减、提前停止、Dropout、数据增强、标签平滑等正则化方法。
课件幻灯片

1 / 59
提示:点击幻灯片左右两侧或使用 ← → 键翻页,手机上左右滑动;按 F 全屏。
讲义
深度学习有一对“矛与盾”:优化希望经验风险尽可能小,正则化希望降低模型复杂度以提高泛化能力。深度网络拟合能力极强,两者都很关键。幻灯片 2
7.1 网络优化的难点
神经网络的优化面临:结构差异大,没有通用的优化算法;超参数多;非凸优化问题,需要关注参数初始化与逃离局部最优;梯度消失(爆炸)问题。幻灯片 4
高维空间的非凸优化。低维空间中,我们担心陷入局部最小值;但在高维空间中,大部分梯度为 0 的驻点其实是鞍点——在某些维度上是最低点、在另一些维度上是最高点。假设网络有 10,000 维参数,一个驻点在每一维上都是局部最低点的概率为
- 平坦最小值:一个平坦最小值的邻域内所有点的损失都比较接近,模型对参数扰动不敏感,通常泛化更好;尖锐最小值则相反;
- 局部最小解的等价性:在大型网络中,大部分局部最小解是等价的,它们在测试集上的性能接近,且对应的训练损失都可能非常接近全局最小解。
可视化研究表明,残差连接能让损失曲面(优化地形)变得平滑得多。幻灯片 6 改善神经网络优化的思路有四类:更有效的优化算法(动态学习率、梯度估计修正)、更好的初始化与数据预处理、修改网络结构得到更好的优化地形(ReLU、残差连接、逐层归一化),以及更好的超参数优化方法。幻灯片 7
7.2 优化算法
小批量梯度下降。每次从训练集选取
影响小批量梯度下降的关键因素有三个:批量大小
批量大小的影响。批量大小不影响随机梯度的期望,但会影响其方差:批量越大,梯度方差越小、引入的噪声越少、训练越稳定,可以设置较大的学习率;批量较小时需要较小的学习率,否则不收敛。经验上常用线性缩放规则:批量大小增加
flowchart TB
A["标准(小批量)梯度下降<br/>θ ← θ − α g"] --> B["调整学习率 α"]
A --> C["修正梯度方向 g"]
B --> B1["学习率衰减<br/>周期性学习率 / 预热"]
B --> B2["自适应学习率<br/>AdaGrad · RMSprop · AdaDelta"]
C --> C1["动量法 · Nesterov"]
C --> C2["梯度截断"]
B2 --> D["Adam ≈ 动量法 + RMSprop"]
C1 --> D
学习率衰减(学习率退火)。学习率过大不收敛、过小收敛太慢。幻灯片 13 常用做法是开始时较大、之后逐渐减小:幻灯片 15 幻灯片 16
- 分段常数衰减(阶梯衰减):每经过若干迭代把学习率乘以一个小于 1 的衰减系数;
- 逆时衰减:
;指数衰减: ;自然指数衰减: ; - 余弦衰减:
, 为总迭代次数。
周期性学习率:让学习率在一个区间内周期性地增大和减小,例如三角循环学习率和带热重启的随机梯度下降(SGDR,每个周期内余弦衰减,周期结束时重置为初始值)。短期内增大学习率虽然损害收敛,但有助于逃离尖锐最小值和鞍点,找到更平坦的区域。幻灯片 17 幻灯片 18
学习率预热(warmup):训练初期参数随机、梯度往往较大,再配合较大的学习率会使训练不稳定。因此在最初几轮用较小的学习率逐渐升高到初始学习率,例如逐渐预热
自适应学习率:为每个参数设置不同的学习率。幻灯片 20
- AdaGrad:累计每个参数梯度的平方
,更新 。梯度大的参数学习率小、梯度小的参数学习率大;缺点是学习率单调下降,后期可能过早停滞。 - RMSprop:用指数衰减移动平均代替累加
( 一般取 0.9),更新同 AdaGrad。学习率不再单调衰减。 - AdaDelta:在 RMSprop 基础上把初始学习率
换成参数更新量平方的移动平均 ,更新 ,在一定程度上平抑了学习率的波动。
梯度方向优化。
- 动量法:用之前积累的“动量”代替真正的梯度,每次迭代的梯度可以看作加速度:
,动量因子 通常取 0.9。当某参数在最近一段时间内的梯度方向一致时,更新幅度变大,起加速作用;方向不一致时更新幅度变小,起减速作用——这能有效抑制在“峡谷”两壁之间的来回震荡。幻灯片 21 - Nesterov 加速梯度:先按动量“往前走一步”,在那里计算梯度:
,相当于提前看到下一步的梯度,修正更合理。幻灯片 22
Adam 算法 ≈ 动量法 + RMSprop:既用梯度的一阶矩(动量)作为更新方向,又用二阶矩自适应地调整学习率。幻灯片 23
通常
梯度截断:把梯度的模限定在一个区间内,防止梯度爆炸导致参数剧烈变化,在循环网络中尤为常用。幻灯片 25
小结。大部分优化算法都可以用下面的公式统一描述:幻灯片 26
其中
下面的演示在三种二维损失曲面上比较各优化器(可调学习率、点击设置起点):
7.3 参数初始化
参数不能全初始化为 0:否则第一遍前向计算时所有隐藏神经元的激活值相同,反向传播时它们的权重更新也相同,导致神经元之间没有区分性,这称为对称权重问题。偏置通常可以用 0 初始化。初始化方法分为预训练初始化、随机初始化和固定值初始化三类。幻灯片 28
随机初始化:从固定均值(如 0)和固定方差(如 0.01)的高斯分布中采样,或在区间
基于方差缩放的初始化。为避免梯度消失或爆炸,我们希望每层输出和误差项的方差保持不变(范数保持性)。幻灯片 30 设第
要使前向时方差不变,需
| 初始化方法 | 激活函数 | 均匀分布 | 高斯分布 |
|---|---|---|---|
| Xavier | Logistic | ||
| Xavier | Tanh | ||
| He | ReLU |
正交初始化:方差缩放只保证了每个神经元的方差,对整个误差项向量,我们希望
7.4 数据预处理
不同特征的尺度差异很大时,损失曲面会呈狭长的椭圆形,梯度下降需要很多次迭代才能收敛;归一化后曲面更接近圆形,收敛更快。幻灯片 32 常用方法:
- 最小最大值归一化:
; - 标准化(Z 值归一化):
,使每一维特征均值为 0、方差为 1; - 白化:用 PCA 去除特征之间的相关性,并使各维方差相同。
7.5 逐层归一化
逐层归一化把数据归一化的思想用到神经网络的中间层,其好处是:更好的尺度不变性(缓解内部协变量偏移——前一层参数变化导致后一层输入分布不断变化)以及更平滑的优化地形。幻灯片 34
批量归一化(Batch Normalization, BN)对每一层的净输入
标准化会把取值集中到 0 附近,对 Sigmoid 型函数而言接近线性区间,削弱了非线性;因此引入可学习的缩放参数
层归一化(Layer Normalization, LN)则对一个样本中某一层所有神经元进行归一化:幻灯片 36
层归一化不依赖批量大小,训练与测试的计算方式一致,适合循环网络:
BN 与 LN 的对比:把一个小批量的净输入看作
7.6 超参数优化
神经网络的超参数包括:网络结构(层数、每层神经元个数、激活函数类型),优化参数(优化方法、学习率、小批量大小),正则化系数等。幻灯片 40 超参数优化的难点在于它是组合优化问题,无法用梯度下降,且评估一组超参数的代价很高。常用方法:
- 网格搜索:对每个超参数取几个值,如学习率
,尝试所有组合,在验证集上选最优。幻灯片 41 - 随机搜索:不同超参数对性能的影响差异很大,网格搜索会在不重要的超参数上做许多无用尝试;随机采样组合通常更有效。幻灯片 42
- 贝叶斯优化:用高斯过程等模型拟合“超参数 → 性能”的函数,根据已有的试验结果选择最有希望的下一组超参数(如最大化期望改进)。
- 动态资源分配:尽早淘汰没有希望的配置,把资源分给更有可能带来收益的配置(如逐次减半)。
- 神经架构搜索(NAS):用一个控制器(如循环网络 + 强化学习)生成网络结构,以验证集性能为奖励进行学习。幻灯片 43
7.7 网络正则化
深度网络通常是过度参数化的,拟合能力强到可以记住随机标签;但实践中它们依然优先学习数据中的一般规律,表现出良好的泛化能力——如何解释这一点仍是开放问题(“重新思考泛化”)。幻灯片 45 正则化方法包括:ℓ1/ℓ2 约束、数据增强(增加优化约束);权重衰减、随机梯度下降、提前停止、Dropout(干扰优化过程)。幻灯片 46
ℓ1 和 ℓ2 正则化:
提前停止:用验证集监控每次迭代后的性能,验证集错误率不再下降时停止。幻灯片 51
权重衰减:每次更新时对参数乘以一个小于 1 的系数
丢弃法(Dropout):训练时随机丢弃一部分神经元。对一层输入
测试时乘以
- 集成学习:每次丢弃相当于从原网络采样一个子网络,
个神经元可以采样出 个共享参数的子网络,最终网络可以看作它们的集成; - 贝叶斯学习:把参数
看作随机变量,丢弃法相当于对参数的采样, 。
循环网络上的 Dropout:不能直接对每个时刻的隐状态随机丢弃,否则会损害循环网络的记忆能力。根据贝叶斯解释,每次采样的参数应在所有时刻保持不变,因此对参数矩阵的元素随机丢弃并在所有时刻使用相同的丢弃掩码,称为变分丢弃法。幻灯片 55
数据增强:对图像进行旋转、翻转、缩放、平移、加噪声等变换,增加数据多样性;文本也可以用同义词替换、回译等方法增强。幻灯片 56
标签平滑:one-hot 硬目标
7.8 实践建议
训练深度网络的一套“默认配置”:幻灯片 58
- 模型:用 ReLU 作为激活函数;分类时用交叉熵损失;使用逐层归一化;
- 优化:小批量 SGD,配合动态学习率,优先尝试 Adam;每个 epoch 重新随机打乱数据;
- 预处理与初始化:数据标准化;He / Xavier 初始化;
- 正则化:ℓ2 正则 / 权重衰减、Dropout、数据增强、提前停止。
本章小结
- 高维非凸优化的主要障碍是鞍点而非局部最小值;平坦最小值泛化更好。
- 优化算法 = 学习率调整(衰减、周期、预热、AdaGrad / RMSprop / AdaDelta)+ 梯度方向修正(动量、Nesterov、梯度截断),Adam 结合了两者。
- Xavier / He 初始化保持各层方差稳定;BN 按批量、LN 按样本对神经元归一化,平滑优化地形。
- 正则化:ℓ1/ℓ2、权重衰减、提前停止、Dropout(子网络集成 / 参数采样)、数据增强、标签平滑。
思考题与习题
- (分析) 为什么小批量 SGD 中批量越大、学习率可以越大?用随机梯度的方差解释线性缩放规则。
- (推导) 证明 Adam 中若不做偏差修正,第 1 步的更新量约为
,并说明偏差修正的必要性。 - (推导) 推导 He 初始化:对 ReLU 网络,说明为什么
能保持前向传播时激活值的二阶矩不变。 - (概念) 批量归一化在测试阶段如何计算?为什么在批量很小或循环网络中通常改用层归一化?
- (分析) 在 SGD 中权重衰减与 ℓ2 正则等价,在 Adam 中为什么不等价?
- (计算) 某隐藏层有 4 个神经元,Dropout 保留率
。训练时一共可能有多少种子网络结构?测试时为何要把输出乘以 (或训练时除以 )? - (编程) 在同一个 CIFAR-10 小模型上比较 SGD、SGD+Momentum、Adam、AdamW 的训练曲线;再分别加入 BN、Dropout、数据增强,记录验证集准确率的变化。
部分提示
- 第 2 题:
, 。取 时,不修正的第 1 步步长约为 ,各步的有效步长随 变化而失真;修正后第 1 步恰为 。 - 第 5 题:Adam 中 ℓ2 正则的梯度
会被自适应学习率 缩放,梯度大的参数受到的正则更弱。 - 第 6 题:
种。
延伸阅读
- 教材:邱锡鹏《神经网络与深度学习》第 7 章「网络优化与正则化」。
- Ruder S. An overview of gradient descent optimization algorithms, 2016;Kingma D P, Ba J. Adam, ICLR 2015;Ioffe S, Szegedy C. Batch normalization, ICML 2015;Srivastava N, et al. Dropout, JMLR 2014。
- 实践:nndl-practice 第 7 章「网络优化与正则化」;本站 梯度下降与优化器演示。
- 第二版对应章节:第 7 章「网络优化与正则化」。