8-损失函数篇:回归损失函数

发布于 2025-04-03  135 次阅读


"完美的模型从不是对每个点都忠诚,而是学会对那些背叛常态的离群者保持宽容。"

认识回归损失函数

回归损失函数容易理解,即适用于回归任务模型的损失函数。

几乎所有回归损失函数,本质上都围绕着同一个核心——“预测值与真实值之间的差异”。

回归损失函数在深度学习中通常主要负责两个任务:

  • 量化预测值与真实值之间的偏差程度
  • 在反向传播中解得新的参数(即权重和偏置),以优化模型

如果能理解以上内容,那么你对回归损失函数基本上已经足够了。

如果想更深地了解回归损失函数,那么剩下要做的,只需付诸实践,亲自去认识各回归损失函数本尊即可。尽管各有千秋,但回归损失函数的所有秘密都刻在其数学公式中


深度学习中常见的损失函数

*温馨提示:本章节数学公式较多,不想看的话,建议在文章目录(右边)处点击跳转到"建议"。

均方误差(Mean Squared Error, MSE/L2 Loss

MSE的核心是最小二乘法

$$ \begin{aligned} \text{MSE}(\mathbf{y}, \hat{\mathbf{y}}) &= \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \\ \\ \text{where } & \begin{aligned} \mathbf{y} &= (y_1, y_2, \ldots, y_n) \in \mathbb{R}^n \quad \text{(真实值向量)} \\ \hat{\mathbf{y}} &= (\hat{y}_1, \hat{y}_2, \ldots, \hat{y}_n) \in \mathbb{R}^n \quad \text{(预测值向量)} \end{aligned} \\ \\ \\ \text{梯度:} \quad \frac{\partial \text{MSE}}{\partial \hat{y}_i} &= -\frac{2}{n} (y_i - \hat{y}_i) \\ \nabla_{\hat{\mathbf{y}}} \text{MSE} &= -\frac{2}{n} (\mathbf{y} - \hat{\mathbf{y}}) \end{aligned} $$

作为统计学中本就用于衡量模型预测值与真实值的偏离程度的上古神兽,其数学形式简单且具有可导性,是作为损失函数的理想选择,也是回归任务的首选损失函数。MSE的历史可以追溯到18世纪末:

  • 勒让德(Adrien-Marie Legendre, 1805)首次在测量学中提出最小二乘法,用于解决天体轨道预测中的误差问题。
  • 高斯(Carl Friedrich Gauss)进一步将其与概率论结合,证明了最小二乘法在高斯分布假设下的最优性,即最小化平方误差等价于极大似然估计。

所以MSE作为损失函数的工作原理:

  • 概率假设:假设误差服从高斯分布,最小化MSE等价于极大似然估计。
  • 优化目标:通过平方惩罚偏差,强调大误差的修正。

优点:

  • 数学性质良好(处处可导),便于梯度下降优化。
  • 对预测偏差的平滑惩罚,利于模型稳定更新。

缺点:

  • 对异常值极度敏感(平方放大误差),导致模型容易受少数离群点影响。
  • 输出为均值估计,无法反映不确定性。

绝对误差(Mean Absolute Error, MAE/L1 Loss)

MAE的核心是最小一乘法

$$ \begin{aligned} \text{MAE}(\mathbf{y}, \hat{\mathbf{y}}) &= \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| \\ \\ \text{where } & \begin{aligned} \mathbf{y} &= (y_1, y_2, \ldots, y_n) \in \mathbb{R}^n \\ \hat{\mathbf{y}} &= (\hat{y}_1, \hat{y}_2, \ldots, \hat{y}_n) \in \mathbb{R}^n \end{aligned} \\ \\ \\ \text{梯度:} \quad \frac{\partial \text{MAE}}{\partial \hat{y}_i} &= \begin{cases} -\frac{1}{n} & \scriptstyle{\hat{y}_i < y_i} \\ \frac{1}{n} & \scriptstyle{\hat{y}_i > y_i} \\ \text{不可导} & \scriptstyle{\hat{y}_i = y_i} \end{cases} \\ \nabla_{\hat{\mathbf{y}}} \text{MAE} &= \frac{1}{n} \cdot \text{sign}(\hat{\mathbf{y}} - \mathbf{y}) \quad \scriptstyle{\text{(忽略不可导点)}} \end{aligned} $$

MAE同样起源自统计学,其历史比MSE还要古老:

  • 拉普拉斯(Pierre-Simon Laplace, 1789)在研究天体运动时提出最小化绝对误差的思想,认为其能更好地抵抗观测误差的干扰。
  • 埃奇沃思(Francis Edgeworth, 1887)进一步推广了绝对误差最小化方法,但因计算复杂且缺乏解析解,长期被最小二乘法压制。

20世纪中叶,统计学家发现MAE相对MSE而言,异常值更鲁棒,尤其在数据存在重尾分布或离群点时,MAE的稳定性优于MSE。但由于其数学性质复杂(例如零点处不可导)等原因,传统参数模型更倾向使用MSE。

几何上看,最小一乘法的拟合线更倾向于穿过数据点的“中位数位置”,而非像最小二乘法那样穿过“均值位置”。因此,它对极端值不敏感,抗噪能力较强。

在深度学习中,MAE常用于需要抗噪声能力的场景,例如:

  • 金融预测:处理含极端值的时间序列数据(如股票价格波动)。
  • 医学影像分析:避免异常像素(如设备噪声)对模型的影响。

优点:

  • 对异常值的鲁棒性优于MSE。
  • 无需假设误差服从正态分布。

缺点:

  • 在零点处不可导,优化效率低(计算较复杂,梯度恒定,收敛震荡)。
  • 对小误差的修正动力不足,模型可能欠拟合。

Huber损失(Huber Robust Loss Function, 平滑平均绝对误差)

Huber的核心是结合MAE和MSE的分段函数

$$ \begin{aligned} L_{\delta}(y, \hat{y}) &= \begin{cases} \frac{1}{2}(y - \hat{y})^2 & \text{if } |y - \hat{y}| \leq \delta \\ \delta |y - \hat{y}| - \frac{1}{2}\delta^2 & \text{otherwise} \end{cases} \\ \\ \text{where } & \begin{aligned} \delta &> 0 \quad \text{(超参数,控制平方与线性区域的阈值)} \\ y &\in \mathbb{R} \quad \text{(真实值)} \\ \hat{y} &\in \mathbb{R} \quad \text{(预测值)} \end{aligned} \\ \\ \\ \text{梯度:} \quad \frac{\partial L_{\delta}}{\partial \hat{y}} &= \begin{cases} - (y - \hat{y}) & \text{if } |y - \hat{y}| \leq \delta \\ -\delta \cdot \text{sign}(y - \hat{y}) & \text{if } |y - \hat{y}| > \delta \\ \text{不可导} & \text{if } |y - \hat{y}| = \delta \quad \text{(实际使用中常取左/右导数)} \end{cases} \end{aligned} $$

  • 传统MSE收敛效率好,但对异常值敏感
  • MAE鲁棒性强(异常值不敏感),但收敛效率低

统计学家彼得·胡伯(Peter Huber)在1964年提出了Huber损失函数,旨在平衡均方误差(MSE)和平均绝对误差(MAE)的优势。

参数 δ 的作用

  • 控制鲁棒性:δ 越大,损失函数越接近MSE;δ 越小,越接近MAE。
  • 经验选择:通常通过交叉验证确定,或设为数据中误差绝对值的某个分位数(如中位数)

公式中可以看出,Huber实际上是MSE和MAE的结合,优点和缺点也同样在MSE和MAE之间平衡。需要注意的是,Huber的超参数敏感性——δ 的选择依赖领域经验,需反复试验。若 δ 设置合理,能使得模型保持一定收敛效率又不失鲁棒性;反之,则难以发挥Huber损失函数的优势,甚至降低模型收敛的性能。

特点:

  • 非自适应:需手动设置超参数δ,固定 δ 难以应对动态变化的噪声分布
  • 超参数敏感性:δ 的选择适当与否,直接影响损失函数对模型产生的效果


Log-Cosh(Logarithmic Hyperbolic Cosine Loss, 对数双曲余弦损失)

Log-Cosh的核心就是基于对数双曲余弦函数的平滑函数

$$ \begin{aligned} L(y, \hat{y}) &= \sum_{i=1}^{n} \log\left(\cosh(y_i - \hat{y}_i)\right) \\ \\ \text{where } & \begin{aligned} \cosh(x) &= \frac{e^x + e^{-x}}{2} \quad \text{(双曲余弦函数)} \\ y &\in \mathbb{R}^n \quad \text{(真实值向量)} \\ \hat{y} &\in \mathbb{R}^n \quad \text{(预测值向量)} \end{aligned} \\ \\ \\ \text{梯度:} \quad \frac{\partial L}{\partial \hat{y}_i} &= -\tanh(y_i - \hat{y}_i) \\ \\ \text{整体梯度向量:} \quad \nabla_{\hat{\mathbf{y}}} L &= -\tanh(\mathbf{y} - \hat{\mathbf{y}}) \end{aligned} $$

Log-Cosh被设计为结合了MAE和MSE特性的平滑损失函数

在小误差时(\( |y_i - \hat{y}_i| → 0\)): \( \log(\cosh(x))≈ \frac{x^{2}}{2} \) (类似MSE)

在大误差时(\( |y_i - \hat{y}_i| → ∞\)): \( \log(\cosh(x))≈ |x|-\log(2) \) (类似MAE)

特点:

  • 无需超参数:与Huber损失不同,Log-Cosh无需手动设置阈值(如Huber的δ)。
  • 数值稳定性:通过对数变换避免指数运算的溢出问题。
  • 计算量略大:相对MAE和MSE而言,计算成本略高。
  • 理论解释性弱(暂时):更偏向实践,缺乏如MSE的概率解释或MAE的稀疏性理论支持。

Quantile Loss (分位数损失)

分位数损失的核心是为特定分位的数据赋予它应有的权重

$$ \begin{aligned} L_{\tau}(y, \hat{y}) &= \begin{cases} \tau (y - \hat{y}) & \text{if } y \geq \hat{y}, \\ (1 - \tau)(\hat{y} - y) & \text{otherwise}. \end{cases} \\ \\ \text{where } & τ (目标分位数) \\ \\ \\ \text{梯度:} \quad \frac{\partial L_{\tau}}{\partial \hat{y}} &= \begin{cases} -\tau & \text{if } y > \hat{y}, \\ 1 - \tau & \text{if } y < \hat{y}. \end{cases} \\ \\ (y &= \hat{y} \text{处不可导,需用次梯度}) \end{aligned} $$

分位数损失突破了MSE、MAE一类关注整体数据进行建模的传统,更加关注特定分位的数据,满足对部分“极端情况”建模的需求,例如下面一类问题:

  • “在90%的情况下,最大损失不会超过多少?”
  • “在10%的情况下,最低销量至少是多少?”

针对预测类似上述特定分位问题的模型,比起MSE,MAE一类函数,分位数损失更擅长:

  • MSE:最小化平方误差,估计条件均值(假设误差服从正态分布)。
  • MAE:最小化绝对误差,估计条件中位数(即50%分位数)。
  • 分位数损失:估计任意指定分位数(如10%、90%),反映数据分布的特定位置。

分位数参数 τ 控制误差方向权重

  • τ>0.5:更关注高估误差(即真实值大于预测值的惩罚更重)。
  • τ<0.5:更关注低估误差(即真实值小于预测值的惩罚更重)。
  • τ=0.5:等价于MAE(中位数回归)。

特点:

  • 非对称性:允许对不同方向的误差赋予不同权重,适应现实场景中的非对称成本
  • 无分布假设:不依赖误差分布的正态性假设,直接建模分位数
  • 手动设参τ 需手动设置,优化复杂度较高

其他(待补充)

由于篇幅限制原因,其他的留给以后,慢慢补充...


建议

回归损失函数仍处于不断发展的状态,不同的回归损失函数或有各自不同的原理和适用场景。

大致发展趋势:

  1. 早期阶段(2000年前):基于统计学理论的MSE、MAE、Huber等构建基础
  2. 深度学习初期(2012-2016):Smooth L1、Log-Cosh等改进方法适应深度网络训练
  3. 专用化阶段(2017-2020):Wing Loss、Quantile等面向具体任务优化
  4. 智能鲁棒阶段(2020后):Adaptive、Generalized等自适应性方法兴起
  5. 未来:...

截止2025年春,前沿研究方向大致:

  • 元学习损失:通过元学习自动生成任务特定损失函数(如Meta-Learned Loss)
  • 对抗鲁棒损失:结合对抗训练的动态损失调整机制
  • 多模态损失:融合不同误差度量空间的联合优化框架
  • 可解释损失:建立损失函数与模型决策的显式关联解释

尽管回归损失函数各有不同,但理解它们的方式是共通的——解读其数学公式,至少大部分情况下都是如此,回归损失函数的所有秘密都刻在其数学公式中

通过解读更多的回归损失函数公式,或多实践尝试不同的回归损失函数,都有助于我们在不同的回归任务模型中,选出更合适的回归损失函数。

回归损失函数就像怪物猎人(モンスターハンター , Monster Hunter)世界中庞大的武器库。我们不妨选几件趁手的武器先用着,其余的可以慢慢来,偶尔花点时间打造一把新武器,丰富我们的武器库。

作为一个高端的猎人,总能在狩猎不同的怪兽时,有针对性地带上一把合适的武器。为什么呢?“无他,唯手熟耳。”(多多实践)


常见回归损失函数选择参考(无序)

损失函数提出时间优点缺点适用场景
MSE (L2)1805凸性强,梯度稳定,理论成熟对异常值极度敏感高斯分布误差,清洁数据建模
Huber Loss1964平衡鲁棒性与凸性,参数可调需手动设定δ参数,大误差惩罚不足含温和离群点的传感器数据
MAE (L1)18世纪对中度异常值鲁棒,无超参收敛速度慢,零梯度区域多拉普拉斯分布误差,中等离群点
Log-Cosh2016*光滑二阶导,数值稳定计算成本较高,理论解释性弱需平滑优化的强化学习场景
Smooth L12015结合L1/L2优点,目标检测优化拐点参数固定,适应性受限物体检测框回归(如Fast R-CNN)
Quantile Loss1980s*区间预测能力,非对称误差处理需指定分位参数,优化难度大金融风险预测,不确定性估计
Wing Loss2018小误差非线性响应,大误差线性截断参数敏感需调优人脸关键点检测等高精度回归任务
Charbonnier1994*改进L1的平滑性,避免零梯度鲁棒性弱于Huber类方法图像复原,光流估计
Tukey Biweight1970s*完全免疫极端异常值,对抗鲁棒非凸性导致优化困难高污染数据,对抗样本防御
Adaptive Robust2020s动态调整鲁棒性,自动学习参数训练稳定性需精细控制自动驾驶多模态传感器融合
NLL (GMM)2018*建模复杂分布,概率解释性强计算复杂度高,需预设分布类型多模态输出预测(如轨迹预测)
Generalized Robust2019参数化鲁棒性,连续可调形态超参学习曲线陡峭需动态调整鲁棒性的在线学习系统
Curvature Loss2021保持几何结构,微分同胚约束计算成本增加20-30%医学图像配准,3D形状重建
Physics-Informed2017*嵌入物理约束,提升泛化能力需领域知识,实现复杂度高流体力学模拟,工程物理建模

注:*表示在深度学习领域开始普及的时间,部分传统方法早已提出但在近年重新应用