Loss Functions/zh

    From Marovi AI
    This page is a translated version of the page Loss Functions and the translation is 100% complete.
    Other languages:
    Article
    Topic area Machine Learning
    Difficulty Introductory

    损失函数(也称为代价函数目标函数)量化模型预测与期望输出之间的差距。最小化损失函数是机器学习训练过程的核心目标:优化算法调整模型的参数,使损失尽可能低。

    目的

    损失函数将模型的预测 $ \hat{y} $ 和真实目标 $ y $ 映射到一个非负实数。形式上,对于单个样本:

    $ \ell: \mathcal{Y} \times \mathcal{Y} \to \mathbb{R}_{\geq 0} $

    在包含 $ N $ 个样本的数据集上,总损失通常是平均值:

    $ L(\theta) = \frac{1}{N}\sum_{i=1}^{N}\ell\bigl(y_i,\, \hat{y}_i(\theta)\bigr) $

    损失函数的选择编码了问题的结构——哪些错误重要以及应当以多大严厉程度对其进行惩罚。选择不当的损失函数会导致模型优化错误的目标。

    均方误差

    均方误差(MSE)是回归任务的默认损失函数:

    $ L_{\text{MSE}} = \frac{1}{N}\sum_{i=1}^{N}(y_i - \hat{y}_i)^2 $

    MSE 以二次方式惩罚较大的误差,使其对离群值敏感。其梯度计算简单:

    $ \frac{\partial}{\partial \hat{y}_i} (y_i - \hat{y}_i)^2 = -2(y_i - \hat{y}_i) $

    一个密切相关的变体是平均绝对误差(MAE),$ \frac{1}{N}\sum|y_i - \hat{y}_i| $,它对离群值更具鲁棒性,但在零点处梯度不平滑。Huber 损失结合了两者:对小误差表现得像 MSE,对大误差表现得像 MAE。

    交叉熵损失

    交叉熵损失是分类任务的标准选择。它衡量预测概率分布与真实标签分布之间的差异。

    二元交叉熵

    对于具有预测概率 $ p $ 和真实标签 $ y \in \{0, 1\} $ 的二元分类:

    $ L_{\text{BCE}} = -\frac{1}{N}\sum_{i=1}^{N}\bigl[y_i \log p_i + (1 - y_i)\log(1 - p_i)\bigr] $

    当预测概率与真实标签完全匹配时($ y = 1 $$ p = 1 $$ y = 0 $$ p = 0 $),此损失最小化。

    多类交叉熵

    对于具有 $ C $ 个类别的多类分类和预测概率向量 $ \hat{\mathbf{y}} $

    $ L_{\text{CE}} = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} y_{i,c} \log \hat{y}_{i,c} $

    当真实标签采用 one-hot 编码时,只有对应于正确类别的项保留下来。

    合页损失

    合页损失(hinge loss)与支持向量机(SVM)和最大间隔分类器相关。对于具有标签 $ y \in \{-1, +1\} $ 和模型原始输出 $ s $ 的二元分类问题:

    $ L_{\text{hinge}} = \frac{1}{N}\sum_{i=1}^{N}\max(0,\; 1 - y_i \, s_i) $

    当预测具有正确符号且间隔至少为 1 时,合页损失为零;否则线性增加。由于在合页点处不可微,因此使用次梯度方法进行优化。

    其他常见的损失函数

    损失 公式 典型用途
    Huber $ \begin{cases}\tfrac{1}{2}(y-\hat{y})^2 & |y-\hat{y}|\leq\delta \\ \delta(|y-\hat{y}|-\tfrac{\delta}{2}) & \text{otherwise}\end{cases} $ 鲁棒回归
    KL 散度 $ \sum_c p_c \log\frac{p_c}{q_c} $ 分布匹配,VAE
    Focal 损失 $ -\alpha(1-p_t)^\gamma \log p_t $ 不平衡分类
    CTC 损失 在对齐上的动态规划 语音识别、OCR
    三元组损失 $ \max(0,\; d(a,p) - d(a,n) + m) $ 度量学习、人脸验证

    选择合适的损失函数

    合适的损失函数取决于具体任务:

    • 回归 —— MSE 是默认选择;如果担心离群值,可切换到 MAE 或 Huber。
    • 二元分类 —— 使用 sigmoid 输出的二元交叉熵。
    • 多类分类 —— 使用 softmax 输出的多类交叉熵。
    • 多标签分类 —— 对每个标签独立应用二元交叉熵。
    • 排序或检索 —— 对比损失、三元组损失或 listwise 排序损失。

    一个重要的考虑因素是损失是否已校准——即最小化它是否能产生校准良好的预测概率。交叉熵是一种适当的评分规则,能产生校准的概率,而合页损失则不能。

    正则化项

    在实际应用中,总目标通常包含一个正则化项,用于惩罚模型的复杂度:

    $ J(\theta) = L(\theta) + \lambda \, R(\theta) $

    其中 $ \lambda $ 控制正则化的强度。常见选择包括 L2 正则化($ R = \|\theta\|_2^2 $)和 L1 正则化($ R = \|\theta\|_1 $)。详见 Overfitting and Regularization

    参见

    参考文献

    • Bishop, C. M. (2006). Pattern Recognition and Machine Learning,第 1 章。Springer。
    • Goodfellow, I., Bengio, Y. 与 Courville, A. (2016). Deep Learning,第 6 章与第 8 章。MIT Press。
    • Lin, T.-Y. et al. (2017). "Focal Loss for Dense Object Detection". ICCV.
    • Murphy, K. P. (2022). Probabilistic Machine Learning: An Introduction. MIT Press.