编辑
2025-05-16
深度学习
00

目录

1. 梯度消失如何缓解?
2. 梯度爆炸如何缓解?
3. 过拟合如何缓解?
4. 什么是 ROC 曲线和 AUC 值?AUC 越高是否一定代表模型更好?
5. SGD、Adam、RMSprop 等优化器之间有什么区别?各自适用于哪些场景?
SGD(Stochastic Gradient Descent)随机梯度下降
RMSprop(Root Mean Square Propagation)
Adam(Adaptive Moment Estimation)
6. 语义分割模型的输出 shape
7. 语义分割任务中有哪些损失函数?

1. 梯度消失如何缓解?

(1)梯度消失是深度神经网络训练过程中出现的一种现象,指的是在反向传播时,靠近输入层的梯度变得非常小,几乎趋近于零。这通常发生在使用如 Sigmoid 或 Tanh 等饱和激活函数的深层网络中,由于链式法则导致多个小于1的数连乘,使得梯度指数级衰减。

(2)梯度消失的现象主要表现为模型训练缓慢甚至停滞,靠近输入层的参数几乎不更新,导致网络无法有效学习特征。这会直接影响模型的收敛速度和最终性能,尤其在层数较多的情况下更为明显。

(3)缓解梯度消失的方法包括:使用如 ReLU 及其变体等非饱和激活函数;采用合适的参数初始化方法如 He 初始化Xavier 初始化,保证信号传播的稳定性;引入 Batch Normalization 层来标准化每层输出;利用 残差连接(Residual Connection) 使梯度更容易回传;以及在必要时使用 梯度裁剪(Gradient Clipping) 防止梯度过小或过大带来的训练不稳定问题。

2. 梯度爆炸如何缓解?

梯度爆炸(Gradient Explosion) 是深度神经网络训练过程中与梯度消失相对的问题,指的是在反向传播过程中,梯度值变得非常大,导致参数更新幅度过大,模型无法收敛。这种现象通常出现在深层网络或循环神经网络(RNN)中,由于权重矩阵的连乘使得梯度呈指数级增长。

梯度爆炸的现象主要表现为训练过程中损失函数剧烈震荡、不收敛甚至出现 NaN 值,参数更新不稳定,模型性能差。尤其在 RNN 中,长期依赖问题容易导致梯度在时间步上不断累积放大,从而引发梯度爆炸。

缓解梯度爆炸的方法包括:使用梯度裁剪(Gradient Clipping),即设定一个阈值对梯度进行裁剪,防止其过大;采用合适的参数初始化方法如 Xavier 初始化He 初始化,避免初始权重过大;引入 Batch Normalization 来标准化每层输出,稳定训练过程;在 RNN 中可使用其变体如 LSTMGRU 来控制信息流动,减轻梯度不稳定的问题。

3. 过拟合如何缓解?

过拟合(Overfitting) 是机器学习中常见的问题,指的是模型在训练数据上表现非常好,但在未见过的测试数据上表现显著下降。这是因为模型过于“记住”了训练数据中的噪声、细节或非普遍特征,而失去了对新数据的泛化能力。过拟合通常发生在模型复杂度过高、训练数据不足或噪声较多的情况下。

过拟合的现象包括:训练集损失持续下降且趋于零,而验证集损失在下降一段时间后开始上升;模型在训练数据上准确率很高,但在测试数据上表现差;模型对输入的小扰动敏感,泛化能力弱。

缓解过拟合的方法包括:增加训练数据量或使用数据增强(Data Augmentation)来扩展数据集;使用正则化方法如 L1/L2 正则化 来限制模型复杂度;引入 Dropout 层随机丢弃部分神经元,提升泛化能力;采用早停法(Early Stopping),在验证集性能不再提升时提前终止训练;减少模型复杂度(如减少网络层数或神经元数量),使其更匹配任务难度。

4. 什么是 ROC 曲线和 AUC 值?AUC 越高是否一定代表模型更好?

ROC 曲线(Receiver Operating Characteristic Curve)是一种用于评估二分类模型性能的图形工具。它通过绘制不同分类阈值下的真正例率(TPR,也称为召回率)与假正例率(FPR)之间的关系曲线,来展示模型在不同阈值下的整体表现。ROC 曲线的横轴是 FPR,表示错误地将负类样本预测为正类的比例;纵轴是 TPR,表示正确识别出的正类样本比例。通过改变分类阈值,可以得到 ROC 曲线上的一系列点,从而描绘出模型的判别能力。

AUC 值(Area Under the Curve)是指 ROC 曲线下方的面积,用来量化模型的整体性能。AUC 的取值范围在 0.5 到 1 之间。AUC 越高,通常意味着模型的区分能力越强。当 AUC 为 1 时,表示模型完美地区分了正负类;当 AUC 为 0.5 时,表示模型的预测等同于随机猜测;而 AUC 小于 0.5 则说明模型的表现比随机还差。

虽然 AUC 是一个非常有用的综合评价指标,但AUC 越高并不一定代表模型在所有情况下都更好 。

首先,AUC 反映的是模型整体排序能力,并不关注特定阈值下的表现。在某些实际应用中,我们可能更关心模型在某一特定区域的表现,例如在医学诊断中希望尽可能多地找出真正的阳性病例(即高召回率),即使这意味着会有更多的假阳性。在这种情况下,仅看 AUC 可能无法准确反映模型是否满足实际需求。

其次,AUC 没有考虑误分类带来的不同代价。比如在金融风控中,误判一个正常用户为欺诈用户(FP)和漏掉一个真正的欺诈用户(FN)所带来的损失是不同的,而 AUC 对这两者一视同仁。

此外,AUC 对数据分布变化较为敏感。如果测试集的类别分布与训练集存在显著差异,AUC 的表现可能会失真,不能真实反映模型的泛化能力。

因此,在使用 AUC 作为模型评估指标时,应结合具体任务目标和其他评价指标(如精确率、召回率、F1 分数、准确率等)进行综合判断,才能更全面地评估模型的实际效果。

image.png

5. SGD、Adam、RMSprop 等优化器之间有什么区别?各自适用于哪些场景?

SGD(随机梯度下降)是最基础的优化算法,它每次根据一个样本或小批量数据计算梯度并更新参数。虽然简单,但收敛速度较慢,尤其在复杂或非凸问题中容易震荡。不过,通过加入动量项可以显著提升其表现,因此SGD with Momentum仍然被广泛用于需要精细控制训练过程的场景,例如追求模型泛化能力的图像任务。

RMSprop 是一种自适应学习率优化器,它通过维护每个参数的历史梯度平方的移动平均来自动调整学习率,从而缓解学习过程中梯度变化剧烈的问题。这种机制使其特别适合处理如RNN这类梯度稀疏或波动大的任务,在NLP领域有较好表现。

Adam 结合了动量法和RMSprop的优点,不仅维护了一阶矩(梯度均值),还维护了二阶矩(梯度平方的均值),并通过偏差校正提高初期稳定性。它通常具有更快的收敛速度和良好的鲁棒性,适用于大多数深度学习任务,是当前最常用的默认优化器之一。对于图像识别、Transformer模型、GAN等任务,Adam通常是首选。

总体来说,如果希望快速上手并获得稳定效果,推荐使用 Adam;若更关注模型最终性能,尤其是在图像分类任务中,可以尝试 SGD + 学习率调度策略;而对于RNN、语言模型等梯度不稳定的情况,RMSprop 和 Adam 都是不错的选择。

SGD、Adam 和 RMSprop 是深度学习中常用的优化器,它们在参数更新方式、收敛速度、适应性等方面有显著区别。以下是它们的核心差异以及各自适用的场景:

SGD(Stochastic Gradient Descent)随机梯度下降

  • 原理:每次使用一个样本(或小批量数据)计算梯度并更新参数。

  • 公式

    θt+1=θtηgt\theta_{t+1} = \theta_t - \eta \cdot g_t

    其中,η\eta 是学习率,gtg_t 是当前批次的梯度。

  • 改进版本:SGD with Momentum(动量法),引入动量项加速收敛方向:

    vt+1=μvt+ηgtθt+1=θtvt+1v_{t+1} = \mu v_t + \eta g_t \\ \theta_{t+1} = \theta_t - v_{t+1}

RMSprop(Root Mean Square Propagation)

  • 提出者:Geoff Hinton 提出。

  • 原理:对每个参数使用不同的自适应学习率,根据历史梯度平方的移动平均来调整学习率。

  • 公式

    E[g2]t=γE[g2]t1+(1γ)gt2θt+1=θtηE[g2]t+ϵgtE[g^2]_t = \gamma E[g^2]_{t-1} + (1 - \gamma)g_t^2 \\ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} g_t

    其中 γ\gamma 是衰减系数(通常设为0.9),ϵ\epsilon 防止除以零。

Adam(Adaptive Moment Estimation)

  • 结合了 Momentum 和 RMSprop 的优点

  • 原理:维护一阶矩估计(均值)和二阶矩估计(未中心化的方差),进行偏差修正后用于参数更新。

  • 公式

    mt=β1mt1+(1β1)gt(一阶矩)vt=β2vt1+(1β2)gt2(二阶矩)m^t=mt1β1t,v^t=vt1β2t(偏差校正)θt+1=θtηv^t+ϵm^tm_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t \quad (\text{一阶矩}) \\ v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \quad (\text{二阶矩}) \\ \hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} \quad (\text{偏差校正}) \\ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t
  • 默认超参数β1=0.9,β2=0.999,ϵ=1e8\beta_1=0.9, \beta_2=0.999, \epsilon=1e-8

6. 语义分割模型的输出 shape

语义分割模型的输出 shape 通常是 (N, C, H, W),其中 C 是类别数,后续通过 softmax 或 argmax 得到每个像素的预测类别。

7. 语义分割任务中有哪些损失函数?

https://www.dong-blog.fun/post/2103

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!