A04 · 第 6 章 · 第三编 训练基础与综合复习
神经网络与反向传播综合复习
以一个可审计的训练流程串联多层表示、激活、计算图、反向传播和初始化,通过形状账本、实数前后向、有限差分、小数据过拟合、损失与更新统计及随机种子复现核验实现。
报告页面错误本章目标
- 从任务输出和损失建立两层网络的参数、形状、前向值和反向梯度账本。
- 解释非线性为何不能省略,并检查激活、损失和输出链接是否匹配。
- 用中心有限差分和方向导数核验反向实现,正确处理随机与不可导点。
- 用极小数据过拟合、固定批损失下降、梯度与参数更新证明训练链条连通。
- 记录数据切分、随机种子、数值精度和逐层尺度,形成可复现故障定位流程。
本页目录
先冻结任务与张量合同
可训练实现从数据和输出合同开始,而不是从层数开始。要写清独立样本单位、输入特征及尺度、目标类型、损失归约、训练验证切分和部署输出。二元分类可以输出一个 logit 并用稳定的二元交叉熵;多分类输出 个 logits 并用 softmax 交叉熵;回归输出连续值并选择与代价匹配的损失。
logit 是未归一实数,概率是经过链接函数的值。若损失接口要求 logits,就不能先手动 sigmoid 或 softmax 再传入,否则重复链接会改变数值和梯度稳定性。标签形状、类别索引或独热编码、数据类型也要与损失接口一致。损失是样本和输出维度的均值还是总和,决定梯度尺度。
先建立最简单基线:随机初始化时多分类交叉熵约在 附近仅是对称预测的参考,实际类别偏置和输出初始化会改变;回归应与训练均值或中位数基线比较。若第一步损失远超合理尺度,先检查单位、标签和输出链接,不要立即调优化器。
形状账本在数值计算之前
对批量 ,两层网络可写成
其中 。 均为 ,logits 为 。偏置沿批次轴广播,反向时偏置梯度沿批次求和。
批量五、输入维三、隐藏宽四、类别数二。 为 , 为 , 为 ,所以 为 ; 为 、 为 ,最终 logits 为 。
参数数目为 。反向上游 为 ,于是 为 , 为 ,经过激活后 为 。每个参数梯度必须与参数同形。
形状能通过不等于语义正确。错误地把批次和时间轴展平,也可能产生可乘矩阵。账本还应为每轴命名,标注广播、归约和共享。参数计数与实际模型列出的可训练张量总数应一致;少一个偏置、多一套未使用权重都能由差异暴露。
非线性让多层不再坍缩成一层
若隐藏层没有非线性, 仍是一次仿射变换,增加深度没有扩大线性决策边界。ReLU 以分段线性门控组合多个区域,tanh 和 sigmoid 提供平滑非线性但可能饱和。激活选择要连同初始化、归一化和任务输出讨论。
隐藏激活与输出链接职责不同。多分类隐藏层可用 ReLU,输出仍给 logits,由交叉熵内部稳定计算 softmax;回归隐藏层可非线性,输出层是否限制范围取决于目标支持。把 ReLU 放在需要负值的回归输出会造成结构性截断。
输入 ,隐藏权重
按行向量约定,,ReLU 后 。若第二层 ,logit 为 ,正类概率约 。
这个样本对第一层的普通 ReLU 梯度为零,因为两个预激活都在负区间;第二层偏置仍有梯度。若许多样本都如此,隐藏单元会死亡。改变输入尺度、偏置或初始化可能打开门,但不能在看测试结果后随意改变规则。
反向传播从标量损失逆序累加
计算图前向缓存 ,标量损失以伴随一为种子。多分类 softmax 与平均交叉熵合并后
其中 是概率矩阵、 是独热标签。随后
逐元素激活给 ,再得 与批次求和的 。若参数在多个分支使用,所有贡献相加。反传只计算梯度,优化器再决定如何更新;两者错误来源应分开定位。
单样本隐藏值 ,输出权重 ,偏置 。logit ,概率 ,标签 。二元交叉熵对 logit 的导数为 。
因此 ,,传回隐藏的梯度 。若学习率 做普通梯度下降,输出权重变为 、偏置变为 ,同一样本 logit 从零增到 ,正类损失应下降。这个单步方向是实现核对,不代表泛化。
梯度检查隔离前向与反向不一致
在小张量、双精度和确定性模式下,对随机抽取参数坐标使用中心有限差分
与解析梯度比较。应尝试多个 ,检查相对误差先受截断改善、后受浮点抵消恶化的趋势。随机失活和增强要关闭或固定同一随机状态,批归一化运行统计不能在正负扰动间变化,ReLU 零点和最大值平局应避开。
令 ,取 。预测为 ,残差 ,解析梯度 。
取 ,计算 与 ,中心差分约为 。再检查偏置得到约 。若权重梯度差一倍而偏置正确,应检查输入乘法或损失的二分之一;若全部差批量大小倍数,应检查均值与求和归约。
方向检查可随机取单位向量 ,比较 与 ,一次覆盖多参数组合。坐标和方向检查都通过只证明当前局部导数实现一致,不证明标签、损失或模型语义正确。
初始化审计在第一次更新前完成
用固定批记录每层预激活和激活的均值、均方根、最小最大、ReLU 零比例或饱和比例。一次反向后记录激活梯度与参数梯度的均方根、全局范数、零梯度和非有限值。Xavier 或 He 只给初始尺度假设,真实统计才说明当前架构是否保持信号。
初始所有权重为零会保留隐藏单元对称;尺度太大使 sigmoid 或 tanh 饱和、ReLU 与线性链可能爆炸;尺度太小使深层信号衰减。归一化和残差能改善传播,但轴、训练推理状态和分支尺度仍要检查。多随机种子下统计趋势应相近,单个幸运种子不是证据。
小数据过拟合检查训练链是否连通
选极小且标签已人工核对的数据,例如十六或三十二个样本。关闭数据增强、随机失活、权重衰减和早停,使用确定性全批或固定小批,给模型足够容量和合理学习率。目标是把训练损失压到接近理论最低并记住标签;这不是期望部署行为,而是实现连通测试。
若无法过拟合,依次检查:输入与标签是否对齐,输出与损失是否匹配,参数是否加入优化器,梯度是否存在,更新后参数是否真的变化,激活是否全部死亡,学习率是否极端。若能过拟合却验证差,训练管道可能正常,问题转向泛化、正则和数据代表性。
固定十六个二分类样本和种子,使用宽度三十二的两层 ReLU 网络,关闭所有随机正则,全批训练。先确认初始交叉熵有限、两类 logits 形状为 ;第一次反向所有参数梯度有限,更新后至少一项权重改变。
若五百步后训练损失从约零点七降到零点零一、分类全部正确,说明前向、反向和更新基本连通。若损失停在零点六九且隐藏梯度全零,检查 ReLU 预激活和停止梯度;若梯度非零但参数不变,检查优化器参数列表和清零顺序。测试完成后恢复正则和真实切分,不能把记忆能力当泛化结果。
固定批损失下降核对更新方向
在同一个小批、同一模型模式下做一次足够小的梯度下降步,损失应在一阶近似下下降:
若反而上升,先把学习率缩小,检查梯度符号、损失缩放、更新前后评估模式和随机状态。小批随机训练的逐步损失不必单调,因为批次变化;固定批单步才是局部方向测试。动量等带状态优化器也应先用普通梯度下降隔离反向正确性。
记录每层更新比 。梯度存在但更新比为零可能是参数未注册、低精度下舍入或学习率过小;更新比巨大则提示尺度、损失归约或学习率问题。清零梯度应在约定位置执行,意外跨步累积会让更新随历史批次增长。
随机种子与状态构成复现账本
至少分别记录数据切分、权重初始化、样本打乱、数据增强和随机失活的种子或生成器状态。单个全局种子容易受调用顺序改变影响;独立随机流更易定位。还要记录模型训练或推理模式、数值精度、设备、批量大小、损失归约和优化器状态。
完全位级确定性在并行归约和不同硬件上未必可得,但应定义可接受容差和统计复现目标。调试时先启用确定性路径以缩小变量;性能评估则跨多个种子报告中心和离散,不把最佳种子当典型结果。恢复检查点时除了参数,还要恢复优化器、步数、调度器、随机状态和数据迭代位置。
按证据定位而不是同时调参
形状错误先由账本解决;数值梯度不符先修前向与 VJP;数值梯度正确但不能过拟合,检查数据、参数注册、激活和更新;能过拟合但大数据损失不降,检查批量尺度、优化与输入分布;训练好而验证差,再处理泄漏、容量、正则和偏移。
每次只改变一个假设并保存前后统计。损失曲线是结果,不是根因;“梯度爆炸”也应由逐层梯度、非有限值和更新比证明。可审计流程让另一位实现者能重放相同小批、参数和一步更新,得到相同容差内结果。
练习
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
查看提示
查看解答
关系与资源
- 感知机与多层感知器 提供多层表示与参数结构。
- 激活函数与非线性表示 连接表达、饱和和局部导数。
- 计算图 提供形状、缓存、JVP与VJP接口。
- 反向传播 组织共享参数的逆序梯度累积。
- 参数初始化与梯度流 建立逐层尺度诊断。
- 随机梯度、动量与自适应方法 在正确梯度上定义优化状态更新。
- 深度学习工程综合复习 延伸精度、分布式与检查点审计。
Deep Learning
Ian Goodfellow, Yoshua Bengio, Aaron Courville
适合作为反向传播和优化章节的完整参考。
打开官方来源