损失函数-二分类和多分类
二分类和多分类的损失函数
二分类
-
损失函数
L ( y , y ^ ) = − ( y l o g ( y ^ ) ) + ( 1 − y ) l o g ( 1 − y ^ ) L(y,\hat{y}) = -(ylog(\hat{y})) + (1-y)log(1-\hat{y}) L(y,y^)=−(ylog(y^))+(1−y)log(1−y^)
其中真实标签表示为y(取值为 0 或 1),预测概率表示为 y ^ \hat{y} y^(取值在 0 到 1 之间) -
代码
import torch
import torch.nn as nncriterion = nn.BCELoss() # 或者使用 nn.BCEWithLogitsLoss() BCEWithLogitsLoss可以直接接收logit输出
# 假设模型的输出 logits
logits = torch.tensor([0.2, 0.8, 0.5, 0.1]) #shape: (4, 1)
predicted_probabilities = torch.sigmoid(logits) #shape: (4, 1)
# 真实标签
labels = torch.tensor([0.0, 1.0, 1.0, 0.0]) #shape: (4, 1)
# 计算损失
loss = criterion(predicted_probabilities, labels)
print("Loss:", loss.item())
- 可视化损失值
对于输出的loss值,我们往往不能理解这个loss是好还是坏,我们重看损失函数,发现对于单个正样本来说:
l o s s = − l o g ( y ^ ) loss = -log(\hat{y}) loss=−log(y^)
对于单个负样本来说:
l o s s = − l o g ( 1 − y ^ ) loss = -log(1-\hat{y}) loss=−log(1−y^)
从这个公式我们可以反推模型对正样本预测的概率为:
h i t p o s = e − l o s s hit_{pos} = e^{-loss} hitpos=e−loss
对负样本预测的概率为:
h i t n e g = 1 − e − l o s s hit_{neg} = 1-e^{-loss} hitneg=1−e−loss
这个hit就比较形象了,$hit_{pos}$越接近1,说明正样本的预测效果效果越好,$hit_{neg}$越接近0,说明负样本的预测效果效果越好
多分类
- 损失函数
L ( y , y ^ ) = − ∑ c = 1 C y l o g ( y ^ ) L(y,\hat{y}) = -\sum_{c=1}^Cylog(\hat{y}) L(y,y^)=−c=1∑Cylog(y^)
其中真实标签表示为y(取值为 0 或 1,表示是否属于第c类),预测概率表示为$\hat{y}$(取值在 0 到 1 之间) - 代码
import torch
import torch.nn as nncriterion = nn.CrossEntropyLoss()# 假设模型的输出 logits(未经过 sigmoid)
logits = torch.tensor([[1.0, 2.0], # 类别 0 和 1 的 logits[0.0, 1.0],[0.5, 0.5],[0.0, 0.0]]) # shape:(4,2)# 真实标签,格式为类别索引
# 0 表示第一个类别,1 表示第二个类别
labels = torch.tensor([1, 1, 0, 0]) # shape:(1,4)# 计算损失
loss = criterion(logits, labels)print("Loss:", loss.item())
- 可视化损失值
对于输出的loss值,我们往往不能理解这个loss是好还是坏,我们重看损失函数,发现对于单个样本来说:
l o s s = − l o g ( y ^ ) loss = -log(\hat{y}) loss=−log(y^)
从这个公式我们可以反推模型对当前样本的正确类别预测的概率为:
h i t = e − l o s s hit = e^{-loss} hit=e−loss
这个hit就比较形象了,hit越接近1,说明效果越好
二分类和多分类区别
- 从损失函数的物理含义上来看,二分类的损失函数不仅希望正样本输出概率接近1,并且希望负样本的输出概率接近0;而多分类的损失函数仅仅希望正样本输出概率接近1,对于负样本其实没有约束
- 对于二分类问题:如果你希望模型不仅能找出正样本,而且筛掉副样本,就用二分类损失。如果你仅仅希望找出正样本而不管负样本,多分类的损失也能用。
多分类问题中评价问题
TP(True Positive):真实标签为正类,模型预测为正类的样本数量。
TN(True Negative):真实标签为负类,模型预测为负类的样本数量。
FP(False Positive):真实标签为负类,但模型预测为正类的样本数量。
FN(False Negative):真实标签为正类,但模型预测为负类的样本数量。
-
准确率acc
关心模型预测的能力
a c c = T P + T N T P + F P + F N + T N acc = \frac{TP+TN}{TP+FP+FN+TN} acc=TP+FP+FN+TNTP+TN -
精准率pre
关心模型预测负样本能力
p r e = T P T P + F P pre = \frac{TP}{TP+FP} pre=TP+FPTP -
召回率Recall
关心模型预测正样本的能力
r e c a l l = T P T P + F N recall = \frac{TP}{TP+FN} recall=TP+FNTP
相关文章:
损失函数-二分类和多分类
二分类和多分类的损失函数 二分类 损失函数 L ( y , y ^ ) − ( y l o g ( y ^ ) ) ( 1 − y ) l o g ( 1 − y ^ ) L(y,\hat{y}) -(ylog(\hat{y})) (1-y)log(1-\hat{y}) L(y,y^)−(ylog(y^))(1−y)log(1−y^) 其中真实标签表示为y(取值为 0 或 1&#…...
汽车损坏识别检测数据集,使用yolo,pasical voc xml,coco json格式标注,6696张图片,可识别11种损坏类型,识别率89.7%
汽车损坏识别检测数据集,使用yolo,pasical voc xml,coco json格式标注,6696张图片,可识别11种损坏类型损坏: 前挡风玻璃(damage-front-windscreen ) 损坏的门 (damaged-d…...
从 Elastic 迁移到 Easysearch 指引
从 Elasticsearch 迁移到 Easysearch 需要考虑多个方面,这取决于当前使用的 Elasticsearch 版本、能容忍的停机时间、应用需求等。在此背景下,我们梳理了一下通用的升级指引,方便大家进行迁移工作。 迁移路径 Elasticsearch 版本快照兼容推…...
Yapi RCE 复现和批量编写
一、漏洞复现 首先祭出fofa,搜索语句为 app"yapi",但是为了避开国内,所以使用 app"yapi" && country"SG",SG为新加坡,结果如图 虽然有30页,但是能利用的可能也没几…...
【2024年-9月-21日-开源社区openEuler实践记录】PilotGo:简化运维管理的开源利器
开篇介绍 大家好,我是 fzr123。在运维领域摸爬滚打许久,我发现了PilotGo这个超实用的开源项目,它正悄然改变着运维人员处理日常任务的方式,为复杂的运维管理工作带来了极大的便利与效率提升。 技术亮点 1. 自动化运维任务编排 …...
ubuntu 20.04 国内源安装docker
先更新软件包,安装备要apt软件 # 更新软件包索引 sudo apt-get update# 安装需要的软件包以使apt能够通过HTTPS使用仓库 sudo apt-get install ca-certificates curl gnupg lsb-release使用阿里云源 # 添加阿里云官方GPG密钥 curl -fsSL http://mirrors.aliyun.co…...
比亚迪30亿教育慈善基金正式启动,助推中国科教进步
12月30日,比亚迪在深圳总部举行了30亿教育慈善基金启动仪式,比亚迪股份有限公司董事长兼总裁王传福与来自全国的35所高校代表及28所科技馆、博物馆代表共同启动比亚迪30亿教育慈善基金捐赠,推动中国科教进步。 捐资30亿教育慈善基金…...
【链表】重排链表,看似复杂实则并不简单~
文章目录 143. 重排链表解题思路 143. 重排链表 143. 重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能…...
yakit-靶场-高级前端加解密与验签实战(for嵌套纯享版)
高级前端加解密与验签实战 一、前端验证签名(验签)表单:HMAC-SHA256 使用hmac-sha256的十六进制key值可以加密 与页面加密后的值相同 热加载: encryptData func(p) { //sha256key值key codec.DecodeHex("313233343132333…...
洛谷 P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
题解: #include<iostream> #include<vector> //定义二维数组,直接标识不同出法相应对应关系 int mark[5][5]{{0,-1,1,1,-1},{1,0,-1,1,-1},{-1,1,0,-1,1},{-1,-1,1,0,1},{1,1,-1,-1,0}}; void JudgeScore(int A,int B,int& countA,int&…...
NLP论文速读(NeurIPS 2024)|BERT作为生成式上下文学习者BERTs are Generative In-Context Learners
论文速读|BERTs are Generative In-Context Learners 论文信息: 简介: 本文探讨了在自然语言处理(NLP)领域中,上下文学习(in-context learning)的能力,这通常与因果语言模型&#x…...
亚马逊云科技 | Amazon Nova:智能技术新势力
在2024年亚马逊云科技re:invent大会上,Amazon Nova 系列自研生成式 AI 多模态模型重磅登场,新一代的AI产品-Amazon Nova,隶属于 Amazon Bedrock,一共发布6款大模型,精准切入不同领域,解锁多元业务可能&…...
Kali 自动化换源脚本编写与使用
1. 背景与需求 在使用 Kali Linux 的过程中,软件源的配置对系统的更新与软件安装速度至关重要。 Kali 的默认官方源提供了安全且最新的软件包,但有时由于网络条件或地理位置的限制,使用官方源可能会出现速度较慢的问题。 为了解决这一问题&a…...
【已解决】PDF文档有密码怎么办(2024新)免费在线工具PDF2Go
强大的解密工具PDF2Go使用指南 一、PDF2Go简介 PDF2Go是由德国QaamGo公司开发的在线PDF工具箱,以其强大的功能和用户友好的界面而闻名。它不仅免费,而且不需要用户注册或安装任何软件,只需打开浏览器即可使用。 二、功能特点 1. 免费且无需…...
华为ensp-BGP联盟
学习新思想,争做新青年,今天学习BGP联盟 实验介绍 一个BGP联盟是一个具有内部层次结构的AS。一个BGP联盟由若干个子AS 组成,子AS也称为成员AS。对于一个BGP联盟,其成员AS内部的各路由器之间需要建立全互联的IBGP邻居关系或使用B…...
ArcGIS中怎么进行水文分析?(思路介绍)
最近有人咨询,ArcGIS中怎么进行水文分析,大致的说一下河网提取的思路哈 解决思路:dem填洼→计算水流方向→计算水流累积矩阵→形成河网 dem填洼 计算水流方向 计算水流累积矩阵 用栅格计算器,设阈值(自己多次尝试&…...
LabVIEW中实现多个Subpanel独立调用同一个VI
在LabVIEW中,如果需要通过多个Subpanel同时调用同一个VI并让这些VI实例独立运行,可以通过以下方法实现: 1. 问题背景 LabVIEW默认的VI是以单实例方式运行的。当将同一个VI加载到多个Subpanel时,会因为共享同一内存空间而导致冲突…...
【SpringMVC】Bean 加载控制
在实际开发中,SpringMVC 负责扫描和加载 Controller 层的 Bean 对象,而业务层和数据层等其他模块的 Bean 则由 Spring 框架负责扫描和加载。那么,如何控制 Spring 仅加载除了 Controller 层之外的其他 Bean 呢?为了解决这个问题&a…...
Socket编程中关于服务器端监听端口与新连接端口的深入剖析
Socket编程中关于服务器端监听端口与新连接端口的深入剖析 在Socket编程领域,存在一个容易让初学者感到困惑的问题。尽管很多人在网络上进行了相关探讨,但不少解释要么不够清晰明了,要么太过肤浅,未能深入到问题的核心࿰…...
如何通过HTTP API更新Doc
本文介绍如何通过HTTP API更新Collection中已存在的Doc。 说明 若更新Doc时指定id不存在,则本次更新Doc操作无效 如只更新部分属性fields,其他未更新属性fields默认被置为null 前提条件 已创建Cluster:创建Cluster。 已获得API-KEY&#…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
