几种常见的损失函数

1. 损失函数、代价函数与目标函数

  损失函数(Loss Function):是定义在单个样本上的,是指一个样本的误差。
  代价函数(Cost Function):是定义在整个训练集上的,是所有样本误差的平均,也就是所有损失函数值的平均。
  目标函数(Object Function):是指最终需要优化的函数,一般来说是经验风险+结构风险,也就是(代价函数+正则化项)。

--

2. 常用的损失函数

  这一节转载自博客

(1)0-1损失函数(0-1 loss function)

\[ L(y, f(x)) = \begin{cases} 1, & {y \neq f(x) } \\ 0, & {y = f(x)} \end{cases} \]
  也就是说,当预测错误时,损失函数为1,当预测正确时,损失函数值为0。该损失函数不考虑预测值和真实值的误差程度。只要错误,就是1。

(2)平方损失函数(quadratic loss function)

\[ L(y, f(x)) = (y - f(x))^2 \]
  是指预测值与实际值差的平方。

(3)绝对值损失函数(absolute loss function)

\[ L(y, f(x)) = | y -f(x) | \]
  该损失函数的意义和上面差不多,只不过是取了绝对值而不是求绝对值,差距不会被平方放大。

(4)对数损失函数(logarithmic loss function)

\[ L(y, p(y|x)) = - \log p(y|x) \]
  这个损失函数就比较难理解了。事实上,该损失函数用到了极大似然估计的思想。P(Y|X)通俗的解释就是:在当前模型的基础上,对于样本X,其预测值为Y,也就是预测正确的概率。由于概率之间的同时满足需要使用乘法,为了将其转化为加法,我们将其取对数。最后由于是损失函数,所以预测正确的概率越高,其损失值应该是越小,因此再加个负号取个反。

(5)Hinge loss

  Hinge loss一般分类算法中的损失函数,尤其是SVM,其定义为:
\[ L(w,b) = max \{0, 1-yf(x) \} \]
  其中 $ y = +1 或 y = -1 $ ,$ f(x) = wx+b $ ,当为SVM的线性核时。


3. 常用的代价函数

(1)均方误差(Mean Squared Error)

\[ MSE = \frac{1}{N} \sum_{i=1}^N (y^{(i)} - f(x^{(i)})) \]
  均方误差是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。( $ i $ 表示第 $ i $ 个样本,$ N $ 表示样本总数)
  通常用来做回归问题的代价函数

(2)均方根误差

\[ RMSE = \sqrt{\frac{1}{N} \sum_{i=1}^N (y^{(i)} - f(x^{(i)})) } \]
  均方根误差是均方误差的算术平方根,能够直观观测预测值与实际值的离散程度。
  通常用来作为回归算法的性能指标

(3)平均绝对误差(Mean Absolute Error)

\[ MAE = \frac{1}{N} \sum_{i=1}^N |y^{(i)} - f(x^{(i)})| \]
  平均绝对误差是绝对误差的平均值 ,平均绝对误差能更好地反映预测值误差的实际情况。
  通常用来作为回归算法的性能指标

(4)交叉熵代价函数(Cross Entry)

\[ H(p,q) = - \sum_{i=1}^{N} p(x^{(i)}) \log {q(x^{(-i)})} \]
  交叉熵是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其中 $ p(x) $ 是指真实分布的概率, q(x) 是模型通过数据计算出来的概率估计。
  比如对于二分类模型的交叉熵代价函数(可参考逻辑回归一节):
\[ L(w,b) = -\frac{1}{N} \sum_{i=1}^{N} (y^{(i)} \log {f(x^{(i)})} + ( 1- y^{(i)}) \log {(1- f(x^{(i)})})) \]
  其中 $ f(x) $ 可以是sigmoid函数。或深度学习中的其它激活函数。而 $ y^{(i)} \in { 0,1 } $ 。
  通常用做分类问题的代价函数。


引用及参考:
[1] https://blog.youkuaiyun.com/reallocing1/article/details/56292877
[2] https://blog.youkuaiyun.com/m_buddy/article/details/80224409
[3] https://blog.youkuaiyun.com/chaipp0607/article/details/76037351
[4] https://blog.youkuaiyun.com/shenxiaoming77/article/details/51614601

写在最后:本文参考以上资料进行整合与总结,文章中可能出现理解不当的地方,若有所见解或异议可在下方评论,谢谢!
若需转载请注明https://www.cnblogs.com/lliuye/p/9549881.html

转载于:https://www.cnblogs.com/lliuye/p/9549881.html

### 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、付费专栏及课程。

余额充值