损失函数分类

1. NLLLoss(负对数似然损失)

定义:

  • 直接对预测的概率 p(yi) 的负对数求平均。
  • 通常配合 Softmax 使用,输入为对数概率。
优点:
  • 对离散分类问题效果良好。
  • 更灵活,用户可以自行计算 Softmax。
缺点:
  • 需要输入已经经过 LogSoftmax 的对数概率。
  • 使用不便,现代任务中常被 CrossEntropyLoss 替代。
适用场景:
  • 分类问题,尤其是多分类问题。

2. CrossEntropyLoss

定义:

  • 内部集成了 SoftmaxNLLLoss 的计算。
优点:
  • 集成了 Softmax 和对数概率计算,使用简单方便。
  • 稳定性更高,避免了数值溢出问题。
缺点:
  • 不适用于多标签分类任务。
  • 输出需要为原始 logits。
适用场景:
  • 图像分类、文本分类等多分类任务。

3. BCELoss

定义:

  • 用于二分类任务,输入为概率值(通常在 [0, 1])。
优点:
  • 简单直观,适合二分类问题。
  • 适用于多标签分类(标签独立)。
缺点:
  • 输入必须经过 Sigmoid 函数,使用不如 BCEWithLogitsLoss 方便。
  • 数值稳定性较差,容易出现浮点溢出。
适用场景:
  • 二分类任务,如情感分析、垃圾邮件分类。
  • 多标签分类任务。

4. BCEWithLogitsLoss

定义:

  • 结合了 Sigmoid 和 BCELoss 的计算。
优点:
  • 自动处理 Sigmoid 和数值稳定性问题。
  • 更高效,推荐替代 BCELoss。
缺点:
  • 使用时需要注意输入为 logits,而非概率值。
适用场景:
  • 同 BCELoss,但推荐优先使用。

5. MSE(均方误差)

定义:

  • 衡量预测值和真实值之间的平方差。
优点:
  • 对小误差更敏感,优化平滑,易于收敛。
  • 实现简单,适用范围广。
缺点:
  • 对异常值非常敏感,可能导致模型过拟合异常值。
适用场景:
  • 连续值预测(如回归任务)。
  • 自监督任务(如自编码器)。

6. MAE(均绝对误差)

定义:

  • 衡量预测值和真实值之间的绝对差。
优点:
  • 对异常值更鲁棒,不会过分放大大的误差。
缺点:
  • 优化不平滑,梯度在零点不连续,可能导致收敛变慢。
适用场景:
  • 数据中可能存在异常值的回归任务。

7. SmoothL1Loss

定义:

  • 结合了 MSE 和 MAE 的优点。
优点:
  • 对小误差效果类似 MSE,收敛快;对大误差类似 MAE,鲁棒性好。
  • 平滑优化过程,适合复杂任务。
缺点:
  • 参数较多(如阈值),需要调试。
适用场景:
  • 目标检测中的回归(如边框偏移)。
  • 对异常值敏感但仍需要高精度的回归任务。

总结对比表格

损失函数定义适用任务优点缺点
NLLLoss负对数似然多分类任务灵活,自定义 Softmax需要 LogSoftmax,使用麻烦
CrossEntropyLoss集成 Softmax 和 NLLLoss多分类任务使用方便,数值稳定不支持多标签分类
BCELoss二分类交叉熵二分类、多标签分类简单直观需手动加 Sigmoid,数值易溢出
BCEWithLogitsLossBCELoss + Sigmoid二分类、多标签分类自动加 Sigmoid,数值稳定需输入 logits,无法直接输入概率
MSE均方误差连续值预测平滑优化,易收敛对异常值敏感
MAE均绝对误差连续值预测对异常值鲁棒优化不平滑,梯度零点不连续
SmoothL1LossMSE + MAE 结合回归、目标检测平滑优化,兼顾精度和鲁棒性参数较多,需调试

选择建议

  1. 分类任务:

    • 二分类:优先使用 BCEWithLogitsLoss
    • 多分类:使用 CrossEntropyLoss
    • 多标签分类:可使用 BCELossBCEWithLogitsLoss
  2. 回归任务:

    • 精确值预测:MSE
    • 数据有异常值:MAESmoothL1Loss
  3. 特殊场景:

    • 自定义 Softmax:使用 NLLLoss
    • 目标检测:SmoothL1Loss

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/926660.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透

一、触发器(Trigger) Trigger 决定了一个窗口(由 window assigner 定义)何时可以被 window function 处理。 每个 WindowAssigner 都有一个默认的 Trigger。 如果默认 trigger 无法满足你的需要,你可以在 trigger(…) 调用中指定自定义的 tr…

oracle中删除指定前缀的表

近期接手做的项目,发觉数据库中有许多多余的表。究其原因,应该是同事贪图方便,将过去做过的项目复制粘贴,然后修修改改。包括数据库也是克隆过来的,然后又没有删除本项目多余的表,结果经过几个轮回&#xf…

Mybatis:CRUD数据操作之修改数据update

Mybatis基础环境准备请看:Mybatis基础环境准备 本篇讲解Mybati数据CRUD数据操作之修改数据 用户在该页面书写需要修改的数据,点击 提交 按钮,就会将数据库中对应的数据进行修改。注意一点,如果哪儿个输入框没有输入内容&#xff…

遥感数据集:FTW全球农田边界和对应影像数据,约160万田块边界及7万多个样本

Fields of The World (FTW) 是一个面向农业田地边界实例分割的基准数据集,旨在推动机器学习模型的发展,满足全球农业监测对高精度、可扩展的田地边界数据的需求。该数据集由kerner-lab提供,于2024年8月28日发布,主要特征包括&…

从0开始linux(38)——线程(1)线程概念

欢迎来到博主专栏:从0开始linux 博主ID:代码小豪 文章目录 进程与线程线程概念线程的优点线程的独立数据 进程与线程 如果要理解线程,那么进程将会时绕不开的点。首先我们回顾一下我们之前在进程章节当中是如何描述进程的? 进程&…

使用 PDF API 合并 PDF 文件

内容来源: 如何在 Mac 上合并 PDF 文件 1. 注册与认证 您可以注册一个免费的 ComPDFKit API 帐户,该帐户允许您在 30 天内免费无限制地处理 1,000 多个文档。 ComPDFKit API 使用 JSON Web Tokens 方法进行安全身份验证。从控制面板获取您的公钥和密钥&…

【聊天室后端服务器开发】语音转换子服务

概述 实现逻辑 服务器搭建流程分析 基于gflags模块进行参数解析 RPC信息:当前服务器的地址端口,主要用于搭建RPC服务器的监听地址信息服务注册信息 注册中心的地址端口:向服务器中心进行服务注册外部访问地址端口:告知注册中心的…

w064基于springboot的高校学科竞赛平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件&#xff0…

UCOS-II 自学笔记

摘抄于大学期间记录在QQ空间的一篇自学笔记,当前清理空间,本来想直接删除掉的,但是感觉有些舍不得,因此先搬移过来。 一、UC/OS_II体系结构 二、UC/OS_II中的任务 1、任务的基本概念 在UCOS-II中,通常把一个大型任…

《Python基础》之Python中可以转换成json数据类型的数据

目录 一、JSON简介 JSON有两种基本结构 1、对象(Object) 2、数组(Array) 二、将数据装换成json数据类型方法 三、在Python中,以下数据类型可以直接转换为JSON数据类型 1、字典(Dictionary&#xff09…

Android -- 简易音乐播放器

Android – 简易音乐播放器 播放器功能:* 1. 播放模式:单曲、列表循环、列表随机;* 2. 后台播放(单例模式);* 3. 多位置同步状态回调;处理模块:* 1. 提取文件信息:音频文…

纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架

前言​ 开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C 库,如 ​​OpenCV​​ 或 ​​​dlib​​​,但通过 ​​​cgo​​​ 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。…

uniapp中父组件数组更新后与页面渲染数组不一致实战记录

简单描述一下业务场景方便理解: 商品设置功能,支持添加多组商品(点击添加按钮进行增加).可以对任意商品进行删除(点击减少按钮对选中的商品设置进行删除). 问题: 正常添加操作后,对已添加的任意商品删除后,控制台打印数组正常.但是与页面显示不一致.已上图为例,选中尾…

【Figma】中文版安装

一、软件安装包下载 打开官网链接https://www.figma.com/downloads/下载相应安装包 或使用我已下载好的链接: FigmaSetup.exe 链接: https://pan.baidu.com/s/113eQ8JRETdeOwUp2B3uieA?pwd4vep 二、安装流程 1.点击安装包 2.选择在浏览器登录 3.输入账号密码&a…

SpringBoot框架在宠物领养系统中的应用

摘 要 如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于宠物领养…

SpringAi整合大模型(进阶版)

进阶版是在基础的对话版之上进行新增功能。 如果还没弄出基础版的,请参考 https://blog.csdn.net/weixin_54925172/article/details/144143523?sharetypeblogdetail&sharerId144143523&sharereferPC&sharesourceweixin_54925172&spm1011.2480.30…

redis快速进门

、数据库类型认识 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行…

爬虫笔记24——纷玩岛自动抢票脚本笔记

纷玩岛自动抢票,协议抢票思路实现 一、获取Authorization凭证二、几个关键的参数三、几个关键的接口获取参数v,这个参数其实可以写死,可忽略通过价位获取演出的参数信息获取观演人信息,账号提前录入即可提交订单接口 先看实现图&a…

Netty的心跳机制怎么实现的?

大家好,我是锋哥。今天分享关于【Netty的心跳机制怎么实现的?】面试题。希望对大家有帮助; Netty的心跳机制怎么实现的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty 的心跳机制用于维持客户端和服务器之间的…

RHEL7+Oracle11.2 RAC集群-多路径(multipath+udev)安装步骤

RHEL7Oracle11.2RAC集群-多路径(multipathudev)安装 配置虚拟存储 使用StarWind Management Console软件,配置存储 dggrid1: 1g*3 Dggrid2: 1g*3 Dgsystem: 5g*1 系统表空间,临时表空间,UNDO,参数文件…