YOLOv5系列(三十七) 深度理解Binary Cross-Entropy与YOLOv5 LOSS(从二值损失基本原理到YOLOv5损失)

一,可视化理解Binary Cross-Entropy(推荐反复阅读)

介绍

如果你正在训练一个二分类器,很有可能你正在使用的损失函数是二值交叉熵/对数(binary cross-entropy / log)

你是否想过使用此损失函数到底意味着什么?问题是,鉴于如今库和框架的易用性,很容易让人忽略所使用损失函数的真正含义

动机

我一直在寻找一个可以向学生展示的以清晰简洁可视化的方式解释二值交叉熵/对数损失背后概念的博客文章。但由于我实在找不到,只好自己承担了编写的任务:-)

一个简单的分类问题

让我们从10个随机点开始:

x = [-2.2, -1.4, -0.8, 0.2, 0.4, 0.8, 1.2, 2.2, 2.9, 4.6]

这是唯一的特征:*x*

img

### Binary Cross-Entropy Loss (BCELoss) 的定义 Binary Cross-Entropy Loss 是一种用于分类问题的损失函数,在机器学习领域广泛应用。该损失函数衡量的是预测概率分布真实标签之间的差异程度。对于单个样本而言,如果 \( y \in {0, 1} \),则 BCE 可表示为: \[ L(y,\hat{y})=-\left[y\log(\hat{y})+(1-y)\log(1-\hat{y})\right] \] 其中 \( y \) 表示真实的类别标签(0 或者 1),\( \hat{y} \) 则代表模型给出的概率估计。 当处理多个训练样例时,则通常会计算所有样例上的平均损失作为最终的目标函数来优化[^4]。 ### 使用场景 此损失函数特别适用于那些输出可以被解释为某个事件发生的概率的任务中,比如垃圾邮件检测、广告点击率预估等。它能够有效地惩罚错误分类的情况,并且随着预测接近实际而逐渐减小。 ### 实现例子 下面是一个简单的 Python 函数实现 binary cross entropy loss 计算过程: ```python import numpy as np def bce_loss(y_true, y_pred): """ Compute the binary cross-entropy loss between true labels and predicted probabilities. Args: y_true: Array-like structure containing actual class labels (either 0 or 1). y_pred: Array-like structure with corresponding probability estimates from model output. Returns: float: The computed average binary cross-entropy across all samples. """ epsilon = 1e-7 # To prevent log(0) y_pred_clipped = np.clip(y_pred, epsilon, 1 - epsilon) losses = -(y_true * np.log(y_pred_clipped) + (1 - y_true) * np.log(1 - y_pred_clipped)) return np.mean(losses) ``` 上述代码实现了对给定的真实标签 `y_true` 和预测概率 `y_pred` 进行 binary cross entropy loss 的计算,并返回这些样本上损失得均
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小酒馆燃着灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值