- 1.深度学习模型完整的训练流程包含哪些核心步骤?每个步骤的核心目的是什么?
- 2.训练集、验证集、测试集的作用分别是什么?为什么不能用测试集参与模型调优?
- 3.模型训练过程中,“前向传播”和“反向传播”的核心逻辑是什么?二者的关系是怎样的?
- 4.训练过程中为什么要监控验证集指标?如果验证集损失不再下降,可能的原因有哪些?
- 5.什么是早停(Early Stopping)?在训练流程中如何合理设置早停的触发条件?
- 1.如何从训练集和验证集的损失/精度曲线区分过拟合和欠拟合?各自的曲线特征是什么?
- 2.过拟合产生的根本原因是什么?常见的场景有哪些?
- 3.针对过拟合问题,有哪些常用的解决方法?请分别说明其核心原理。
- 4.欠拟合的核心原因是什么?解决欠拟合的主要思路有哪些?
- 5.在实际项目中,如何判断模型当前是过拟合、欠拟合还是拟合良好?后续该如何调整策略?
- 6.数据增强为什么能缓解过拟合?它对欠拟合问题是否有帮助?为什么?
- 1.批量大小(Batch Size)的大小对模型训练有哪些影响?过大或过小的批量大小分别会带来什么问题?
- 2.学习率(Learning Rate)的核心作用是什么?学习率过大或过小会导致哪些训练问题?
- 3.批量大小和学习率之间是否存在关联?在调整批量大小时,为什么通常需要同步调整学习率?
- 4.常用的学习率调整策略有哪些(如余弦退火、阶梯下降等)?各自适用于什么场景?
- 5.在实际项目中,如何选择初始学习率和批量大小?有哪些实用的调试方法?
- 6.小批量随机梯度下降(Mini-Batch SGD)相比批量梯度下降(BGD)和随机梯度下降(SGD)有哪些优势?
- 1.正则化的核心目的是什么?它是如何缓解过拟合的?
- 2.L1正则化和L2正则化的数学形式分别是什么?二者在效果和原理上有哪些核心区别?
- 3.Dropout的核心原理是什么?训练阶段和测试阶段对Dropout的处理有何不同?为什么要这样处理?
- 4.除了L1/L2和Dropout,还有哪些常用的正则化方法?请简要说明其原理(如权重衰减、BatchNorm、早停等)。
- 5.权重衰减(Weight Decay)和L2正则化的关系是什么?在实际使用中需要注意什么?
- 6.Batch Normalization是否属于正则化方法?它是如何起到正则化效果的?
- 1.深度学习训练中为什么要做特征/数据归一化?不归一化可能会导致哪些训练问题?
- 2.批归一化(Batch Normalization,BN)的核心原理是什么?它解决了训练中的“内部协变量偏移(Internal Covariate Shift)”具体指什么?
- 3.BN在训练阶段和测试阶段的计算逻辑有何不同?为什么需要这种差异?实际工程中如何实现测试阶段的BN?
- 4.除了BN,常用的归一化方法还有LN(Layer Normalization)、IN(Instance Normalization)、GN(Group Normalization),它们的核心区别是什么?各自适用于哪些场景?
- 5.批量大小(Batch Size)对BN的效果有什么影响?小批量训练时使用BN会出现什么问题?有哪些改进方案(如SyncBN、BNNeck)?
- 6.Layer Normalization(LN)为什么更适合RNN、Transformer等序列模型?而BN更适合CNN?
- 7.归一化层通常放在网络的什么位置(卷积/全连接层前/后?激活函数前/后?)?不同位置对模型训练和性能有何影响?
- 8.归一化方法是否具备正则化效果?如果有,其背后的原因是什么?
- 1.什么是模型预训练?预训练模型的核心价值是什么?为什么在深度学习中预训练+微调的模式被广泛应用?
- 2.预训练与微调的核心区别是什么?二者的关联的是什么?微调的本质是解决什么问题?
- 3.在实际项目中,模型微调的核心步骤有哪些?需要重点关注哪些细节(如数据适配、学习率设置、层冻结等)?
- 4.什么是“灾难性遗忘”?在微调过程中如何缓解这一问题?常见的解决方案有哪些(如增量学习、弹性权重整合等)?
- 5.针对小数据集场景,微调时应采用哪些策略来避免过拟合?为什么不建议在小数据集上对预训练模型进行全量微调?
- 6.预训练模型的选择需要考虑哪些因素?如何判断一个预训练模型是否适合当前的任务和数据场景?
- 7.微调过程中,“冻结部分层”和“全量微调”分别适用于什么场景?如何确定哪些层需要冻结、哪些层需要微调?
- 8.跨领域微调(如将ImageNet预训练模型用于医学影像任务)需要注意什么?如何提升跨领域微调的效果?
- 9.微调时的学习率设置与从头训练有何不同?为什么通常需要采用较小的学习率进行微调?常用的微调学习率策略有哪些?
- 1.模型参数初始化的核心目的是什么?为什么随机初始化参数时不能全部初始化为0或相同值?
- 2.深度学习中常用的参数初始化方法有哪些(如Xavier初始化、He初始化等)?它们的核心设计思路是什么?各自适用于哪些激活函数场景?
- 3.什么是超参数?深度学习训练中常见的超参数有哪些?超参数与模型可学习参数的核心区别是什么?
- 4.超参数调优的常用策略有哪些(如网格搜索、随机搜索、贝叶斯优化等)?它们的优缺点及适用场景分别是什么?
- 5.在实际项目中,如何确定超参数调优的优先级?哪些超参数对模型性能的影响通常更大?
- 6.参数初始化不当会导致哪些训练问题(如梯度消失、梯度爆炸)?如何通过初始化策略缓解这些问题?
- 7.预训练模型的参数初始化与从头训练的初始化有何不同?微调时是否需要重新初始化部分层的参数?为什么?
- 1.学习率的核心物理意义是什么?它在梯度下降过程中如何影响模型参数的更新方向和步长?
- 2.学习率过大或过小分别会导致哪些具体的训练问题(如不收敛、收敛过慢、震荡等)?请结合梯度更新公式说明原因。
- 3.常用的学习率调度策略有哪些(如恒定学习率、阶梯下降、余弦退火、自适应学习率等)?请分别说明其核心逻辑和适用场景。
- 4.自适应学习率优化器(如Adam、RMSprop、Adagrad)的学习率调整逻辑与传统SGD的固定学习率有何不同?它们的优势和潜在问题分别是什么?
- 5.如何通过实验确定最优的初始学习率?常用的“学习率查找器(Learning Rate Finder)”的核心原理是什么?
- 6.不同训练阶段(如初始训练、收敛阶段、微调阶段)的学习率设置有何差异?为什么需要分阶段调整学习率?
- 7.批量大小与学习率之间的适配关系是什么?为什么增大批量大小时,通常需要同步增大学习率?请结合梯度估计的方差说明。
深度学习模型完整训练流程的核心步骤及目的如下:
- 数据预处理与准备
- 核心目的:将原始数据转换为模型可输入的格式,消除数据噪声和冗余,提升数据质量,确保模型训练的有效性。
- 具体操作:数据清洗(处理缺失值、异常值)、数据标准化/归一化(使特征分布符合模型假设,加速收敛)、数据增强(扩充训练集规模,提升模型泛化能力)、数据集划分(分为训练集、验证集、测试集)。
- 模型架构设计与初始化
- 核心目的:构建适配任务需求的网络结构,为模型训练提供初始参数。
- 具体操作:根据任务类型(分类、检测、分割等)选择基础网络(如CNN、RNN、Transformer),设计网络层数、神经元数量、激活函数等;采用随机初始化、预训练权重初始化等方式设置初始参数。
- 损失函数与优化器选择
- 核心目的:定义模型的优化目标(损失函数)和参数更新策略(优化器),为模型训练提供方向。
- 具体操作:分类任务选择交叉熵损失,回归任务选择均方误差损失;选择优化器(如SGD、Adam、RMSprop),设置学习率、动量等超参数。
- 模型训练(迭代训练)
- 核心目的:通过前向传播和反向传播迭代更新模型参数,使模型逐步拟合训练数据的规律。
- 具体操作:将训练集数据输入模型进行前向传播,计算预测值与真实值的损失;通过反向传播计算参数梯度,利用优化器更新参数;重复迭代直至满足停止条件。
- 模型评估与调优
- 核心目的:通过验证集评估模型性能,调整超参数和网络结构,提升模型泛化能力。
- 具体操作:在验证集上计算准确率、召回率、损失值等指标;根据评估结果调整学习率、批次大小、网络层数等超参数,或采用正则化、早停等策略优化模型。
- 模型测试与部署
- 核心目的:在独立的测试集上验证模型的最终性能,确保模型在真实场景中的可用性。
- 具体操作:将测试集数据输入训练好的模型,评估模型在未知数据上的表现;若性能达标,则进行模型轻量化、部署上线等后续操作。
- 训练集(Training Set)
- 核心作用:用于模型的迭代训练,让模型学习数据中的特征和规律,更新模型参数。
- 占比通常为总数据集的60%~80%,是模型拟合的核心数据来源。
- 验证集(Validation Set)
- 核心作用:用于在训练过程中评估模型的泛化能力,指导模型调优。
- 具体用途:监控模型是否过拟合、调整超参数(如学习率、网络结构)、选择最优模型版本。占比通常为总数据集的10%~20%。
- 测试集(Test Set)
- 核心作用:用于在模型训练和调优完成后,评估模型的最终性能,提供无偏的性能指标。
- 测试集需与训练集、验证集独立分布,模拟模型在真实场景中的未知数据,占比通常为总数据集的10%~20%。
- 数据泄露问题:若使用测试集调优模型(如调整超参数、选择模型),模型会间接学习到测试集的特征规律,导致测试集的评估结果不再客观,无法反映模型在真实未知数据上的泛化能力。
- 过拟合风险:模型会针对性地拟合测试集数据,在测试集上表现优异,但在全新数据上表现差,失去模型训练的意义。
- 评估指标失真:测试集的核心价值是提供无偏的最终性能评估,参与调优后,评估指标会高估模型性能,误导后续的部署决策。
- 定义:数据从模型输入层传入,经过隐藏层的线性变换和非线性激活,最终到达输出层,得到预测结果的过程。
-
核心逻辑
- 输入:训练数据的特征向量
$X$ 。 - 计算过程:对于每一层网络,通过公式
$Z_l = W_l \cdot A_{l-1} + b_l$ 计算线性输出($W_l$ 为权重,$b_l$ 为偏置,$A_{l-1}$ 为上一层输出),再通过激活函数$A_l = \sigma(Z_l)$ 得到非线性输出,逐层传递至输出层。 - 输出:模型的预测值
$\hat{Y}$ 。 - 核心目的:计算预测值与真实值之间的损失值,为反向传播提供优化依据。
- 输入:训练数据的特征向量
- 定义:基于前向传播计算的损失值,从输出层反向推导至输入层,计算每个参数对损失值的梯度,进而更新参数的过程。
-
核心逻辑
- 输入:前向传播得到的损失值
$L(\hat{Y}, Y)$ 。 - 计算过程:利用链式法则,从输出层开始,逐层计算损失值对各层权重
$W$ 、偏置$b$ 的梯度$\frac{\partial L}{\partial W}$ 、$\frac{\partial L}{\partial b}$;梯度的物理意义是参数变化对损失值的影响程度。 - 输出:所有参数的梯度值。
- 核心目的:为优化器提供参数更新的方向和幅度,使模型参数向减小损失的方向调整。
- 输入:前向传播得到的损失值
- 依存关系:前向传播是反向传播的基础,没有前向传播的损失值,反向传播就失去了优化目标;反向传播是前向传播的优化手段,没有反向传播,模型参数无法更新,无法完成训练。
- 迭代循环关系:二者构成模型训练的基本迭代单元。每次迭代中,先执行前向传播计算损失,再执行反向传播计算梯度并更新参数,循环往复直至模型收敛。
- 目标统一关系:最终目标都是使模型的预测值尽可能接近真实值,最小化损失函数。
- 判断模型泛化能力:训练集指标反映模型对训练数据的拟合程度,验证集指标反映模型对未见过数据的泛化能力。若训练集损失持续下降,而验证集损失上升,说明模型发生过拟合。
- 指导模型调优:验证集指标是超参数调整(如学习率、网络结构)的核心依据。通过监控验证集的准确率、损失值等指标,可选择最优的模型参数和结构。
- 确定训练停止时机:当验证集损失不再下降甚至上升时,继续训练会导致过拟合,此时应停止训练,避免模型性能退化。
- 模型过拟合
- 表现:训练集损失持续下降,验证集损失趋于平稳或上升。
- 原因:模型复杂度过高(如网络层数过多、参数过多),学习到训练数据中的噪声和冗余特征,无法泛化到验证集。
- 学习率设置不合理
- 学习率过高:模型参数在最优解附近震荡,无法收敛到最小值,验证集损失停滞不前。
- 学习率过低:模型参数更新速度过慢,在有限迭代次数内无法接近最优解,验证集损失下降到一定程度后不再变化。
- 数据问题
- 训练集和验证集分布不一致:验证集数据与训练集数据的特征分布差异较大,模型学到的规律无法适配验证集。
- 数据量不足:训练集数据规模过小,模型无法学习到足够的特征规律,泛化能力差,验证集损失难以下降。
- 模型欠拟合
- 表现:训练集损失和验证集损失都较高,且均不再下降。
- 原因:模型复杂度过低(如网络层数过少),无法捕捉数据中的复杂特征,导致模型拟合能力不足。
- 训练过程陷入局部最优解
- 原因:损失函数存在多个局部最小值,模型参数在训练过程中陷入局部最优解,无法跳转到全局最优解,导致验证集损失不再下降。
早停是深度学习中一种防止过拟合的正则化策略,核心思想是:在模型训练过程中,持续监控验证集指标(如损失值、准确率),当验证集指标不再提升甚至下降时,提前终止训练,保留此时的最优模型参数。
早停的本质是避免模型过度拟合训练数据,平衡模型的拟合能力和泛化能力。
早停的触发条件通常包含监控指标、耐心值、阈值三个核心要素,具体设置方法如下:
- 选择合适的监控指标
- 核心原则:选择与任务目标一致的验证集指标,优先选择泛化能力相关的指标。
- 分类任务:可选择验证集损失值(Loss)、准确率(Accuracy)、F1分数等;推荐优先监控损失值,因为损失值是连续值,变化更敏感。
- 回归任务:可选择验证集均方误差(MSE)、平均绝对误差(MAE)等。
- 注意:避免使用训练集指标作为监控依据,否则无法有效防止过拟合。
- 设置合理的耐心值(Patience)
- 定义:耐心值是指验证集指标连续多少次迭代没有提升后,触发早停的阈值。
- 设置方法:
- 经验值:根据任务复杂度和数据规模调整,通常设置为10
50轮迭代。简单任务(如MNIST分类)可设置较小值(1020),复杂任务(如指静脉识别、图像分割)可设置较大值(30~50)。 - 避免过小:耐心值太小会导致模型提前终止训练,陷入欠拟合;避免过大:耐心值太大会增加训练时间,且可能导致模型过拟合。
- 经验值:根据任务复杂度和数据规模调整,通常设置为10
- 设置指标提升阈值(Min Delta)
- 定义:指标提升阈值是指验证集指标的最小提升幅度,只有当指标提升超过该阈值时,才认为模型有进步,否则视为无提升。
- 设置方法:通常设置为一个极小值(如1e-4~1e-3),目的是过滤指标的微小波动,避免因噪声导致误触发早停。例如,若设置
min_delta=0.0001,只有当验证集损失下降超过0.0001时,才重置耐心值计数。
- 保存最优模型
- 触发早停时,最终保存的模型应为训练过程中验证集指标最优的模型,而非最后一轮迭代的模型。
early_stopping = EarlyStopping(
monitor='val_loss', # 监控验证集损失
patience=20, # 连续20轮无提升则停止
min_delta=0.0001, # 损失下降幅度小于0.0001视为无提升
restore_best_weights=True # 恢复最优模型权重
)
# 训练循环
for epoch in range(max_epochs):
model.train()
train_loss = train_one_epoch()
model.eval()
val_loss = validate_one_epoch()
# 监控验证集损失,判断是否早停
early_stopping(val_loss, model)
if early_stopping.early_stop:
print("早停触发,终止训练")
break可以通过训练集与验证集的损失曲线、精度曲线的数值大小和差距变化来区分过拟合、欠拟合和拟合良好三种状态,具体特征如下:
- 欠拟合的曲线特征
- 损失曲线:训练集和验证集的损失值均处于较高水平,且两者差距极小;训练过程中,两条曲线快速趋于平稳,无明显下降趋势。
- 精度曲线:训练集和验证集的精度值均处于较低水平,且两者差距极小;曲线快速进入平稳状态,无明显上升空间。
- 核心特征:模型未学到数据的有效规律,在训练集和验证集上的表现都很差。
- 过拟合的曲线特征
- 损失曲线:训练集损失持续下降,最终趋近于较低值;验证集损失先下降后上升,在某个epoch后与训练集损失的差距逐渐拉大。
- 精度曲线:训练集精度持续上升,最终趋近于较高值;验证集精度先上升后下降,在某个epoch后与训练集精度的差距逐渐拉大。
- 核心特征:模型在训练集上表现优异,但在验证集上表现恶化,泛化能力差。
- 拟合良好的曲线特征
- 损失曲线:训练集和验证集的损失值均处于较低水平,且两者差距始终较小;最终两条曲线趋于平稳,无明显分离趋势。
- 精度曲线:训练集和验证集的精度值均处于较高水平,且两者差距始终较小;最终两条曲线趋于平稳,保持同步状态。
- 核心特征:模型在训练集和验证集上的表现均衡,泛化能力强。
模型的复杂度远高于训练数据的复杂度,导致模型过度学习了训练数据中的噪声、异常值和样本特异性特征,而非数据的通用规律,最终泛化能力急剧下降。 本质是:模型的拟合能力过强,超出了数据本身的规律承载能力。
- 训练数据量不足:数据集规模远小于模型参数数量,模型可以“死记硬背”训练样本,无法学习通用规律。例如指静脉识别项目中,仅用几十张样本训练深层神经网络。
- 训练数据分布不均:训练集存在大量重复样本、异常值或类别不平衡,模型学习到这些偏差特征。例如指静脉图像中某类样本的光照噪声被模型当作核心特征。
- 模型结构过于复杂:使用了层数过多、神经元数量过大的网络,例如用100层的CNN训练简单的指静脉分类任务。
- 训练轮数过多:模型在训练集上持续迭代,从“学习规律”转向“学习噪声”,验证集性能开始下降。
- 缺乏正则化约束:未使用任何正则化手段(如L1/L2、Dropout),模型参数可以无限制地拟合训练数据。
针对过拟合的常用解决方法及核心原理如下:
- 早停(Early Stopping)
- 核心原理:监控验证集的性能指标(如损失、精度),当指标连续多个epoch不再提升甚至下降时,提前终止训练,避免模型过度学习训练数据的噪声。
- 关键:保存验证集性能最优时的模型权重。
- L1/L2正则化
- 核心原理:在损失函数中加入参数的范数惩罚项,限制模型参数的大小,避免参数过度拟合噪声。
- L1正则化:惩罚项为参数的L1范数(绝对值和),可使部分参数变为0,实现特征选择。
- L2正则化(权重衰减):惩罚项为参数的L2范数(平方和),可使参数值趋于较小的范围,防止参数过大。
- 数据增强(Data Augmentation)
- 核心原理:对训练数据进行随机变换(如旋转、平移、翻转、灰度变换等),增加训练数据的多样性和规模,让模型学习到更通用的特征,减少对样本特异性特征的依赖。例如指静脉识别中对图像做弹性形变、光照增强。
- Dropout
- 核心原理:训练过程中随机丢弃部分神经元,强制模型不依赖特定神经元的输出,减少神经元之间的共适应现象,迫使模型学习到更鲁棒的特征表示。测试时恢复所有神经元,通过加权平均输出。
- 批量归一化(Batch Normalization)
- 核心原理:对每层的输入进行归一化处理,稳定网络的训练过程,降低内部协变量偏移,同时起到轻微的正则化效果,减少过拟合风险。
- 模型简化
- 核心原理:降低模型的复杂度,使其与数据的复杂度匹配。例如减少网络层数、降低神经元数量、使用更简单的模型结构(如用轻量级CNN替代深层CNN)。
- 集成学习(Ensemble Learning)
- 核心原理:训练多个不同的模型,通过投票、平均等方式融合输出结果。不同模型的过拟合方向不同,融合后可抵消部分过拟合效应,提升泛化能力。例如指静脉识别中融合多个CNN模型的预测结果。
- 数据集扩充
- 核心原理:收集更多真实的训练样本,扩大数据集规模,让模型有足够的数据学习通用规律,减少对噪声的拟合。
模型的拟合能力不足,无法捕捉训练数据中的潜在规律,本质是模型复杂度低于数据的复杂度。具体可分为以下三类:
- 模型结构过于简单:模型的表达能力不足以学习数据的复杂模式。例如用线性模型拟合非线性的指静脉纹理特征。
- 特征工程不到位:输入的特征维度不足、有效特征缺失,模型无法基于现有特征学习到规律。例如指静脉识别中仅用灰度值作为特征,未提取纹理、边缘等关键特征。
- 训练过程不充分:训练轮数不足、正则化强度过高,导致模型尚未学到有效规律就停止训练。
- 提升模型复杂度
- 增加网络层数、神经元数量,例如将简单的2层CNN改为5层CNN;
- 使用更复杂的模型结构,例如用ResNet替代基础CNN,引入注意力机制等。
- 优化特征工程
- 提取更丰富的有效特征,例如指静脉识别中加入Gabor滤波、LBP纹理特征等;
- 进行特征融合,将多个特征组合输入模型;
- 增加特征维度,通过主成分分析(PCA)、嵌入层等方式提升特征的表达能力。
- 调整训练策略
- 增加训练轮数,让模型有足够的时间学习数据规律;
- 减小正则化强度,例如降低L1/L2的惩罚系数、关闭Dropout或降低Dropout率;
- 优化优化器参数,例如调整学习率、使用自适应优化器(Adam替代SGD)。
- 数据预处理优化
- 去除数据中的噪声和异常值,确保训练数据的质量;
- 对数据进行归一化、标准化处理,提升模型的训练效率。
通过训练集和验证集的损失值、精度值的绝对值和相对差距进行综合判断,具体标准如下:
| 拟合状态 | 核心判断指标 |
|---|---|
| 欠拟合 | 1. 训练集和验证集的损失均高,精度均低; 2. 训练集和验证集的指标差距极小; 3. 训练曲线快速平稳,无明显下降/上升空间 |
| 过拟合 | 1. 训练集损失低、精度高,验证集损失高、精度低; 2. 训练集和验证集的指标差距极大; 3. 验证集指标在训练后期出现明显下降 |
| 拟合良好 | 1. 训练集和验证集的损失均低,精度均高; 2. 训练集和验证集的指标差距较小且稳定; 3. 两条曲线最终趋于平稳,无明显分离趋势 |
- 判断为过拟合时的调整策略
- 优先使用早停和数据增强(低成本、高收益);
- 加入正则化(L2正则化、Dropout)或批量归一化;
- 若模型过于复杂,简化模型结构(减少层数、神经元数量);
- 扩充真实训练数据集,或使用迁移学习预训练模型。
- 判断为欠拟合时的调整策略
- 优先提升模型复杂度(加深网络、增加神经元);
- 优化特征工程,提取更多有效特征;
- 调整训练参数(增加训练轮数、减小正则化强度、优化学习率);
- 若数据量过少,可适当增加训练数据量(真实数据优先)。
- 判断为拟合良好时的调整策略
- 保存当前最优模型权重;
- 在测试集上验证模型性能,确认泛化能力;
- 进行模型的鲁棒性测试(如加入噪声、变换输入),确保模型稳定性。
数据增强是通过对训练数据进行随机、合理的变换生成新样本,从而缓解过拟合,核心原理如下:
- 扩充有效数据集规模:数据增强生成的新样本虽然基于原有数据,但包含了不同的特征视角(如指静脉图像的旋转、平移),等效于扩大了训练集的规模,让模型有更多数据学习通用规律。
- 减少样本特异性特征的影响:模型无法再依赖训练样本的特异性特征(如某张指静脉图像的光照角度、位置),被迫学习数据的本质特征(如静脉的纹理、拓扑结构),从而提升泛化能力。
- 增强模型的鲁棒性:随机变换让模型对输入的微小变化不敏感,例如指静脉图像的轻微旋转不会影响模型的识别结果,进一步降低过拟合风险。
数据增强对欠拟合问题通常帮助有限,仅在特定场景下有轻微作用,具体分析如下:
- 一般情况:无明显帮助 欠拟合的核心原因是模型拟合能力不足或有效特征缺失,而非数据量不足。数据增强仅增加了数据的多样性,并未提升模型的表达能力,也无法补充缺失的有效特征。例如用线性模型拟合非线性的指静脉数据,即使进行大量数据增强,模型仍无法学习到非线性规律,欠拟合问题依然存在。
- 特殊情况:有轻微帮助 当欠拟合的原因是训练数据量过少,导致模型无法充分学习到基础规律时,数据增强可以扩充数据规模,帮助模型学习到更全面的基础特征,从而在一定程度上缓解欠拟合。但这种缓解是有限的,无法替代提升模型复杂度、优化特征工程等核心解决方法。
批量大小(Batch Size)是指一次梯度下降迭代中参与梯度计算的样本数量,其取值直接影响模型的训练效率、收敛稳定性与泛化能力,核心影响及大小批量的问题如下:
- 对训练效率的影响
- 硬件层面:GPU 等并行计算设备对批量数据的计算有并行加速效应,合理的批量大小能最大化利用硬件算力,提升训练速度;
- 迭代次数层面:相同数据集下,批量越小,完成一轮 epoch 的迭代次数越多,训练耗时越长;批量越大,迭代次数越少,单轮 epoch 耗时越短(但受限于硬件内存上限)。
- 对梯度估计精度的影响
- 梯度是模型参数更新的依据,批量大小决定了梯度的统计代表性:批量越大,梯度计算基于更多样本,梯度估计的方差越小,方向越接近全量数据的真实梯度(BGD 梯度),训练过程更稳定;批量越小,梯度方差越大,梯度方向波动剧烈,训练震荡明显。
- 对模型泛化能力的影响
- 小批量训练相当于引入了随机正则化:梯度的波动会迫使模型跳出局部最优,更容易找到泛化能力强的全局最优解;
- 大批量训练的梯度过于稳定,模型易陷入“尖锐的局部最优解”,导致在训练集上表现好,但在测试集上泛化性能差。
- 过大批量的问题
- 硬件内存瓶颈:大批量会占用更多 GPU/CPU 内存,甚至超出硬件限制导致训练中断;
- 泛化能力下降:梯度过于平滑,模型易过拟合,对测试集的适应性差;
- 收敛速度悖论:虽然单轮 epoch 迭代次数少,但大批量需要更大的学习率才能维持收敛效率,若学习率未同步调整,会导致收敛速度变慢。
- 过小批量的问题
- 训练稳定性差:梯度波动剧烈,loss 曲线震荡严重,难以收敛到最优解;
- 硬件算力浪费:小批量无法充分利用 GPU 的并行计算能力,单样本计算的开销占比过高,训练效率低下;
- 训练耗时增加:完成一轮 epoch 需要更多迭代次数,整体训练周期拉长。
学习率(Learning Rate,η)是梯度下降优化算法的核心超参数,其本质是控制模型参数更新的“步长”,核心作用可概括为两点:
- 平衡收敛速度与收敛精度:学习率决定了模型参数沿梯度负方向(损失函数下降方向)更新的幅度,直接影响模型从初始状态收敛到最优解的速度和最终精度;
- 引导梯度搜索方向:合适的学习率能让参数在梯度下降过程中快速逼近损失函数的全局最优解或较优的局部最优解;反之则会偏离最优解方向。
- 损失函数震荡不收敛:过大的步长会导致参数更新幅度过大,跳过损失函数的最优解,甚至在最优解附近来回震荡,无法稳定收敛;
- 梯度爆炸风险:在深层网络(如 CNN、Transformer)中,过大的学习率可能导致参数值急剧增大,引发梯度爆炸,表现为 loss 突然变为
NaN或无穷大; - 模型不稳定:参数更新方向受噪声影响大,模型在训练集上的性能波动剧烈,难以收敛到稳定的最优状态。
- 收敛速度极慢:过小的步长会让参数更新幅度微乎其微,模型需要成千上万轮 epoch 才能逼近最优解,大幅增加训练时间成本;
- 陷入局部最优解:若损失函数存在多个局部最优解,过小的学习率会让参数“卡”在局部最优解中无法跳出,导致模型最终精度低于预期;
- 过拟合风险增加:小学习率下模型训练时间长,易对训练集的细节特征过度拟合,降低对测试集的泛化能力。
批量大小和学习率是深度学习训练中强耦合的两个超参数,其关联本质源于梯度估计的方差特性:
- 批量越大,梯度计算的样本数越多,梯度估计的方差越小,梯度方向越接近全量数据的真实梯度(BGD 梯度);
- 批量越小,梯度估计的方差越大,梯度方向的随机性越强。
而学习率作为参数更新的步长,其最优取值依赖于梯度估计的稳定性——稳定的梯度允许更大的步长,不稳定的梯度则需要更小的步长来避免震荡。
这一规则的核心理论支撑是 “线性缩放规则(Linear Scaling Rule)”,该规则由 Facebook AI 提出,是深度学习工程中调整批量大小的黄金法则,具体原因如下:
- 维持梯度更新的有效步长
当批量大小扩大 k 倍时,梯度估计的方差会缩小 k 倍,梯度的稳定性提升 k 倍。此时若将学习率同步扩大 k 倍,可保持每轮 epoch 内参数的总更新幅度不变,从而维持模型的收敛速度和精度。
- 示例:若原批量大小为 32,学习率为 0.1;当批量扩大到 64(k=2),学习率应同步调整为 0.2。
- 避免收敛效率下降或震荡
- 若批量增大但学习率不调整:梯度稳定性提升,但步长相对过小,参数更新幅度不足,导致收敛速度变慢;
- 若批量减小但学习率不调整:梯度方差增大,步长相对过大,参数更新易出现震荡,甚至无法收敛。
- 匹配硬件算力与训练目标 调整批量大小的核心目的之一是最大化利用硬件并行算力(如 GPU 显存)。同步调整学习率可确保在算力提升的同时,不牺牲模型的收敛性能,实现“算力利用率”与“训练效率”的双赢。
线性缩放规则并非绝对,在大批量训练场景下(如批量大小 > 1024),单纯的线性缩放可能导致模型泛化能力下降,此时需结合学习率退火策略(如余弦退火)进一步优化。
深度学习中的学习率调整策略可分为 “预设调度策略” 和 “自适应调度策略” 两大类,核心目标是在训练前期用大学习率快速收敛,后期用小学习率精细搜索最优解,常用策略及适用场景如下:
-
阶梯下降(StepLR)
-
原理:按预设的 epoch 间隔将学习率乘以衰减系数 γ(γ ∈ (0,1)),公式为
$\eta_{t+1} = \eta_t \times \gamma$ 。例如每 10 轮 epoch 学习率下降为原来的 0.1。 -
适用场景:
- 已知模型收敛周期的场景(如经典 CNN 模型:AlexNet、VGG 训练);
- 数据集分布相对稳定,且对训练轮数有明确预期的任务;
- 优点是简单易实现,缺点是衰减时机固定,无法适应数据的动态变化。
-
原理:按预设的 epoch 间隔将学习率乘以衰减系数 γ(γ ∈ (0,1)),公式为
-
余弦退火(CosineAnnealingLR)
-
原理:学习率随 epoch 变化遵循余弦函数曲线,在一个周期内从初始值平滑下降到最小值,公式为
$\eta_t = \eta_{min} + \frac{1}{2}(\eta_{max}-\eta_{min})(1+\cos(\frac{t\pi}{T}))$ ,其中 T 为周期长度。 -
适用场景:
- 追求高精度模型的任务(如图像分类、指静脉识别等小样本/精细识别场景);
- 避免模型陷入局部最优解的场景,余弦退火的平滑下降能让模型在后期更精细地搜索最优解;
- 配合 SGDR(带重启的余弦退火) 可用于需要跳出局部最优的复杂任务(如深度强化学习)。
-
原理:学习率随 epoch 变化遵循余弦函数曲线,在一个周期内从初始值平滑下降到最小值,公式为
-
指数衰减(ExponentialLR)
-
原理:每轮 epoch 学习率按指数规律衰减,公式为
$\eta_{t+1} = \eta_t \times \gamma^t$ ,衰减速度比阶梯下降更快。 -
适用场景:
- 模型收敛速度快,需要快速降低学习率的简单任务(如线性回归、浅层神经网络训练);
- 不适合深层模型,因为过快的衰减会导致模型提前收敛到次优解。
-
原理:每轮 epoch 学习率按指数规律衰减,公式为
-
多项式衰减(PolynomialLR)
-
原理:学习率随 epoch 按多项式函数下降到指定最小值,公式为
$\eta_t = \eta_{max}(1-\frac{t}{T})^p$ ,其中 p 为多项式次数。 -
适用场景:
- 需要自定义衰减速度的场景(通过调整 p 值控制衰减快慢);
- 语义分割、目标检测等需要平衡训练速度和精度的密集预测任务。
-
原理:学习率随 epoch 按多项式函数下降到指定最小值,公式为
- 基于验证集指标的衰减(ReduceLROnPlateau)
- 原理:监控验证集指标(如验证 loss、准确率),当指标连续多轮 epoch 不再提升时,自动降低学习率(如乘以 0.1)。
- 适用场景:
- 大多数实际项目的默认选择,尤其是数据集分布复杂、收敛周期不确定的任务(如指静脉识别的跨设备数据训练);
- 能有效避免过拟合,当验证集指标停滞时降低学习率,让模型在后期更专注于泛化能力优化。
- 自适应优化器内置策略(Adam、Adagrad 等)
- 原理:优化器本身根据参数的梯度历史动态调整学习率(如 Adam 结合动量和自适应学习率,对不同参数分配不同步长)。
- 适用场景:
- 数据稀疏的任务(如自然语言处理中的词嵌入训练);
- 深层网络训练(如 Transformer),自适应策略能有效缓解梯度消失/爆炸问题。
批量大小的选择需优先匹配硬件资源,其次结合数据集特性和模型结构,具体步骤如下:
- 硬件内存优先原则
- 从 2 的幂次值 开始测试(如 16、32、64、128),这是因为 GPU 的内存对齐机制对 2 的幂次批量有更好的并行加速效果;
- 测试方法:固定模型结构和学习率,逐步增大批量大小,直到 GPU 内存使用率接近 90%(避免内存溢出),此时的批量为硬件支持的最大有效批量。
- 结合数据集与模型特性
- 小数据集(样本数 < 1 万):选择较小批量(16-32),利用梯度的随机性提升泛化能力;
- 大数据集(样本数 > 10 万):选择较大批量(64-256),提升硬件并行效率,缩短训练周期;
- 复杂模型(如深层 CNN、Transformer):选择较小批量,避免内存占用过高;简单模型(如浅层分类器)可选择较大批量。
初始学习率的选择需参考经验值 + 科学调试,避免盲目试错,具体方法如下:
-
参考同类任务的经验值
- 经典 CNN 模型(如 ResNet、MobileNet):初始学习率通常为
$10^{-3}$ ; - Transformer 及 NLP 模型:初始学习率通常为
$10^{-4}$ ; - 微调预训练模型:初始学习率需降低 10-100 倍(如
$10^{-5}$ -$10^{-6}$),避免破坏预训练的特征提取能力; - 指静脉识别等小样本精细识别任务:建议初始学习率为
$5\times10^{-4}$ -$10^{-3}$。
- 经典 CNN 模型(如 ResNet、MobileNet):初始学习率通常为
-
学习率扫描法(LR Finder)—— 最实用的科学方法
-
原理:固定批量大小和 epoch 数,从极小学习率(如
$10^{-7}$ )开始,每批数据后按指数规律增大学习率,同时记录损失函数值; -
操作步骤:
- 绘制“学习率 - 损失函数”曲线;
- 找到曲线中损失函数下降最快的区间对应的学习率,将其作为初始学习率;
- 若曲线中损失函数突然上升,说明学习率已过大,需选择上升前的最大有效学习率。
-
工具支持:PyTorch 的
torch.optim.lr_scheduler或 FastAI 库的lr_find()函数可直接实现。
-
原理:固定批量大小和 epoch 数,从极小学习率(如
- 控制变量法调试
- 固定学习率,调整批量大小:观察训练 loss 和验证 loss 的收敛趋势,选择“收敛速度快 + 泛化能力强”的批量;
- 固定批量大小,调整学习率:若 loss 震荡不收敛,降低学习率;若 loss 下降极慢,适当增大学习率。
- 监控关键指标
- 训练 loss 与验证 loss 的差距:若差距过大,说明模型过拟合,可降低学习率或增大批量;
- 梯度范数:若梯度范数持续增大,说明学习率过大,有梯度爆炸风险;若梯度范数趋近于 0,说明学习率过小,梯度消失。
- 交叉验证法
- 将数据集分为多个训练集 - 验证集折,测试不同批量和学习率组合的平均性能,选择最优组合,避免单次实验的偶然性。
梯度下降算法的核心区别在于参与梯度计算的样本数量,三种算法的定义及 Mini-Batch SGD 的优势如下:
| 算法 | 梯度计算样本数 | 核心特点 |
|---|---|---|
| 批量梯度下降(BGD) | 全量训练集 | 梯度准确,训练稳定,但速度慢、内存占用大 |
| 随机梯度下降(SGD) | 单个训练样本 | 速度快、内存小,但梯度震荡,收敛慢 |
| 小批量随机梯度下降(Mini-Batch SGD) | 小批量样本(16-256) | 平衡 BGD 和 SGD 的优点,是深度学习主流选择 |
- 兼顾训练速度与硬件并行效率
- 相比 BGD:BGD 每次迭代需计算全量数据的梯度,内存占用极大,且无法利用 GPU 的并行计算能力,在大数据集下训练速度极慢;Mini-Batch SGD 用小批量样本计算梯度,内存占用可控,且批量数据的并行计算能最大化 GPU 算力,大幅提升训练速度。
- 相比 SGD:SGD 每次仅用单个样本计算梯度,频繁的参数更新导致硬件的“计算开销”远小于“数据读取和通信开销”,无法发挥并行优势;Mini-Batch SGD 减少了迭代次数,平衡了计算与通信开销,训练效率更高。
- 平衡梯度稳定性与随机性
- 相比 BGD:BGD 的梯度过于准确,模型易陷入“尖锐的局部最优解”,泛化能力差;Mini-Batch SGD 的梯度存在适度随机性,相当于引入了随机正则化,迫使模型跳出局部最优,找到泛化能力更强的“平坦最优解”。
- 相比 SGD:SGD 的梯度方差极大,loss 曲线震荡剧烈,收敛速度慢,甚至可能无法收敛到稳定最优解;Mini-Batch SGD 的梯度是小批量样本的平均,方差显著降低,训练过程更稳定,收敛速度更快。
- 适配深度学习的大规模训练场景
- 深度学习的核心优势在于处理大规模数据(如图像、文本),BGD 在大规模数据下几乎不可行(全量数据梯度计算耗时过久);SGD 虽可行但收敛效率低;
- Mini-Batch SGD 是唯一能在大规模数据 + 深层模型场景下,同时满足“训练效率、收敛稳定性、泛化能力”三大需求的优化算法,因此成为深度学习框架(如 PyTorch、TensorFlow)的默认优化器基础。
- 易于结合学习率调度与动量策略
- Mini-Batch SGD 可无缝集成动量(Momentum)、权重衰减(Weight Decay)、学习率退火等优化策略,进一步提升收敛速度和模型精度;
- 例如:带动量的 Mini-Batch SGD 可缓解梯度震荡,加速收敛;结合余弦退火的 Mini-Batch SGD 可在后期精细搜索最优解。
正则化是深度学习中一类抑制模型过拟合、提升泛化能力的技术的统称,其核心目标是:在保证模型对训练数据拟合能力的前提下,限制模型的复杂度,使模型能够更好地适应未知的测试数据。
过拟合的本质是模型过度学习了训练数据中的噪声和局部特征,而非数据的通用规律,导致模型在训练集上表现优异,但在测试集上性能显著下降。正则化的核心就是通过“约束模型”来避免这种过度学习。
正则化通过以下两种核心思路实现过拟合缓解:
- 限制模型参数的复杂度 通过在损失函数中加入参数惩罚项(如 L1、L2 正则化),迫使模型的权重参数尽可能小。参数值越小,模型的拟合能力越温和,不会因个别样本的噪声而大幅调整参数,从而降低对训练数据的过拟合程度。
- 引入随机性破坏模型的确定性依赖 通过在训练过程中引入随机操作(如 Dropout、随机数据增强),破坏模型对特定神经元或特定训练样本的依赖。例如 Dropout 随机丢弃部分神经元,迫使模型学习到更鲁棒的特征表示,而非依赖少数关键神经元的激活,进而提升泛化能力。
正则化的本质是在原始损失函数
| 正则化类型 | 正则化项 |
最终优化目标 |
|---|---|---|
| L1 正则化 | 权重参数的 L1 范数:$R(\theta)=\sum_{i} | \theta_i |
| L2 正则化 | 权重参数的 L2 范数的平方(通常加 |
| 对比维度 | L1 正则化 | L2 正则化 |
|---|---|---|
| 核心原理 | 对权重的绝对值进行惩罚,梯度为常数 |
对权重的平方进行惩罚,梯度与权重值成正比 |
| 参数分布效果 | 产生 稀疏权重:迫使不重要的特征对应的权重变为 0,实现特征选择 | 产生 稠密小权重:让所有权重都趋近于 0,但不会变为 0,防止个别权重过大 |
| 几何解释 | 正则化项的等高线为菱形,与损失函数等高线的交点更易落在坐标轴上(权重为 0) | 正则化项的等高线为圆形,与损失函数等高线的交点通常在象限内(权重非 0) |
| 适用场景 | 特征维度高、存在冗余特征的任务(如文本分类、高维数据降维) | 大多数通用任务(如图像分类、指静脉识别),用于防止模型过拟合、提升稳定性 |
| 对异常值的敏感性 | 对异常值更敏感(绝对值惩罚对极端值的抑制更强) | 对异常值相对鲁棒(平方惩罚对极端值的惩罚更平滑) |
Dropout 是一种基于随机失活的正则化方法,核心原理是:
在训练阶段,以预设概率
这种随机丢弃机制的本质是破坏模型对特定神经元的依赖:模型无法依赖少数关键神经元的激活来拟合训练数据,必须学习到更通用、鲁棒的特征表示;同时,多次训练相当于训练了多个“子网络”,最终模型可视为这些子网络的集成,从而提升泛化能力。
| 阶段 | 处理方式 |
|---|---|
| 训练阶段 | 1. 对每一层神经元,以概率 2. 未被丢弃的神经元的输出无需额外缩放(部分框架会提前缩放,等价于测试阶段的补偿)。 |
| 测试阶段 | 1. 不执行任何神经元丢弃操作,所有神经元均参与计算; 2. 对神经元的权重或输出进行缩放补偿,缩放因子为 |
训练阶段随机丢弃神经元会导致神经元的输出期望降低。假设一个神经元的输出为
测试阶段若不丢弃神经元且不缩放,输出期望为
通过在测试阶段乘以缩放因子
补充:部分框架(如 PyTorch)采用“训练时缩放”的策略(未被丢弃的神经元输出乘以
除 L1/L2 和 Dropout 外,深度学习中常用的正则化方法及其原理如下:
| 正则化方法 | 核心原理 | 适用场景 |
|---|---|---|
| 1. 权重衰减(Weight Decay) | 在优化器更新参数时,直接对权重参数乘以一个衰减系数 公式:$\theta_{t+1} = \theta_t - \eta \cdot \nabla L(\theta_t) - \eta \cdot \lambda \cdot \theta_t$ |
通用深度学习任务,尤其在自适应优化器(如 Adam)中效果优于 L2 正则化 |
| 2. 早停(Early Stopping) | 训练过程中监控验证集性能(如准确率、损失值),当验证集性能连续多轮(如 10 轮)不再提升甚至下降时,提前终止训练,防止模型过度拟合训练数据。 | 所有任务的标配正则化方法,尤其适合小数据集训练 |
| 3. 数据增强(Data Augmentation) | 通过对训练数据进行随机变换生成新样本,扩大训练数据集的多样性,迫使模型学习到数据的不变性特征(如平移、旋转、缩放不影响分类结果)。 典型操作:图像的翻转、裁剪、亮度调整;文本的同义词替换、随机插入/删除。 |
图像识别(如指静脉识别、人脸识别)、自然语言处理等数据量有限的任务 |
| 4. 批量归一化(Batch Normalization, BN) | 训练时对每个批次的特征进行均值和方差归一化,使特征分布稳定;同时引入可学习参数 正则化效果来源:不同批次的均值/方差存在随机波动,为模型引入了噪声,降低过拟合风险。 |
深层神经网络(如 CNN、Transformer),兼顾加速收敛和正则化 |
| 5. 标签平滑(Label Smoothing) | 对硬标签(如分类任务的 one-hot 标签)进行平滑处理,将绝对的 0/1 标签替换为 |
分类任务(如指静脉身份分类),提升模型泛化能力和鲁棒性 |
| 6. 范数约束(Norm Constraint) | 限制权重参数的 L1/L2 范数不超过某个阈值(如 |
对抗性训练、需要稳定输出的任务 |
| 7. 集成学习(Ensemble Learning) | 训练多个不同的子模型(如不同初始化、不同数据子集),最终预测结果为多个子模型的加权平均或投票,通过模型多样性降低过拟合风险。 | 追求高精度的任务(如竞赛、医疗影像识别) |
权重衰减和 L2 正则化在标准随机梯度下降(SGD)优化器下是等价的,但在自适应优化器(如 Adam、RMSprop)下存在本质区别,具体分析如下:
-
L2 正则化:在损失函数中添加 L2 惩罚项,优化目标为
$$L_{L2}(\theta)=L(\theta)+\frac{\lambda}{2}\sum_{i}\theta_i^2$$ 对$\theta$ 求导后,参数更新公式为$$\theta_{t+1} = \theta_t - \eta \cdot (\nabla L(\theta_t) + \lambda \cdot \theta_t)$$ -
权重衰减:直接在参数更新时对权重进行衰减,更新公式为
$$\theta_{t+1} = \theta_t - \eta \cdot \nabla L(\theta_t) - \eta \cdot \lambda \cdot \theta_t$$ 对比可知,两者的参数更新公式完全一致,权重衰减系数
$\lambda$ 等价于 L2 正则化系数$\lambda$ 。
自适应优化器(如 Adam)的参数更新公式为:
-
L2 正则化:惩罚项的梯度
$\lambda \cdot \theta_t$ 会被自适应学习率$\frac{m_t}{\sqrt{v_t}+\epsilon}$ 缩放,导致惩罚强度依赖于梯度的历史信息,对不同参数的惩罚力度不一致。 -
权重衰减:直接对权重
$\theta_t$ 进行衰减,不依赖于梯度信息,惩罚强度对所有参数一致,更稳定。
因此,在 Adam 等自适应优化器中,权重衰减的正则化效果优于 L2 正则化,是更推荐的选择。
-
避免同时使用 L2 正则化和权重衰减 两者叠加会导致惩罚强度翻倍,可能过度限制模型参数,导致欠拟合。
-
根据优化器选择合适的正则化方式
- 标准 SGD 优化器:L2 正则化和权重衰减任选其一,效果相同;
- 自适应优化器(Adam、RMSprop):优先使用权重衰减,而非 L2 正则化。
-
合理设置正则化系数
$\lambda$ -
$\lambda$ 过大:惩罚过强,模型参数过小,欠拟合; -
$\lambda$ 过小:惩罚过弱,无法有效抑制过拟合; - 经验值:$\lambda$ 通常取
$10^{-5} \sim 10^{-3}$ ,可通过验证集性能调整。
-
-
偏置参数(Bias)的处理 偏置参数(如神经网络中的
$b$ )通常不施加权重衰减/L2 正则化,因为偏置对模型复杂度的影响较小,正则化可能导致模型拟合能力下降。主流框架(如 PyTorch)默认不对偏置参数进行权重衰减。
Batch Normalization(BN)并非专门设计的正则化方法,其核心初衷是解决深层网络的“内部协变量偏移”问题,加速模型收敛、提升训练稳定性。但在实际训练中,BN 会附带产生显著的正则化效果,因此常被视为一种“隐式正则化方法”。
BN 的正则化效果源于其训练阶段的随机性,具体原理如下:
-
批次统计量的随机波动 BN 在训练阶段的核心操作是:对每个批次的特征,计算批次均值
$\mu_B$ 和批次方差$\sigma_B^2$ ,并进行归一化:$$\hat{x} = \frac{x - \mu_B}{\sqrt{\sigma_B^2+\epsilon}}$$ 不同训练批次的样本分布存在差异,导致$\mu_B$ 和$\sigma_B^2$ 具有随机性。这种随机性会为模型的特征表达引入噪声,迫使模型不依赖于特定批次的特征分布,从而降低过拟合风险。 -
抑制权重的极端值 BN 会对特征进行归一化,使特征分布稳定在均值 0、方差 1 附近,这会间接限制权重参数的增长:若权重过大,归一化后的特征会出现极端值,但 BN 的可学习参数
$\gamma$ 和$\beta$ 会抑制这种极端情况,避免模型因权重过大而过拟合。 -
与 Dropout 的协同效应 BN 与 Dropout 结合使用时,正则化效果会进一步增强:BN 稳定特征分布,Dropout 随机失活神经元,两者从不同维度降低模型的过拟合风险。
BN 在测试阶段使用的是全局均值