常见损失函数总结

本文详细介绍了几种常见的损失函数,包括0-1损失、均方差损失、绝对值损失、交叉熵损失和合页损失。对于每种损失函数,文章不仅提供了公式,还解释了它们的来源和适用场景,例如交叉熵损失在分类问题中的应用以及合页损失在最大间隔分类中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见损失函数

  • 损失函数: 用来评价模型的预测值和真实值不一致的程度,损失函数越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。

0-1损失函数(zero-one loss)

  • 公式: L ( Y , f ( X ) ) = { 1 Y = f ( X ) 0 Y ≠ f ( X ) L(Y,f(X))= \begin{cases} 1 & Y=f(X) \\ 0 & Y≠f(X)\end{cases} L(Y,f(X))={ 10Y=f(X)Y=f(X)即预测值等于真实值则损失为0,否则损失为1
  • 0-1损失函数对应分类错误的个数,但是它是一个非凸函数,不太适用.

均方差损失损失函数

  • 均方差Mean Squared Error(MSE)损失是机器学习、深度学习回归任务中最常用的一种损失函数,也称为L2 Loss。其基本形式如下: J M S E = 1 N ∑ i = 1 N ( y i − y i ^ ) 2 J_{MSE}=\frac{1}{N} ∑_{i=1}^N(y_i-\hat{y_i} )^2 JMSE=N1i=1N(yiyi^)2
  • 均方误差的由来
    • 实际上在一定的假设下,我们可以使用最大化似然得到均方差损失的形式。
    • 假设模型预测 ( y i ^ ) (\hat{y_i}) (yi^)与真实值 ( y i ) (y_i) (yi)之间的误差服从标准正太分布: p ( x ) = 1 2 π e x p ⁡ ( x 2 2 ) p(x)=\frac{1}{\sqrt{2π}}exp⁡(\frac{x^2}{2}) p(x)=2π 1exp(2x2)
    • 则给定一个样本 x i x_i xi模型输出真实值 y i y_i yi的概率为: p ( y i ∣ x i ) = 1 2 π e x p ⁡ ( y i − y i ^ 2 2 ) p(y_i |x_i )=\frac{1}{\sqrt{2π}} exp⁡(\frac{y_i-\hat{y_i}^2}{2}) p(yixi)=2π 1exp(2yiyi^2)
    • 进一步我们假设数据集中 N N N个样本点之间相互独立,则给定所有 X X X输出所有真实值 Y Y Y的概率,即似然函数为: L ( X , Y ) = ∏ i = 1 N 1 2 π e x p ⁡ ( y i − y i ^ 2 2 ) L(X,Y)=∏_{i=1}^N \frac{1}{\sqrt{2π}} exp⁡(\frac{y_i-\hat{y_i}^2}{2}) L(X,Y)=i=1N2π 1exp(2yiyi^2)
    • 取对数,得到对数似然函数: L L ( X , Y ) = l o g ⁡ ( L ( X , Y ) ) = − N 2 l o g 2 π − 1 2 ∑ i = 1 N ( y i − y i ^ ) 2 LL(X,Y)=log⁡(L(X,Y))=-\frac{N}{2} log2π-\frac{1}{2} ∑_{i=1}^N (y_i-\hat{y_i })^2 LL(X,Y)=log(L(X,Y))=2Nlog2π21i=1N(yiyi^)2
    • 那最大似然估计,就可以通过最小化最后一项来实现: N L L ( X , Y ) = − 1 2 ∑ i = 1 N ( y i − y i ^ ) 2 NLL(X,Y)=-\frac{1}{2} ∑_{i=1}^N (y_i-\hat{y_i })^2 NLL(X,Y)=21i=1N(<
### YOLO 模型中常见损失函数及其作用 #### 1. **平方误差损失 (MSE Loss)** 在早期版本的 YOLO 中(如 YOLOv1),边界框回归采用的是均方误差损失。这种损失用于预测边界框的位置和大小,具体来说是对中心坐标 \(x, y\) 和宽度高度 \(w, h\) 进行优化。尽管简单易用,但它并未考虑不同尺寸物体之间的差异以及重叠区域的影响[^1]。 ```python import torch.nn as nn mse_loss = nn.MSELoss() ``` --- #### 2. **交叉熵损失 (Cross Entropy Loss)** 对于分类任务,YOLO 使用交叉熵损失来衡量预测类别分布与真实标签之间的差距。这一部分主要负责提高模型对目标类别的识别能力。 ```python cross_entropy_loss = nn.CrossEntropyLoss() ``` --- #### 3. **IoU 类损失** 从 YOLOv4 起,研究者更倾向于使用基于 IoU 的损失函数,这类方法能够更好地评估边界框定位的准确性。以下是几种常见的变体: - **GIoU (Generalized Intersection over Union):** GIoU 是传统 IoU 的扩展版,在计算交并比的基础上引入了一个惩罚项,从而解决了当两个矩形完全不相交时无法提供梯度信号的问题。 - **DIoU (Distance-IoU):** DIoU 不仅考虑了重叠面积的比例关系,还加入了两边界框中心点距离作为额外约束条件,有助于加速收敛过程并提升性能表现。 - **CIoU (Complete-IoU):** CIoU 综合考量了三个因素——重叠程度、中心点偏离量以及宽高比例一致性,因此被认为是最先进的位置敏感型损失之一。 ```python def giou_loss(pred_boxes, target_boxes): # 实现 GIou 计算逻辑... pass def diou_loss(pred_boxes, target_boxes): # 实现 DIou 计算逻辑... pass def ciou_loss(pred_boxes, target_boxes): # 实现 CIou 计算逻辑... pass ``` --- #### 4. **Focal Loss** 针对样本不平衡问题设计的一种改进型交叉熵损失形式。通过调整权重系数使得难分样本获得更高的关注度,进而改善整体检测效果特别是小目标场景下的召回率指标得分情况显著优于常规做法。 ```python focal_loss = F.binary_cross_entropy_with_logits(logits, targets, weight=weights, reduction='mean') ``` --- ### 总结说明 每种类型的损失都有其特定的应用范围及优势所在:平方差适合基础几何参数校准;而各类 IoU 变种则更加贴合实际需求侧重于空间布局匹配精准度方面;至于 focal loss 则专注于解决极端数据分布带来的挑战等问题。这些组件共同构成了现代 YOLO 架构高效运行的核心支柱[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值