当前位置: 首页 > news >正文

二分类问题sigmoid+二元交叉熵损失

二元交叉熵损失函数(Binary Cross-Entropy Loss)是二分类问题中常用的损失函数,用于衡量模型预测概率与真实标签之间的差异。


  • 二分类:通常与 Sigmoid 激活函数结合使用,标签应为 0 或 1。
  • 多分类:通常与 Softmax 激活函数结合使用,将输出转换为概率分布,标签应为one hot编码形式。

二分类问题中,输出层只需要一个神经元,使用sigmoid函数,以确保预测概率在 [ 0 , 1 ] [0, 1] [0,1] 之间,表示样本属于正类别的概率。而使用softmax函数时,输出层需要两个神经元,分别表示样本属于两个类别的概率。这两个概率值是冗余的(一个是1减去另一个),且会增加模型的复杂度和参数数量。

对于二分类问题,使用二元交叉熵损失函数(Binary Cross-Entropy Loss),该损失函数与sigmoid函数的输出形式相匹配,直接计算预测概率与真实标签之间的差异。

对于单个样本,二元交叉熵损失函数的公式为:

L ( y , y ^ ) = − [ y log ⁡ ( y ^ ) + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] L(y, \hat{y}) = -\left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] L(y,y^)=[ylog(y^)+(1y)log(1y^)]

其中:

  • y y y:真实标签,取值为 0 或 1。
  • y ^ \hat{y} y^:模型预测为正类的概率,取值范围为 [ 0 , 1 ] [0, 1] [0,1]

对于包含 N N N 个样本的数据集,总体损失为:

L = − 1 N ∑ i = 1 N [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ] L = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right] L=N1i=1N[yilog(y^i)+(1yi)log(1y^i)]

解释

  • y = 1 y = 1 y=1

    L = − log ⁡ ( y ^ ) L = -\log(\hat{y}) L=log(y^)

    • 若模型预测 y ^ → 1 \hat{y} \rightarrow 1 y^1,则损失 L → 0 L \rightarrow 0 L0,表示预测正确。
    • 若模型预测 y ^ → 0 \hat{y} \rightarrow 0 y^0,则损失 L → + ∞ L \rightarrow +\infty L+,表示预测错误。
  • y = 0 y = 0 y=0

    L = − log ⁡ ( 1 − y ^ ) L = -\log(1 - \hat{y}) L=log(1y^)

    • 若模型预测 y ^ → 0 \hat{y} \rightarrow 0 y^0,则损失 L → 0 L \rightarrow 0 L0,表示预测正确。
    • 若模型预测 y ^ → 1 \hat{y} \rightarrow 1 y^1,则损失 L → + ∞ L \rightarrow +\infty L+,表示预测错误。

在二分类问题中,通常将 Sigmoid 函数作为输出层的激活函数,其输出值在 [ 0 , 1 ] [0, 1] [0,1] 之间,与二元交叉熵损失函数的输入要求一致。

损失函数对错误的预测给予较大的惩罚,鼓励模型提高预测准确性。

相比均方误差等损失函数,交叉熵在处理接近 0 或 1 的概率时,梯度不会消失,保证了优化过程的稳定性。

对于类别不平衡的数据集,可通过引入类别权重或使用加权交叉熵损失函数,调整损失函数对不同类别的重视程度,缓解类别不平衡问题。

http://www.xdnf.cn/news/374725.html

相关文章:

  • 微服务的“迷宫” - 我们为何需要服务网格?
  • 数据库故障排查指南:从连接问题和性能优化
  • Docker使用小结
  • 为什么选择 FastAPI、React 和 MongoDB?
  • vue 组件函数式调用实战:以身份验证弹窗为例
  • 计算机大类专业数据结构下半期实验练习题
  • 【基础IO下】磁盘/软硬链接/动静态库
  • 精品,第21章 Python数据类型详解:字典的入门与进阶总结(DevOps SRE视角)
  • sensitive-word-admin v2.0.0 全新 ui 版本发布!vue+前后端分离
  • T2I-R1:通过语义级与图像 token 级协同链式思维强化图像生成
  • 为什么有了BST了,还要红黑树,红黑树有什么优点
  • OCP开闭原则
  • Xilinx Kintex-7 XC7K325T-2FFG676I 赛灵思 FPGA
  • Kubernetes生产实战(十六):集群安全加固全攻略
  • Visual Studio 2022 远程调试
  • 【字符函数和字符串函数】
  • 类加载机制详解:双亲委派模型与打破它的方式
  • 服务器机架的功能和重要性
  • 遗传算法组卷系统实现(Java版)
  • Linux平台下SSH 协议克隆Github远程仓库并配置密钥
  • Unity.UGUI DrawCall合批笔记
  • Unity Shaders and Effets Cookbook
  • LeetCode 热题 100 138. 随机链表的复制
  • 关键点检测--使用YOLOv8对Leeds Sports Pose(LSP)关键点检测
  • 数学相关使用笔记
  • libbpf.c:46:10: fatal error:‘libelf.h file not found
  • SpringCloud之Eureka基础认识-服务注册中心
  • 使用lldb查看Rust不同类型的结构
  • Java与Go语言对比教程
  • 【计算机视觉】优化MVSNet可微分代价体以提高深度估计精度的关键技术