深度学习 | 多类交叉熵(Categorical Cross Entropy)详解 + Python实现

在多分类任务中,模型输出一个概率分布,常用的损失函数是 Categorical Cross Entropy(多类交叉熵)。本文将带你理解其数学本质、应用场景、数值稳定性及完整 Python 实现。

📘 一、什么是 Categorical Cross Entropy?

多类交叉熵损失函数 衡量的是预测的概率分布 \hat{y}与真实类别分布 y 之间的距离。通常用于 Softmax 输出层 + 多分类问题

🧮 二、数学公式

设:

  • y=[y_{1},y_{2},...,y_{K}]:真实标签(独热编码 One-Hot)

  • \hat{y}=[y^1,y^2,...,y^K]:模型预测概率(Softmax 输出)

则多类交叉熵定义为: 

\mathcal{L}_{\text{CCE}} = -\sum_{i=1}^{K} y_i \cdot \log(\hat{y}_i) 

含义:

  • y_i=1 且其他为 0(独热编码),则只考虑正确类别对应的概率;

  • 预测越接近真实标签,对应损失越小。

🧑‍💻 三、Python 实现(含数值稳定)

函数实现如下:

import mathdef categorical_cross_entropy(y_true, y_pred):"""计算多类交叉熵损失(适用于独热编码标签)参数:y_true (List[float]):真实标签(One-Hot)y_pred (List[float]):预测概率(Softmax 输出)返回:float:交叉熵损失值"""epsilon = 1e-15  # 防止 log(0)y_pred = [min(max(p, epsilon), 1 - epsilon) for p in y_pred]return -sum(y * math.log(p) for y, p in zip(y_true, y_pred))# 示例:3类分类问题
y_true = [0, 1, 0]
y_pred = [0.2, 0.7, 0.1]loss = categorical_cross_entropy(y_true, y_pred)
print("Categorical Cross Entropy:", loss)

✅ 输出示例: 

Categorical Cross Entropy: 0.35667494393873245

⚠️ 四、为什么需要 Epsilon 防止 log(0)?

在预测中,某些类概率可能非常接近 0(例如 1e-20),直接对其取对数会:

  • 产生 math domain error

  • 导致梯度爆炸或模型不稳定。

因此我们设置:

epsilon = 1e-15
y_pred = max(min(p, 1 - epsilon), epsilon)

🔄 五、与 Binary Cross Entropy 的区别 

项目Binary Cross EntropyCategorical Cross Entropy
应用场景二分类或多标签多分类(单标签)
标签格式0 或 1独热编码
输出层SigmoidSoftmax

🧠 六、实际应用场景

  • 图像分类(如 CIFAR-10、ImageNet)

  • 文本分类(如新闻分类、情感分析)

  • 多类别实体识别(NER)

📌 七、总结

  • Categorical Cross Entropy 是多分类任务的首选损失函数;

  • 与 Softmax 输出层配合使用;

  • 一定要做 数值稳定性处理(加 epsilon);

  • 真实标签应为 One-Hot 向量;

  • 预测越准,损失越小。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis-Plus通用中等、大量数据分批查询和处理

函数式接口 获取分页数据接口 主要用于获取数据 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;FunctionalInterface public interface MyBatisPlusPageFunctionInterface<T> {Page<T> selectPage(Page<T> page);}数据处理接口 import…

Ps 2025安装包(Adobe Photoshop 2025)安装包免费免激活版下载 附图文详细安装教程

[软件名称]&#xff1a;Ps2025 V26.3 [软件大小]&#xff1a;4.86 G [系统要求]&#xff1a;支持Win7及更高版本 [夸克网盘下载https://pan.quark.cn/s/d35677af9ef9 &#xff08;建议用手机保存到网盘后&#xff0c;再用电脑下载&#xff09;更多免费软件见https://docs.qq.co…

Codeforces Round 1037 (Div. 3)(补题)

文章目录前言A.Only One DigitB.No Casino in the MountainsC. I Will Definitely Make ItD.This Is the Last TimeE.G-C-D, Unlucky!总结前言 感觉前四道&#xff0c;就是考对于题目的理解能力&#xff0c;以及自己的模拟能力 A.Only One Digit 题目传送门&#xff1a;Only …

基于单片机智能插座设计/智能开关

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 随着我国的电子计算机技术的快速发展以及居民对现实生活的要求也在不断提升&#xff0c;所以很多…

[Linux]git_gdb

一、git1. git 常用指令git status 查看仓库状态git add <文件名> 把文件添加到仓库暂存区git commit -m "信息" 把文件加入仓库git push 把本地仓库同步到远端git pull …

医疗AI与融合数据库的整合:挑战、架构与未来展望(下)

🩺 解决方案:引入融合数据库(Multi-modal Data Fusion DB) 医院引入一款支持图、向量、表、流的融合数据库(如Oracle ADW、Milvus+PostgreSQL、或某国产平台),完成了以下集成: 数据类型 来源系统 格式/模型 示例内容 基因组数据 NGS平台 VCF / JSON / 图 EGFR突变、A…

【深度强化学习】MIP-DQN 实现案例(完整Python代码)

目录MIP-DQN 算法概述建模基础训练阶段&#xff08;Training&#xff09;部署阶段&#xff08;Online Execution&#xff09;DNN 网络转化为 MIP 表达式性能指标完整 Python 代码实现主函数&#xff1a;random_generator_battery模型函数&#xff1a;MIP_DQN基础/专用库包安装模…

微信小程序 wx.request() 的封装

基于微信小程序的wx.request()方法封装下面是一个封装方案&#xff0c;满足您提出的所有要求&#xff1a;class HttpService {constructor() {this.baseUrl ; // 基础URLthis.pendingRequests new Map(); // 请求缓存池this.interceptors {request: [],response: []};}// 设…

yolo8实时识别目标(和平精英敌人+骨骼关键点)

现在需要识别人物的肢体&#xff08;姿态/骨骼关键点&#xff09;&#xff0c;即所谓的「姿态估计&#xff08;pose estimation&#xff09;」&#xff0c;以下是一些主流、训练好可直接使用的开源模型推荐&#xff0c;支持多人识别与骨骼关键点检测&#xff0c;适合你后续用于…

MyBatis动态SQL全解析:五大核心标签实战指南

MyBatis动态SQL全解析&#xff1a;五大核心标签实战指南 一、动态SQL的价值&#xff1a;告别硬编码时代 传统SQL拼接的痛点 // 传统方式需要手动拼接SQL字符串 StringBuilder sql new StringBuilder("SELECT * FROM orders WHERE 11"); if (status ! null) {sql.app…

线上 CPU 过高怎么排查

通过以下几个命令解决1、top命令&#xff0c;找到 CPU 过高的pid(进程); ​编辑 2、根据pid(进程)找到CPU过高的线程id;top -H -p pid(进程)3、把线程id转换16 进制的printf 0x%x\n 线程id4、导致CPU 飙升的线程异常信息&#xff0c;-A 30表示打印 30 行记录jstack pid(进程id)…

Letter Combination of a Phone Number

IntroduceProblem Analysis (Using “258” as example) //2 a b c //5 j k l //8 t u vPossible letter combinations: a, j, t (no further options, this is one combination)a, j, u (no further options, another combination)a, j, v (another c…

【问题解决】npm包下载速度慢

问题描述&#xff1a; npm包下载速度慢 问题原因&#xff1a; 为什么下载 npm 包速度慢&#xff1f; 在使用npm下包的时候&#xff0c;默认从国外的https://regitry.npmjs.org/服务器进行下载。此时&#xff0c;网络数据的传输需要经过漫长的海底光缆&#xff0c;因此下包速度…

Apache DolphinScheduler介绍与部署

目录 一、软件介绍 1、软件概述 2、发展历史 3、名词解释 4、模块介绍 软件部署 1、下载发布包 2、上传与解压 3、启动 4、浏览器验证 一、软件介绍 1、软件概述 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景&…

Selenium 启动的浏览器自动退出问题分析

当 Selenium 启动的浏览器自动关闭时&#xff0c;通常是由于以下原因导致的&#xff1a;1. 脚本执行完毕原因&#xff1a;Selenium 脚本执行到末尾时&#xff0c;如果没有保持浏览器打开的代码&#xff08;如time.sleep()或循环&#xff09;&#xff0c;浏览器会自动关闭。解决…

rust实现的快捷补全到剪贴板的实用工具

最近在兼职项目中老是遇到这样的场景&#xff1a; 在云服务器之间通过scp命令传输文件&#xff0c;密码太长记不住(客户服务器不方便ssh-copy-id)在服务器上使用mysql命令登录修改数据&#xff0c;数据库密码太长记不住&#xff08;客户设置的密码&#xff0c;直接改掉哈&#…

信息系统风险的安全技术防范思路

针对信息系统风险的安全技术防范思路 降低风险&#xff0c;即提升了安全能力和水平 保护资产 加强信息系统软硬件及数据安全保护&#xff1b;减少脆弱性 通过研发、部署、应用各环节来尽量减少或避免脆弱性&#xff1b;应对威胁 采取防御措施&#xff0c;实施攻防对抗。

Java项目:基于SSM框架实现的网盘管理系统【ssm+B/S架构+源码+数据库+毕业论文】

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此文件信息的管理…

Echart 地图放大缩小

文章目录 常用方法 1. **开启 `roam` 属性** 2. **通过鼠标滚轮或手势缩放** 3. **设置初始缩放比例** 4. **通过按钮控制缩放** 5. **限制缩放范围** 6. **监听缩放和平移事件** 7. **结合 `dataZoom` 实现数据缩放** 总结 相关文章 在 ECharts 中,可以通过设置地图的 roam …

针对VMware虚拟化环境迁移的复杂场景,我将从技术架构、迁移方案、代码实现、可视化流程四个维度进行专业解析,并提供完整的解决方案框架。

针对VMware虚拟化环境迁移的复杂场景&#xff0c;我将从技术架构、迁移方案、代码实现、可视化流程四个维度进行专业解析&#xff0c;并提供完整的解决方案框架。一、技术架构分析&#xff08;架构图表格对比&#xff09;graph TDA[源环境] -->|vMotion| B[目标环境]A -->…