动手学深度学习笔记--训练注意、梯度问题

一、数据集划分与模型评估方法

1. 训练集、验证集与测试集

在机器学习模型的训练与评估流程中,数据通常被划分为互不重叠的集合,各司其职:

训练集:用于模型核心参数(权重、偏置等)的迭代更新,是模型直接学习拟合的数据源,决定了模型能学到怎样的规律。

验证集:在模型最终定型后使用,用于评估模型真实的泛化能力,反映模型在全新未见数据上的实际表现。

2. K 折交叉验证

当数据总量有限时,单次随机划分数据集容易因样本分布偶然导致评估结果偏差,此时通常使用K 折交叉验证提升评估可靠性: 将全部训练数据随机均匀划分为 K 份子集,每次取其中 K-1 份作为训练集、剩余 1 份作为验证集,重复 K 次训练与验证流程,最终取 K 次验证结果的平均值作为模型的泛化性能指标。 该方法能更充分地利用有限数据,降低单次数据划分的偶然性,更稳定地反映模型真实能力,工程中常用 K=5 或 K=10。


二、过拟合与欠拟合

1. 核心概念

训练损失:模型在训练集上计算得到的误差,直接反映模型对已有训练数据的拟合程度。

泛化损失(测试损失):模型在从未见过的新数据(验证集 / 测试集)上的误差,反映模型的泛化能力,是模型落地时真正决定效果的指标。

基于两种损失的表现,模型会出现两种典型的拟合问题:

欠拟合:当模型容量过低(结构过于简单、参数数量不足),无法捕捉数据内在的真实规律时,模型既不能很好地拟合训练数据(训练损失高),也无法在新数据上表现良好(泛化损失同样高)。典型场景为小模型处理复杂数据、训练迭代不足。

过拟合:当模型容量过高(结构过于复杂、参数数量过多),模型不仅学习到了数据的普遍规律,还将训练数据中的随机噪声、样本特有偏差也当作通用规律拟合。此时训练损失会持续降低甚至趋近于 0,但泛化损失在下降到最低点后会持续上升,模型在新数据上的表现大幅恶化。

2. 损失与模型容量的变化规律

随着模型容量(复杂度)逐步提升:

训练损失始终呈单调下降趋势,容量越高,对训练数据的拟合程度越好;

泛化损失先下降后上升:在容量较低时,模型能力不足对应欠拟合,泛化损失较高;容量提升到某一最优值时,泛化损失达到最低;容量继续升高后,模型开始拟合噪声,进入过拟合区间,泛化损失持续走高。


三、模型容量及其衡量

模型容量指模型能够拟合的函数的复杂程度,容量越高,模型能表达的映射关系越复杂。常用的衡量维度有两个:

1、可学习参数的数量:这是最直观的衡量指标。通常参数总量越多,模型容量越高,例如深层神经网络比浅层网络参数更多,拟合复杂数据的能力更强。

2、参数的可取值范围:即使参数数量相同,参数允许的取值空间越大,模型能表达的函数越丰富,等效容量越高;反之若通过约束限制参数的大小范围,会等效降低模型的有效容量。

模型容量需要与数据的复杂程度相匹配:简单数据使用过高容量模型易过拟合,复杂数据使用过低容量模型易欠拟合。


四、经典正则化方法

正则化:所有以降低模型泛化误差为核心目标,通过适当牺牲训练集的拟合精度,来抑制过拟合、提升模型泛化能力的技术,统称为正则化。

1. 权重衰退(L2 正则化)

权重衰退是最经典的参数约束型正则化,通过限制权重参数的取值规模,压缩模型的有效容量,缓解过拟合。

损失函数构造

在原始损失函数的基础上,加入权重向量的 L2 范数平方作为惩罚项,构成新的总损失:

L(W,b)为原始任务损失(如均方误差、交叉熵损失);

λ/2 * ||W||²是权重向量W的 L2 范数平方,即所有权重元素的平方和;

λ≥0为正则化系数,控制惩罚强度:λ 越大,对权重的约束越强,模型容量压缩越明显;

系数 1/2 仅为求导后抵消平方项、简化公式,不影响正则化的实际效果。

梯度更新公式

以小批量梯度下降为例,对总损失关于权重求导后,代入更新规则可得到:

和原始梯度下降相比, 每次迭代都会先将原有权重按比例向 0 收缩,这也是 "权重衰退" 名称的由来。偏置 b 通常不加入正则化惩罚,因其仅为平移项,对模型复杂度影响极小。

2. Dropout(丢弃法)

Dropout 是深度学习中常用的随机化正则化方法,通过训练时随机失活神经元,避免模型过度依赖局部特征,提升鲁棒性与泛化能力。

核心原理

在每一轮训练的前向传播过程中,按预设概率随机让一部分神经元暂时失活(输出置为 0),不参与本次的前向计算与反向梯度更新。每次迭代丢弃的神经元随机变化,相当于每次都在训练一个结构更精简的子网络,迫使模型不会过度依赖某几个特定神经元的特征,从而学习到更通用的规律。

标准实现(倒置 Dropout)

设单个神经元的原始输出为 x,神经元丢弃概率为 p:

训练阶段:该神经元有 p 的概率输出 0,有 (1-p) 的概率输出 x/(1-p);

测试 / 推理阶段:不执行任何丢弃操作,所有神经元正常工作,输出保持为 x。

除以 (1-p) 的目的是保证训练与测试阶段该层输出的数学期望一致: 训练时期望和测试阶段输出期望匹配,因此推理时无需额外调整权重,工程实现更简洁高效。

丢弃概率 p 是可调节的超参数,常用取值为 0.2~0.5;概率越高正则化效果越强,但过高也可能导致模型欠拟合。

五、梯度消失和梯度爆炸

1、激活函数梯度项的对角矩阵推导

对于全连接网络的任意一层,设线性输出为 d 维列向量

激活函数 f 逐元素作用,得到激活输出,即激活函数输出的第 i 个分量仅由对应位置的z决定:

根据向量对向量求导的定义,雅可比矩阵dh/dz是d * d的矩阵,这里采用分子布局,第 i 行第 j 列的元素为偏导数,我们分两种情况计算:

因此,整个雅可比矩阵仅主对角线上存在非零元素,所有跨维度的交叉项均为 0,是标准的对角矩阵:

该矩阵的数值完全由激活函数的局部梯度决定,与权重参数无关。


2、单层雅可比矩阵的完整形式

根据链式法则,本层输出对输入的雅可比矩阵可拆分为**「激活梯度项」** 与**「线性变换梯度项」**的矩阵乘积:

对于线性变换 z = Wx + b,其对输入x 的导数就是权重矩阵本身:W

将两部分结合,得到单层的雅可比矩阵 M:

从表达式可以直接得出结论:单层雅可比矩阵的数值尺度,由激活函数的梯度大小与权重矩阵的数值尺度共同决定。激活梯度越大、权重元素的绝对值越大,单层对梯度的缩放效应就越强。


3、多层连乘的梯度累积效应

将上述结论推广到总层数为 L 的深度网络中。当计算损失函数 L 对第 l 层参数的梯度时,反向传播的完整链式法则可拆分为三部分:

对三部分分别分析:

1、输出层初始梯度由损失函数的形式决定,是反向传播的数值起点,量级有限,不会引发数值失控;

2、本层参数梯度项仅在最终求解权重梯度时出现一次,不随网络深度累积,不是梯度不稳定的来源;

3、决定梯度整体数值稳定性的核心,是中间的多层雅可比连乘项。每向输入层反向传递一层,就要额外乘一次该层的雅可比矩阵;网络越深,连乘的矩阵数量越多,缩放效应的累积就越剧烈。


4、梯度消失与梯度爆炸的成因

由于每一层的雅可比矩阵都由激活梯度与权重尺度共同缩放,多层连续相乘会让这种缩放效应呈现指数级累积的特性。我们可以用简化的标量模型直观理解:假设每层的平均激活梯度为 g ,每层权重的平均缩放幅度为 k,那么反向传播经过 n 层后,梯度的整体缩放倍数为 (k*g)^n。

1. 梯度消失

当每层的激活梯度与权重尺度的乘积普遍小于 1 时,每反向传播一层,梯度的数值就会被缩小一次。随着层数增加,梯度会以指数速度持续衰减,最终趋近于 0,这就是梯度消失

最典型的场景是 Sigmoid/Tanh 激活函数:Sigmoid 的导数最大值仅为 0.25,在输入绝对值较大的区域导数会进一步趋近于 0;多层堆叠后,激活梯度的持续衰减会占据主导,即使权重尺度正常,多层连乘后的梯度也会迅速缩小到可以忽略的程度。此时靠近输入的底层参数几乎接收不到有效的梯度信号,参数更新量极小,长期几乎不发生变化,导致模型收敛缓慢甚至完全无法学习。

2. 梯度爆炸

当每层的激活梯度与权重尺度的乘积普遍大于 1 时,每反向传播一层,梯度的数值就会被放大一次。随着层数增加,梯度会以指数速度急剧膨胀,最终趋向无穷大,这就是梯度爆炸

最典型的场景是权重初始化数值过大:权重矩阵中元素的绝对值远大于 1,即使激活函数的导数在 1 附近(如 ReLU 正半轴),两者的乘积也会大于 1;多层累积后梯度的数值会迅速超出浮点数的表示范围。此时参数的更新步长会过大,导致参数在最优值附近剧烈震荡、模型发散,极端情况下会直接出现数值溢出(NaN/Inf),训练直接崩溃。

简言之,深层网络链式求导的连乘结构 是梯度不稳定的结构性根源;而权重初始化的数值尺度激活函数的梯度特性,则是直接决定梯度消失或梯度爆炸的核心因素。

一、核心思路:通过方差一致性缓解梯度不稳定

梯度消失与梯度爆炸的本质,是前向的激活信号、反向的梯度信号在多层网络中逐层传递时,数值尺度发生指数级的放大或缩小。因此一个自然的优化方向是:让每一层的激活输出和反向梯度都保持稳定的均值与方差,使信号在多层传递中尺度始终可控,从根源上缓解梯度的指数级波动。

权重初始化与激活函数设计,正是从两个维度共同实现这一目标:权重决定线性变换的缩放幅度,激活函数决定非线性变换的缩放幅度,两者共同决定了每层信号的方差变化。


六、加强训练稳定性

了解了梯度消失和梯度爆炸后,可以知道想要使训练更稳定,激活函数的选择和参数的初始化十分重要。

我们先忽略激活函数(即恒等激活),分析单层全连接线性变换的前后向方差变化规律。

前置假设

输入向量 X 的各元素独立同分布,满足期望 E(xi),方差 Var(xi) =

权重矩阵W的各元素独立同分布,满足期望 E(wij) = 0,权重方差记为γ;

偏置 b 初始化为 0,暂不考虑其影响;

本层输入维度为 n_in上一层神经元数),输出维度为 n_out(本层神经元数)。

1. 前向传播的方差约束

线性层输出 Z = WX ,对单个输出元素

若希望前向传播后输出方差与输入方差保持一致Var(X) = Var(Z),则需满足:

2. 反向传播的方差约束

设损失对本层输出的梯度为,各元素独立同分布且零均值,方差为 。 根据链式法则,损失对上一层输入的梯度为

对单个梯度元素

同理可得:

若希望反向传播后梯度方差与本层梯度方差保持一致

则需满足:

3. 约束的矛盾性

前向传播要求权重方差满足 n_in * γ = 1,反向传播要求 n_out * γ = 1 。在实际网络中,相邻两层的神经元数 n_in 和 n_out 通常不相等,两个条件无法同时满足,因此无法通过单一的权重方差同时保证前向与反向的方差完全稳定。


4、Xavier 初始化:前后向方差的折中方案

针对上述矛盾,Xavier(Glorot)初始化提出了折中方案:取输入维度与输出维度的算术平均作为等效维度,令权重方差满足:

该设计的意义在于:

在实际实现中,Xavier 初始化通常有两种常见形式:

Xavier 初始化的推导默认激活函数在 0 点附近导数为 1(即近似线性),因此原生适配 tanh 等对称饱和激活函数。


四、激活函数对方差传递的影响

上述推导基于恒等激活,而实际网络中的非线性激活函数会改变信号的均值与方差,进而影响梯度的稳定性。初始化阶段权重数值较小,线性输出集中在 0 附近,因此我们可以通过零点泰勒展开分析激活函数的等效线性特性。

1. 线性激活的理想条件

若希望激活后仍保持零均值、方差不变,需同时满足:

β = 0, α² = 1

即理想的线性激活为恒等函数 (f(x)=x),此时信号经过激活后尺度完全不变。

2. 常见非线性激活的零点近似

对于非线性激活函数,我们通过一阶泰勒展开观察其在 0 点附近的等效线性参数:

3. Sigmoid 的缩放调整:4 × sigmoid(x) - 2
为了让 sigmoid 也具备接近理想的零点特性,我们可以对其进行线性缩放和平移,构造新的激活函数: f(x) = 4 × sigmoid(x) - 2

修正了原生 sigmoid 的均值偏移问题,满足零均值要求;

零点导数与 tanh 一致,信号经过激活后方差不会剧烈衰减。

这种调整本质是通过线性变换修正 sigmoid 的均值偏移和梯度过小问题,使其在初始化阶段的方差传递特性接近 tanh,从而缓解深层网络中的梯度消失。

相关推荐
财复视界1 小时前
科源制药医药主业筑基,脑机接口与具身智能打开成长空间
大数据·人工智能·物联网
CoderIsArt1 小时前
切片辅助超推理(SAHI):一种用于小目标检测的通用框架
人工智能·目标检测·计算机视觉
沫儿笙1 小时前
安川弧焊机器人混合气动态调节技术
人工智能·机器人
Larcher2 小时前
当 AI 学会写代码:一个自动生成 React 项目的 Agent 实战
人工智能·设计模式·程序员
m0_466525292 小时前
东软医疗光子 CT 实现国产高端影像从跟跑到领跑
人工智能
智能体与具身智能2 小时前
TVA 本质内涵与核心特征(系列)
人工智能·python·智能体视觉
澹锦汐2 小时前
AI 创意画板:生成按钮之前,先设计可撤销的创作过程
人工智能
邵宇然2 小时前
计算图优化的编译器视角:AI 推理引擎的算子融合与内存布局重构
人工智能
中微极客2 小时前
KoMA:基于知识驱动的多智能体LLM自动驾驶框架深度解析
人工智能·机器学习·自动驾驶