Huber Loss/zh

    From Marovi AI
    This page is a translated version of the page Huber Loss and the translation is 100% complete.
    Other languages:
    Article
    Topic area Machine learning — loss functions
    Prerequisites Mean Squared Error, Mean Absolute Error, Gradient Descent


    概述

    Huber 损失是一种回归损失函数,对小残差呈二次行为,对大残差呈线性行为,将平方误差的平滑优化几何结构与绝对误差对异常值的鲁棒性相结合。该损失由 Peter J. Huber 于 1964 年作为稳健统计研究的一部分提出,由阈值 $ \delta > 0 $ 参数化,该阈值定义了两种状态之间的交叉点。[1] 在现代机器学习中,Huber 损失被广泛用于目标包含重尾噪声的回归任务,其平滑近邻Smooth L1 损失已成为目标检测中边界框回归的标准选择。

    直觉

    均方误差按平方惩罚残差,因此一个具有大残差的误标记点就可能主导梯度并将拟合拉向自身。平均绝对误差以线性尺度处理每个残差,因此对异常值的敏感性要低得多,但其梯度幅值是恒定的,且其导数在零处未定义,这会减慢最优点附近的收敛,并使基于动量的优化器产生不稳定的更新。

    Huber 损失在这两个极端之间进行插值。当残差较小时,损失呈二次形式,因此随着模型接近目标,梯度会缩小,优化也能平稳收敛。当残差超过阈值 $ \delta $ 时,损失切换到线性状态,将梯度幅值限制在 $ \delta $,从而防止少数极端误差主导训练。其结果是一种损失,既具有绝对误差尾部的鲁棒性,又具有平方误差核心的良好行为。

    公式化

    对于残差 $ r = y - \hat{y} $Huber 损失按分段方式定义:

    $ {\displaystyle L_\delta(r) = \begin{cases} \tfrac{1}{2} r^2 & \text{if } |r| \le \delta, \\ \delta\,(|r| - \tfrac{1}{2}\delta) & \text{if } |r| > \delta. \end{cases} } $

    线性分支中的常数 $ \tfrac{1}{2}\delta $ 是为了使两部分在 $ |r| = \delta $ 处的值与一阶导数相匹配而选择的。关于预测值 $ \hat{y} $ 的导数为

    $ {\displaystyle \frac{\partial L_\delta}{\partial \hat{y}} = \begin{cases} -r & \text{if } |r| \le \delta, \\ -\delta\,\operatorname{sign}(r) & \text{if } |r| > \delta, \end{cases} } $

    这清楚地表明梯度幅值在 $ \delta $ 处被截断。由于该损失只是一次连续可微的(其二阶导数在 $ |r|=\delta $ 处从 1 跳到 0),因此它是 C^1 但不是 C^2。

    性质

    Huber 损失对残差是凸的,因此在数据集上对其求和会为线性模型产生凸的经验风险。它在零处下界,并无界增长,这使优化问题良好定义。与纯绝对误差不同,该损失处处可微,因此Gradient DescentStochastic Gradient Descent一阶方法不需要在零附近做次梯度处理。与平方误差不同,影响函数(单个观测对梯度的贡献)是有界的,这正是 Huber 回归作为具有有界影响的M-estimator的形式化含义。[2]

    阈值的选择

    超参数 $ \delta $ 控制着对大残差的抑制力度。较小的 $ \delta $ 接近平均绝对误差并最大化鲁棒性;较大的 $ \delta $ 接近均方误差并强调平滑性。一种由 Huber 提出的常用启发式是将 $ \delta $ 设为某个稳健尺度估计(例如中位绝对偏差)的倍数(常取 1.345),这样在高斯噪声下可获得约 95 % 的渐近效率,同时保持对污染的鲁棒性。在深度学习中,$ \delta $ 通常固定为 1(即 Smooth L1 约定)或在验证集上调优。

    训练与推理

    由于该损失是凸且光滑的,针对线性模型的 Huber 回归可以通过迭代重加权最小二乘法、拟牛顿方法或普通的 Gradient Descent 来求解。在神经网络中,该损失作为输出层 均方误差 的直接替代被插入,并以通常方式通过 Backpropagation 传播梯度。线性区域中的梯度截断行为为回归头充当了一种内置的梯度裁剪形式,这可以在目标偶尔包含极端值时稳定训练,例如强化学习中的奖励预测。

    变体

    Huber 损失的多种平滑近似与推广在实际中被广泛使用:

    • Smooth L1 loss 是特例 $ \delta = 1 $,由 Fast R-CNN 目标检测器为边界框回归而流行起来;它有时写成不带二分之一因子的形式,但其它方面相同。[3]
    • Pseudo-Huber 损失 用平滑替代 $ L(r) = \delta^2\bigl(\sqrt{1+(r/\delta)^2} - 1\bigr) $ 替换了分段定义,它是 C-无穷的,并紧密近似 Huber 形状;当需要二阶导数时它很方便。
    • Log-cosh 损失 使用 $ L(r) = \log\cosh(r) $,在零附近表现为平方误差,在尾部表现为绝对误差,动机相似但曲率不同。
    • Tukey biweight 走得更远,超过截断点后重新下降至零影响,完全丢弃极端异常值;与 Huber 不同,它是非凸的,因此通常需要良好的初始化才能使用。

    比较

    均方误差相比,Huber 损失在完全高斯噪声下牺牲了少量效率,以换取在重尾或受污染噪声下显著更好的表现。与平均绝对误差相比,它牺牲了一些崩溃鲁棒性以换取更平滑的优化表面和最优点附近更快的收敛。在深度回归头中,它通常比两者都更受青睐:训练比均方误差更稳定,收敛比平均绝对误差更快,尤其是在与自适应优化器配合使用时——这些优化器的动量估计对梯度尖峰很敏感。

    应用

    Huber 损失在机器学习中无处不在。在计算机视觉中,Smooth L1 变体是 Fast R-CNNFaster R-CNN 及其许多后继者等检测器中边界框和关键点回归的事实标准。在强化学习中,它被用作深度Q-learning中的时序差分损失,从而抑制原本会破坏训练稳定性的大 Bellman 误差。[4] 在表格回归和时间序列预测中,当目标偶尔包含尖峰时,它是一种标准选择;在经典统计中,Huber 回归仍是有界影响 M-估计量的基础范例。

    局限性

    Huber 损失存在局限性。阈值 $ \delta $ 是一个必须谨慎选择的自由超参数;为某一数据集校准的值在噪声尺度变化时可能不再适用。该损失是凸的,但在二次区域之外并非严格凸,这可能在扁平方向上减慢收敛。它不会重新下降,因此与 Tukey 风格的损失不同,它仍允许极端观测影响拟合,只是权重有界。最后,虽然它对对称的重尾噪声具有鲁棒性,但本身并不能纠正系统性偏差或非对称误差分布;在这些情况下,Quantile Regression 或 Huber 损失的非对称变体通常更为合适。

    参考文献

    1. Huber, P. J. Robust Estimation of a Location Parameter. Annals of Mathematical Statistics, 35(1):73-101, 1964.
    2. Huber, P. J. and Ronchetti, E. M. Robust Statistics, 2nd ed., Wiley, 2009.
    3. Girshick, R. Fast R-CNN. ICCV, 2015.
    4. Mnih, V. et al. Human-level control through deep reinforcement learning. Nature, 518:529-533, 2015.