3.3 深度学习训练与优化:损失、梯度与正则化


3.3 深度学习训练与优化:损失、梯度与正则化

本节摘要:训练神经网络是在数百万维参数空间里寻找让损失函数最小的点:损失函数量化预测与真实的差距,梯度下降沿梯度反方向小步更新参数,反向传播用链式法则高效算出全部梯度。本节拆解这条主链的每个环节,比较 SGD、小批量、动量、Adam 四代优化器,给出学习率失当的症状与超参数清单,最后讲三大正则化手段(L1/L2 权重惩罚、Dropout、早停)如何对抗深度网络的头号敌人——过拟合。

本节目标

阅读完本节,你应当能够:

  1. 为回归与分类任务分别选定合适的损失函数;
  2. 用"下山"类比描述梯度下降的更新规则与学习率的作用;
  3. 说明反向传播两阶段(前向、反向)各自产出什么;
  4. 对比四类优化器的改进动机;
  5. 从训练曲线上诊断学习率过大与过小;
  6. 解释三种正则化技术各自的机制。

一、训练是个优化问题

网络的参数(全部权重与偏置)动辄百万千万个,训练就是找一组参数值,让预测输出与真实标签的差距最小。差距用什么数?损失函数

  • 均方误差(MSE):预测与真实之差的平方取平均,回归任务默认选择,对大误差惩罚重;
  • 交叉熵:衡量预测概率分布与真实分布的差异,分类任务默认选择(二分类用二元交叉熵,多分类用类别交叉熵)。

把损失函数想象成一片山地:横纵坐标是参数,海拔是损失值。训练就是从随机出生点出发,走到尽量低的山谷。梯度是当前位置坡度最陡的上坡方向,那么负梯度就是最陡的下坡方向——梯度下降的更新规则一句话:参数沿负梯度方向移动一小步,步长由学习率控制。每走一步重新看坡度,迭代直到损失收敛或达到预设轮数。

二、反向传播:高效算出百万个梯度

参数有百万个,就要算一百万个方向。逐个手工求导不现实,反向传播利用链式法则一次性算完:复合函数的导数等于各环节导数的连乘。

它分两个阶段:

关键工程点:反向传播复用前向阶段存下的中间结果(每层的加权和与激活值),避免重复计算,这是它高效的原因。训练完整数据集一遍叫一个 epoch,实际中按小批量切分,每批更新一次。

三、优化器四代演进

批量梯度下降用全部数据算一次梯度,方向准但一步太贵;**随机梯度下降(SGD)**每次只用一个样本,快而抖,噪声反而有助跳出局部极小;小批量 SGD折中,每批几十到几百样本,恰好匹配 GPU 并行,是实践标准;动量法在更新中累积历史方向,像重物下坡带惯性,抑制震荡、加速收敛;自适应方法(Adagrad、RMSprop、Adam)为每个参数自动调学习率——梯度一直很大的参数给小步长,一直很小的给大步长。Adam 综合动量与自适应两项,是当下最常用的默认优化器

优化器 每步用什么数据 附加机制 适用直觉
批量 GD 全量数据 理论标准、实践太慢
SGD 单样本 噪声大、可助逃逸
小批量 SGD 一小批 工程默认
动量 SGD 一小批 惯性累积 震荡明显时
Adam 一小批 动量加自适应学习率 大多数任务的稳妥首选

学习率是所有超参数里最重要的一个。过大:损失剧烈震荡甚至发散成 NaN——步子太大跨过了谷底来回打摆;过小:损失下降缓慢、训练轮数浪费——每步挪一毫米何时到山谷。常用策略是从一个较大值开始按预设计划逐步衰减,或用预热(先小后大再衰减)。

四、超参数清单

训练前要人工设定、无法从数据学到的量:学习率、批量大小、训练轮数、优化器及其内部系数(如 Adam 的一阶二阶衰减率)、正则化强度、网络层数与每层宽度。调优手段沿用第一章流程节讲过的网格搜索、随机搜索、贝叶斯优化,评估一律在验证集上做。

五、对抗过拟合:三件正则化武器

深度网络容量极大,记熟训练集轻而易举,所以过拟合是常态威胁。

L1/L2 正则化:在损失函数里加一项与权重大小挂钩的惩罚——L2(岭回归思想)惩罚权重平方和,把权重整体压小、模型更平滑;L1(Lasso 思想)惩罚绝对值和,倾向把不重要权重压到恰好为零,自带特征选择效果。

Dropout:训练时每批随机屏蔽一部分神经元(如百分之二十到五十),网络无法依赖任何单一通路,被迫学出冗余而鲁棒的表示;预测时全员上岗、输出按比例缩放。第二章 3.2 节讲过的 AlexNet 正是靠它在 2012 年一举成名。

早停:盯住验证集损失,它不再下降甚至回升时立刻停止训练。训练集损失会一直降,但验证损失的拐点就是开始背答案的时刻——早停等于在最佳泛化点踩刹车。

训练损失 ──────────────────────持续下降 验证损失 ────下降────╮ ╰──回升 ← 早停点在此附近 (模型开始记忆训练集噪声)

💡 关键直觉:调不通时按固定顺序排查——学习率(先降十倍试试)、数据(划分是否泄漏、输入是否归一化)、再谈结构与优化器。八成"玄学问题"出在前两步。

⚠️ 常见坑:训练和预测时的 Dropout 行为不分。忘了在预测阶段关闭 Dropout(并做输出缩放),模型表现会莫名变差;现代框架的推理模式开关就是为此存在。

六、训练调试速查手册

深度学习训练的日常一半是调参、一半是排障。把常见症状与对应排查项整理成速查表:

症状 高概率原因 第一步处置
损失变 NaN 学习率过大、数值溢出 学习率降十倍;查损失函数输入
损失纹丝不动 梯度消失、数据或标签错位 检查输出层与损失匹配;抽查标签
训练好验证差 过拟合 加正则、加数据、降容量、早停
训练验证都差 欠拟合或特征弱 加容量、训更久;回查特征质量
训练曲线剧烈震荡 批量太小、学习率偏大 加大批量;降学习率或加动量
验证指标忽好忽坏 学习率衰减策略不当 换预热加余弦衰减

读曲线是基本功。 训练损失与验证损失画在同一张图上:两条都在降且间距稳定是健康;训练降验证升是过拟合的标准形态;两条都早早趴下是欠拟合;验证曲线周期性跳动多半是批量或数据顺序问题。先看图再动手,比盲目改超参快一个数量级。

一个纪律性建议: 每次只改一个变量并记录结果。深度训练的随机性(初始化、数据顺序)本身就会带来指标波动,同时改三个超参后性能提升两个点,你永远不知道是哪个在起作用——实验记录的规范程度直接决定调参的收敛速度。

常见问题

批量大小怎么选? 批量影响的是梯度噪声与显存占用:大批量梯度稳但泛化略差、显存压力大;小批量噪声大反而有正则效果。常见起点是 32 到 256,显存允许就往上试,同时可能需要线性放大学习率来配合。

早停的耐心设多少? 常规做法是"验证指标连续五到十个评估周期不改善就停"。设太短会错杀还在缓慢进步的模型,设太长浪费算力。对训练慢的大模型取上限,小模型无所谓。

什么时候该重训而不是继续调? 三个信号同时出现就该重来:指标远低于同类工作的合理区间、排查过常见故障仍无改善、实验记录混乱到无法复现。深度训练里"推倒重来"的成本常常低于"在坏基线上缝补"。

重点提炼

  • 训练三件套:损失函数量化差距、梯度下降定更新方向、反向传播高效算梯度;
  • 损失选择:回归用均方误差,分类用交叉熵;
  • 反向传播两阶段:前向存中间结果并算损失,反向用链式法则逐层回传;
  • 优化器演进:小批量加动量加自适应,Adam 是稳妥默认;
  • 学习率症状:震荡发散是太大,缓慢停滞是太小;
  • 正则三武器:L1/L2 压权重、Dropout 断依赖、早停踩刹车,可叠加使用。

序列建模长期以来被循环网络统治,直到注意力机制出现。下一节看这场架构革命。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U