3.3 训练与优化:损失函数、优化器与正则化


3.3 训练与优化:损失函数、优化器与正则化

本节摘要:同一张网络,训练工艺不同,成品能差出几个档次。本节按"定标尺、定步子、拉缰绳"三步展开:损失函数给学习定方向,回归用均方误差、分类用交叉熵;优化器决定每步走多远,从批量、随机、小批量三种梯度下降,一路演化到动量、Adagrad、RMSprop 与 Adam,再配学习率调度;正则化专治过拟合,L1 与 L2 加惩罚、Dropout 随机丢弃、批量归一化稳住分布、早停及时收手。最后把三件套串成一条完整流水线,并给出常见故障的诊断方法。

你能学到什么

  • 按任务类型选对损失函数,说清均方误差与交叉熵各自的脾气
  • 复述梯度下降三个变种的取舍,以及动量到 Adam 的演化逻辑
  • 理解学习率调度为什么必要,记住几种常见时间表
  • 对症下药选正则化手段:L1、L2、Dropout、批量归一化、早停各治什么
  • 串起一条完整训练流水线,能诊断训练慢、不收敛、过拟合三类故障

一、先定标尺:损失函数

炼钢先要有检验标准,训练先要有损失函数。它量化预测与真实的差距——也叫成本函数或目标函数——损失越大说明错得越离谱,训练的全部目标就是把它压下去。别小看这把尺:评分标准变了,模型的学习方向就整个变掉,3.1 节的反向传播算的就是损失对参数的梯度,尺子歪一寸,梯度指的方向就偏一丈。

损失函数 适用任务 一句话脾气
均方误差 MSE 回归 误差平方后平均,大偏差罚得更狠
均方根误差 RMSE 回归 开个根号,量纲回到与目标一致,好解释
平均绝对误差 MAE 回归 绝对值平均,对异常值不敏感,罚得平缓
二元交叉熵 二分类 衡量预测概率与 0 或 1 标签的偏差
多类别交叉熵 多分类 衡量预测分布与真实类别的偏差

回归任务三把尺里,均方误差最常用:把每个样本的误差平方后取平均,误差翻倍、惩罚翻四倍,专治离谱大偏差。代价是对异常值过于敏感——房价数据里混进一栋别墅,平方惩罚会把整个模型拽向它,这时候换平均绝对误差更稳,它对大小误差一视同仁地线性处罚。均方根误差只是给均方误差开个根号,数值回到与目标同量纲,向业务方汇报时好解释。

分类任务的标准答案是交叉熵。二分类用二元交叉熵:真实标签是 0 或 1,模型输出"属于正类的概率",预测概率越偏,罚得越陡。多分类用多类别交叉熵:模型输出一组概率分布,哪一类被压低了概率就罚哪一类。交叉熵有个工程上的妙处——预测离正确答案越远,梯度越大、纠偏越猛,接近正确时又自动收力,收敛速度快,这是均方误差套在分类输出端给不了的特性。

⚠️ 常见坑:分类任务的输出端忘了接 Softmax 或 Sigmoid 就直接套均方误差,梯度行为会变得又平又慢,模型久久学不动。尺子要与输出端的激活函数配套:概率输出配交叉熵,连续数值输出配均方误差或平均绝对误差。

二、再定步子:从梯度下降到 Adam

方向有了,接下来是怎么走。梯度下降的基本动作在 3.1 节讲过:沿梯度的反方向挪一步。分歧在于"一步"用多少样本算梯度,由此分出三个变种。批量梯度下降每步用全部训练样本求平均梯度,方向最稳、每一步都朝当前最优,但数据集一大就算不动,一步贵如黄金。随机梯度下降反其道而行,每步只用一个样本,便宜又灵活,还自带随机扰动,偶尔能跳出小坑;代价是方向抖得厉害,损失曲线上蹿下跳。小批量梯度下降取中间路线,每次抽一小批样本算梯度,兼顾速度与稳定,批大小成为重要超参数,也是实际训练的默认做法。

小批量之上,几代改进都在回答同一个问题:步子能不能更聪明。动量法借物理惯性的思路——更新方向不再只听当前梯度,还保留九成旧速度(动量因子常取 0.9),当前梯度只占一成。像雪球滚下山坡,越滚越有劲,还能借惯性冲过浅坑,路径也平滑许多。Adagrad 换个角度:给每个参数发各自的步长——历史上梯度频繁的参数步子放小,稀少的参数步子放大,对稀疏数据格外友好;毛病是历史梯度平方只增不减,学习率一路单调衰减,训练后期干脆迈不动腿。RMSprop 对症下药,不再累积全部历史,改用指数加权移动平均,只记近期的梯度平方,旧账自动翻篇。Adam 集两家之大成:一边像动量法维护梯度的一阶矩估计,一边像 RMSprop 维护梯度平方的二阶矩估计,再做偏差修正,两路合起来定步子;两个衰减率惯例取 0.9 与 0.999。鲁棒、省心,Adam 由此成为多数任务的默认首选。

优化器 核心想法 优点 代价或风险
小批量 SGD 一小批样本定一步 稳定高效 通用底座 收敛慢 需配学习率调度
动量法 九成旧速度加一成新梯度 平滑路径 冲过浅坑 多一个动量因子要调
Adagrad 按参数历史梯度平方分步长 免手工调 稀疏数据友好 学习率单调衰减 后期学不动
RMSprop 梯度平方取指数加权移动平均 旧账翻篇 适合非凸曲面 仍需调学习率
Adam 一阶矩加二阶矩加偏差修正 收敛快 鲁棒 默认首选 泛化偶逊于带动量的 SGD

学习率本身也需要随时间变化。全程一个定值很拧巴:前期要大步快速逼近,后期要小步精修。学习率调度由此登场——步长衰减,每隔若干轮把学习率乘个折扣因子,像下台阶;指数衰减,按轮数连续指数式缩小,坡度平滑;余弦退火,学习率沿余弦曲线从大到小周期变化,尾段收得温和。视觉任务里"带动量的 SGD 配步长衰减"至今仍是大批模型的夺冠组合。

⚠️ 常见坑:学习率一刀切。训练初期学习率太大,损失直接发散成天文数字;后期还是原学习率,又会在谷底反复横跳落不下去。先看损失曲线的形状再动手:发散就砍学习率,平台期停滞就考虑衰减时间表或换优化器。

💡 关键直觉:把优化想成浓雾里下山。损失函数是山谷地形,梯度是脚下坡度,学习率是每步迈多远。批量梯度下降像等全队测绘完再走,稳但慢;随机梯度下降像一个人摸着就冲,快但常走回头路;动量是雪球,Adam 是带记忆的登山杖——记住走过的坡度,自动决定迈腿大小。

三、拉住缰绳:正则化

3.1 节埋的伏笔在这里兑现。过拟合的病象是训练分数漂亮、新数据上一落千丈——模型把训练集里的噪声当成了规律。正则化的思路是在损失里加约束,或是在训练过程中制造受限环境,逼模型学通用规律而非背题。

先看在损失上做文章的两兄弟。L1 正则化给损失加上"全部权重绝对值之和"乘以惩罚系数:不重要特征的权重会被干脆压成零,模型因此变得稀疏,顺带完成特征筛选。L2 正则化加上的是"全部权重平方和"乘以惩罚系数:权重被整体压小但不会精确归零,模型曲线变得平滑,抗噪能力上升,也被称为权重衰减,是深度学习里用得最多的一味药。顺口区分:L1 造就稀疏,L2 造就平滑。

Dropout 走的是另一条路:训练时每一步都以一定概率随机丢掉一部分神经元及其连线,等于每轮都在一个临时"瘦身"的小网络上训练。副作用变成了疗效——任何一只神经元都无法依赖某些特定同伴,共适应性被打破,只能学出各自站得住的特征;从整体看,每次丢弃生成一个不同的子网络,最终模型近似于一大批子网络的集成投票。测试时所有神经元归位工作,输出按丢弃概率做缩放补偿。批量归一化则盯住另一个病灶:训练中每层的输入分布随前面参数变动而漂移,即内部协变量偏移。它在每层输入处按小批量的统计量做标准化,再配可学的缩放与平移。收益有三:收敛更快,能用更大的学习率,对初始化不那么挑剔;顺带的噪声还附赠了轻微的正则化效果。早停最朴素:盯住验证集,损失连续多轮不再下降就收手,把停在"刚学好、还没开始背题"的那一刻,几乎零成本。

💡 关键直觉:正则化像冶炼里的控温与送风。L1、L2 是控制入炉原料的配比,Dropout 是周期性抽掉几根风管逼炉膛自己稳住燃烧,批量归一化是恒温器,早停是老师傅喊停的火候——目标只有一个:炉火既要旺,又不能过烧把钢炼脆。

四、串成一条流水线:完整训练流程与故障诊断

三件套就位,拼成完整流程。数据准备与三份切分,搭网络结构,选损失函数,配优化器与学习率调度,加上正则化手段,然后进入迭代循环:一批样本前向传播、算损失、反向传播、更新参数,每隔一轮用验证集体检,据此早停或回头调超参数,最后在测试集上做一次性终考。任何一个环节的改变都要回到循环重来。

故障诊断记三句话。训练慢:先查学习率是不是太小、优化器是不是还没配动量,再查数据有没有归一化。不收敛:损失发散大概率学习率过大,损失乱跳先看批大小是否过小、数据里是否有异常值在兴风作浪。过拟合:训练损失还在降、验证损失已抬头,就该加数据、上正则化或早停了——欠拟合则反过来,加深加宽网络或延长训练。

常见问题解答

问:优化器无脑选 Adam 行不行? 行,多数任务它就是首选起点。但视觉任务里,带动量的 SGD 配步长衰减常常追平甚至反超 Adam,泛化更稳。常见节奏是先跑 Adam 定基线,有余力再试 SGD 调优。

问:Dropout 比例设多少合适? 常从 0.2 到 0.5 之间起试,全连接层用得多,卷积层较少用。没有万能数,验证集曲线说了算。

问:训练损失还在降,要不要一直训下去? 不要只盯训练损失。判据是验证损失——它不降反升的拐点,就是该早停的火候,再训下去多半是在背噪声。

本章回顾

  • 损失函数是标尺:回归配均方误差或平均绝对误差,分类配交叉熵,且必须与输出端激活函数配套。
  • 小批量梯度下降是实际训练的默认底座,批大小是重要超参数。
  • 动量加惯性,Adagrad 按参数分步长但会学不动,RMSprop 只记近期,Adam 集两家之长,默认首选。
  • 学习率调度让步子随时间变化:步长衰减、指数衰减、余弦退火各有适用场景。
  • L1 造稀疏做特征筛选,L2 造平滑压权重,别名权重衰减。
  • Dropout 随机丢弃打破共适应,等价于隐式集成;批量归一化稳住每层输入分布,允许更大学习率。
  • 早停看验证损失拐点,几乎零成本地挡住背题式训练。
  • 故障三查:慢查学习率,不收敛查发散与异常值,过拟合查训练与验证损失的剪刀差。

工艺齐备,炉火正旺,新的难题却换了一副面孔:训练越深越贵,标注数据越算越不够用。当从零训练贵到只有巨头玩得起,行业把"学通识"与"学专业"拆成了两步——下一节看预训练与迁移学习如何把专用厂房接进公共电网。


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