跳转至

损失函数

MSE 损失和 MAE 损失分别有什么特点?在什么场景下选择哪个?

MSE(Mean Squared Error,均方误差)

image.png

特点:

  1. 对大误差的惩罚极为严厉:误差被平方,因此离群点(异常值)会极大地拉高损失,模型会优先“讨好”这些离群点,导致拟合线被拉偏。

image.png

  1. 统计解释:若噪声服从高斯分布,最小化MSE等价于极大似然估计,最优输出为条件期望(均值)。

  2. 光滑可导,便于使用基于梯度的优化器。

MAE(Mean Absolute Error,平均绝对误差)

image.png

  • 特点:
  • 对异常值鲁棒:所有误差被线性加权,离群点不会像MSE那样主导损失,因此模型更关注大多数正常样本。
  • 梯度为常数(±1):在0点不可导,实践中用次梯度。这使得训练过程中无论误差大小,步长始终恒定,在接近最优解时容易震荡,但不会因为某个离群点而剧烈摆动。
  • 统计解释:若噪声服从拉普拉斯分布,最小化MAE等价于极大似然估计,最优输出为条件中位数。
  • 在0点不可导,但通常通过次梯度解决。

场景选择

  • 数据干净、没有(或极少)异常值:优先使用MSE,因为它收敛更快,且最终的预测值为均值,满足无偏性。

  • 数据中可能包含大量离群点(如金融交易金额、传感器故障读数、极端天气数据):使用MAE或Huber Loss,避免模型被少数异常值带偏。

  • 若希望预测值反映大多数样本的“典型”水平(而非被极端值拉偏),应选择MAE。

  • 在需要同时兼顾收敛速度和鲁棒性时,可使用Huber Loss。

为什么 MSE 对异常值更敏感?MAE 在这一点上如何表现?

MSE 对异常值的敏感性来自平方操作。假设大部分样本的误差在±5以内,突然出现一个误差为100的样本:

image.png

image.png

Huber 损失如何结合 MSE 和 MAE 的优势?公式是什么?

公式(参数 δ>0):

image.png

结合优势的方式

  • 当残差较小(∣y−y^∣≤δ)时,使用 MSE,此时梯度是线性的,且函数处处可导,优化过程平滑。

  • 当残差较大(∣y−y^∣>δ)时,退化为 MAE(平移了常数),梯度绝对值为常数 δ,不会像 MSE 那样把离群点的误差平方放大,从而对异常值更鲁棒。

  • 在 δ 处,函数值和一阶导数均连续。


二分类交叉熵损失的公式?从极大似然估计推导

image.png

从极大似然估计推导

假设标签服从伯努利分布:

image.png

对整个数据集的似然函数:

image.png

取对数得到对数似然:

image.png

最大化对数似然等价于最小化其负数,即二分类交叉熵损失:

image.png


多分类交叉熵与 Softmax 如何结合?推导组合梯度

Softmax:设 logits 为 z1,…,zK,则第 j 类概率:

image.png

多分类交叉熵(真实标签为 one-hot yy,真实类为 cc):

image.png

梯度推导

image.png

zj 求偏导:

image.png

image.png

结论:梯度 = 预测概率 - 真实标签,形式简洁,不会出现“饱和”导致梯度消失的问题。


Focal Loss 解决什么问题?公式和核心思想

解决的问题:类别极度不平衡(如目标检测中大量易分类的背景框会主导损失,使模型难以关注难分正样本)。

公式:

image.png

image.png


交叉熵损失与 KL 散度的关系

对于真实分布 P 和预测分布 Q:

image.png

其中:

image.png

最小化交叉熵等价于最小化预测分布与真实分布之间的 KL 散度,即让模型输出的分布尽可能接近真实分布。


对比损失(Contrastive Loss)用于什么任务?拉近什么,推远什么?

通常用于:度量学习、孪生网络,学习样本之间的相似度表示(例如人脸验证、签名验证)。

目标:

  • 拉近相似样本(正对)的距离;

  • 推远不相似样本(负对)的距离。

经典形式(设 D 为两样本的欧氏距离,Y=0 表示相似,Y=1 表示不相似,m 为边距):

image.png


Triplet Loss 中锚点、正样本、负样本分别指什么?如何构造有效三元组?

  • 锚点 (anchor, a):参考样本。

  • 正样本 (positive, p):与锚点属于同一类的样本。

  • 负样本 (negative, n):与锚点不同类的样本。

损失函数:

image.png

目标是让正对距离比负对距离至少小 m

构造有效三元组: 若随机采样,很多三元组会轻松满足条件(d(a,p)−d(a,n)+m<0),梯度为零。有效三元组应违反此约束,即:

image.png

常用的策略是困难样本挖掘(hard mining),选择:

  • hard positive:d(a,p) 较大的正样本;

  • hard negative:d(a,n)较小的负样本; 使得约束更难满足,提供有信息的梯度。


NCE 和 InfoNCE 的关系?在对比学习中的作用

  • NCE (Noise Contrastive Estimation):通过将概率密度估计转化为二分类问题——区分真实数据样本与噪声分布生成的样本,从而避免计算繁重的归一化常数(partition function)。常用于训练语言模型等。

  • InfoNCE (Information NCE):基于 NCE 的思想,用于最大化互信息的下界。它将正样本对看作真实数据,同一 batch 内的其他样本当作负样本,构建一个 (K+1) 分类问题,让模型从一堆样本中找出正样本。

image.png

关系:InfoNCE 是 NCE 在表示学习中的一个特例/变体,它保留了“噪声对比”的思想,但目标是最大化 正样本对之间的互信息下界。

在对比学习中的作用:InfoNCE(如 SimCLR、MoCo、CPC)通过拉近正对、推远负对,学习到良好的特征表示。


为什么交叉熵常与 Softmax 搭配,MSE 与线性输出搭配?能否互换?

image.png


极度不平衡数据集使用交叉熵的问题,以及除 Focal Loss 外的缓解策略

问题:模型会偏向多数类,多数类的简单样本产生的梯度淹没少数类的信号,导致少数类准确率极低。

缓解策略(除 Focal Loss 外):

  • 重采样:欠采样多数类,过采样少数类(如 SMOTE)。

  • 加权交叉熵:给少数类分配更高的类别权重 αc。

  • OHEM(在线困难样本挖掘):只保留损失最大的部分样本进行反向传播。

  • 阈值移动:根据类别先验调整决策阈值。

  • 代价敏感学习:调整不同错误分类的惩罚。

  • 单类分类/异常检测:当少数类样本极少时,将其视为异常检测问题。

  • 合奏方法:如 Balanced Bagging,EasyEnsemble 等。


什么是标签平滑?对损失函数和模型校准的影响

标签平滑:将 one-hot 硬标签转为软标签,引入少量均匀噪声。

image.png

其中 K 为类别数,ε 是一个小数(如 0.1)。

对损失函数的影响:

  • 避免模型在训练时对某个预测结果给出极端概率(如 1 或 0),从而防止过拟合。

  • 交叉熵损失会增加一个额外的惩罚项,促使 logits 之间不那么极端,分布更均匀。

对模型校准的影响:

明显改善置信度校准。模型预测的分数(概率)能更真实地反映实际的正确可能性,降低期望校准误差(ECE),尤其在分布外检测和安全性重要的应用中很有价值。


多标签分类任务应该用什么损失函数?为什么不能用普通交叉熵?

应该用:二元交叉熵(Binary Cross-Entropy) 对每个标签独立计算。

image.png

不能用普通的多类交叉熵(Softmax + Cross-Entropy) 的原因:

  • Softmax 假设各类互斥,概率总和为 1,只能有一个高激活标签。

  • 多标签任务中,一个样本可以同时具有多个标签,标签之间不互斥。因此需要每个标签独立的伯努利分布,用 sigmoid + 二元交叉熵。


如何设计自定义损失函数,同时优化回归和分类目标?

通常采用多任务学习的架构,总损失为各任务损失的加权和:

image.png

  • 回归任务常用:MSE、MAE、Huber。

  • 分类任务常用:交叉熵、Focal Loss 等。

关键设计要点:

  1. 网络结构:共享特征提取主干,分设两个输出头,分别输出回归值与分类 logits。

  2. 损失平衡:

  3. 手动设定 λ(需要调参)。
  4. 不确定性加权(Kendall et al.):利用同方差不确定性自动学习权重 σσ,优化如下目标:

image.png

  • 梯度归一化(GradNorm)等方法动态调整权重,使各任务梯度量级相近。

  • 数值范围协调:确保回归目标经过归一化/标准化,与分类损失值处于可比量级。

这种方式广泛应用于目标检测(边界框回归 + 分类)、自动驾驶多任务感知等场景。


为什么对比学习中的温度系数 τ 很重要?它如何控制样本的区分度?

在对比学习(如 SimCLR、MoCo)使用的 InfoNCE 损失中,温度系数 ττ 出现在 softmax 形式的相似度缩放上:

image.png

它控制 softmax 分布的锐利度:

  • τ 较小时,分布变得更尖锐,模型会对最相似的负样本分配极高的惩罚,从而重点关注困难负样本。但过小的 τ 会使训练对噪声和微小差异过于敏感,容易过拟合或训练不稳定。

  • τ 较大时,分布趋于平滑,所有负样本被近似平等看待,模型会学习更全局的结构,但可能会削弱对困难样本的区分能力,降低表示质量。 因此,τ 调节了样本之间的“区分度”和“关注范围”,需要在难分样本挖掘与训练稳定性之间取得平衡。


比较 Hinge Loss 和交叉熵损失在 SVM 和神经网络中的应用。

  • Hinge Loss(用于最大间隔分类):

image.png

  • 在 SVM 中,通过最大化间隔找到支持向量,只有位于间隔内或错分的样本产生非零梯度。停止优化后,大量正确且远超间隔的样本对模型没有影响,这使得解具有稀疏性。

  • 在神经网络中,Hinge Loss 可用于替代交叉熵。梯度不为零时是常数,但当预测绝对正确且远超间隔时梯度为零,可能使网络停止学习某些样本。且不可微点需处理(或使用平方 Hinge Loss)。它没有直接的概率输出。

  • 交叉熵损失(配合 softmax/sigmoid): L=−log⁡p(y∣x),输出为概率。

  • 在神经网络中广泛使用,梯度为 py,即使是分类正确的样本也会有非零梯度,直到概率趋于 1。这使得模型不断推动预测概率向 1 靠拢,能产出校准较好的概率。
  • Hinge Loss 更关注“分类正确且保持边距”,交叉熵更关注“概率置信度”。实践中交叉熵在训练神经网络时通常表现更好、更稳定,且天然适合多分类。

当预测值接近于 0 或 1 时,交叉熵损失的梯度行为是怎样的?这对训练有何影响?

这里需区分是对概率值还是对logits求梯度。通常网络输出 logits z,经 sigmoid 或 softmax 得到概率 p,交叉熵损失对 logits 的梯度是:

image.png

即使 p 接近 0 或 1,该梯度也只取决于预测值与标签的差,不会消失。只要预测错误 (p 远离 y),梯度保持线性强度,训练可以持续进行;若预测正确 (p≈y),梯度趋近于 0,这是正常的收敛行为。

与之对比,若用 MSE 配合 sigmoid,梯度会乘上 p(1−p),当 p 饱和时梯度消失。交叉熵的这一特性是其训练分类器高效的核心原因。