机器学习之交叉熵
交叉熵(Cross-Entropy)是机器学习中用于衡量预测分布与真实分布之间差异的一种损失函数,特别是在分类任务中非常常见。它源于信息论,反映了两个概率分布之间的距离。

交叉熵的数学定义
对于分类任务,假设我们有:
- 一个真实的分布 y,用独热编码表示,例如 y=[0,1,0] 表示属于第二类。
- 一个预测的概率分布\hat{y},例如 \hat{y} = [0.1, 0.7, 0.2],表示模型预测属于各类的概率。
交叉熵的公式为:

其中:
- yi是真实分布中第 i 类的值(独热编码下只有一个为 1,其余为 0)。
- \hat{y}_i 是模型预测的第 i 类的概率。
由于 y 是独热编码,交叉熵可以简化为:

其中 c 是真实类别的索引。
交叉熵的直观理解
-
信息论解释:
- 交叉熵可以理解为用预测分布\hat{y} 去编码真实分布 y 的代价。
- 如果预测越接近真实分布(即预测概率\hat{y}_c 越接近 1),交叉熵越小,模型表现越好。
-
惩罚机制:
- 如果模型的预测概率 \hat{y}_c 很低(接近 0),交叉熵会给出很大的惩罚。
- 这促使模型更自信地预测正确类别。
交叉熵的应用场景
-
二分类问题: 对于二分类任务,真实标签 y∈{0,1},模型预测 \hat{y} \in [0, 1]。交叉熵损失为:

-
多分类问题: 对于 K 类分类任务,交叉熵损失为:

其中 y_k 表示第 k 类的真实标签,\hat{y}_k 表示模型对第 k 类的预测概率。
-
目标检测和语义分割: 交叉熵通常与其他损失(如 IoU、Dice Loss)结合使用,以处理多任务学习。
交叉熵的优点
- 数学性质优良:损失函数连续且可微,适合梯度下降优化。
- 自然适用于概率分布:直接用概率度量模型的预测质量。
- 对错误预测的敏感性:能有效惩罚错误分类,提高模型对分类任务的优化效果。
交叉熵的缺点
-
对预测不平衡的敏感性:
- 如果某些类别的样本数很少,模型可能忽视这些类别。
- 解决方法:可以结合加权交叉熵(Weighted Cross-Entropy)。
-
对异常值的敏感性:当预测概率非常接近 0 时,交叉熵的惩罚会非常大,可能导致数值不稳定。
交叉熵与其它损失的关系
-
与均方误差(MSE):
- MSE 更适合回归任务,而交叉熵适合分类任务。
- 对于分类任务,MSE 可能导致梯度消失,影响优化效果。
-
与 KL 散度:交叉熵是 KL 散度的一部分,衡量预测分布与真实分布的差异。
实现示例
二分类问题的交叉熵损失(Python + PyTorch)
import torch
import torch.nn as nn# 假设真实标签和预测概率
y_true = torch.tensor([1, 0, 1], dtype=torch.float32) # 真实标签
y_pred = torch.tensor([0.8, 0.2, 0.6], dtype=torch.float32) # 预测概率# 定义二分类交叉熵损失
loss_fn = nn.BCELoss()
loss = loss_fn(y_pred, y_true)
print(f"Binary Cross-Entropy Loss: {loss.item():.4f}")
多分类问题的交叉熵损失
# 假设真实标签和预测概率
y_true = torch.tensor([1, 0, 2]) # 真实标签(类别索引)
y_pred = torch.tensor([[0.3, 0.6, 0.1],[0.1, 0.2, 0.7],[0.8, 0.1, 0.1]]) # 预测概率# 定义多分类交叉熵损失
loss_fn = nn.CrossEntropyLoss()
loss = loss_fn(y_pred, y_true)
print(f"Multi-class Cross-Entropy Loss: {loss.item():.4f}")
交叉熵是分类任务中的核心损失函数之一,其优异的性质和强大的优化能力使其在机器学习的各个领域得到了广泛应用。
相关文章:
机器学习之交叉熵
交叉熵(Cross-Entropy)是机器学习中用于衡量预测分布与真实分布之间差异的一种损失函数,特别是在分类任务中非常常见。它源于信息论,反映了两个概率分布之间的距离。 交叉熵的数学定义 对于分类任务,假设我们有&#…...
数据结构 ——前缀树查词典的实现
数据结构 ——前缀树查词典的实现 一、前缀树的概念 前缀树是一种多叉树结构,主要用于存储字符串。每个节点代表一个字符,路径从根节点到叶节点表示一个完整的字符串。前缀树的关键特征是 共享前缀,也就是说,如果两个字符串有相…...
MySQL 主从复制与高可用架构
一、MySQL 主从复制概述 (一)定义与作用 MySQL 主从复制是一种允许在多个 MySQL 数据库服务器之间进行数据同步的技术。简单来说,就是可以把数据从一个 MySQL 服务器(主服务器、主节点)复制到一个或多个从节点&#…...
【Golang】如何读取并解析SQL文件
一、背景 在数据库开发与维护过程中,我们经常需要执行大量的SQL语句。有时,这些SQL语句会被保存在一个文件中,以便于批量执行。为了方便地在Go语言中处理这些SQL文件,我们可以编写一个函数来读取并解析SQL文件中的语句。 二、实…...
git branch -r(--remotes )显示你本地仓库知道的所有 远程分支 的列表
好的,git branch -r 这个命令用于列出远程分支。让我详细解释一下: 命令: git branch -rdgqdgqdeMac-mini ProductAuthentication % git branch -rorigin/main作用: 这个命令会显示你本地仓库知道的所有 远程分支 的列表。它不…...
Typescript安装
建议全局安装npm i -g typescript安装好之后,就可以直接使用 tsc 来编译 ts 文件了可通过 tsc 回车查看 tsc 的各项配置信息,通过 tsc --version 查看版本号。编译我们现在可以创建一个 ts 文件,并将他编译成 js 文件,比如下面简单…...
使用C#在目录层次结构中搜索文件以查找目标字符串
例程以递归方式搜索目录层次结构中的文件以查找目标字符串。它可以搜索几乎任何类型的文件,即使它不包含 Windows 理解的文本。例如,它可以搜索 DLL 和可执行文件以查看它们是否恰好包含字符串。 下面的代码中显示的ListFiles 方法完成了大部分工作。 …...
基于Redis实现令牌桶算法
基于Redis实现令牌桶算法 令牌桶算法算法流程图优点缺点 实现其它限流算法 令牌桶算法 令牌桶是一种用于分组交换和电信网络的算法。它可用于检查数据包形式的数据传输是否符合定义的带宽和突发性限制(流量不均匀或变化的衡量标准)。它还可以用作调度算…...
[Java] 使用 VSCode 来开发 Java
目录 前言Java 环境怎么看自己是否已经配置完成?安装 JDK安装 Maven 环境修改 Maven 依赖源 完善 VS Code配置插件配置 Maven配置 Maven Settings配置 Maven 可执行文件地址 前言 由于使用 VSCode 编码已经成为习惯,并且它确实相对其他的 IDE 较为轻量化…...
奇怪的知识又增加了,ESP32下的Lisp编程:ULisp--Lisp for microcontrollers
ESP32下有MicroPython,那么我就在想,有Lisp语言支持吗?答案是果然有!有ULisp,专门为MCU设计的Lisp! 网址:uLisp - Lisp for microcontrollers 介绍:用于微控制器的 Lisp 适用于 Ar…...
STM32标准库学习之寄存器方法点亮LED灯
STM32C8T6最小系统开发板,点亮PC13引脚的LED灯 1.使能PC13引脚的定时器 PC13引脚为GPIOC组的第13个端口,GPIO的时钟使能定时器为RCC_APB2ENR,这是可以从手册中得出的,如下图所示 从下图可以得出,若要使能GPIOC端口&a…...
Jenkins:持续集成与持续部署的利器
🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Jenkins 2、Jenkins的起源 二、Jenkins的核心…...
概率论得学习和整理30: 用EXCEL 描述泊松分布 poisson distribution
目录 1 泊松分布的基本内容 1.1 泊松分布的关键点 1.1.1 属于离散分布 1.1.2 泊松分布的特点:每个子区间内概率相等 , λ就是平均概率 1.2 核心参数 1.3 pmf公式 1.4 期望和方差 2 例1:用EXCEL计算泊松分布的概率 3 比较λ不同值时…...
汽车SoC芯片及其安全岛设计与未来发展趋势(学习笔记)
SoC系列已发布多篇文章,之前应该发布到4.3章节,后续还有包含常见汽车SoC,SoC评价指标,产业链及发展趋势等,均见已发布完整版本付费资源,链接如下: 汽车SoC芯片及其安全岛设计与未来发展趋势&am…...
【排序算法】——选择排序
前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小&#x…...
第十五章 Linux Shell 编程
15.1 Shell 变量 了解:Shell的功能 了解:Shell的种类 了解:Shell的调用 了解:Shell变量的概念 了解:Shell变量的定义 了解:Shell数组变量 了解:Shell内置变量 了解:双引号 和…...
【c++笔试强训】(第三十八篇)
目录 不相邻取数(动态规划-线性dp) 题目解析 讲解算法原理 编写代码 空调遥控(⼆分/滑动窗⼝) 题目解析 讲解算法原理 编写代码 不相邻取数(动态规划-线性dp) 题目解析 1.题目链接:不相…...
go 自己写序列化函数不转义
以map[int32]string转化为[]byte为例 背景:算法传给我一个map[int32]string类型的值(map的值本身是json转化成的string),我需要把这个值生成一个文件上传到OSS,但是发现通过url下载下来的文件里面有转义字符。 原因&a…...
一般行业安全管理人员考试题库分享
1.在高速运转的机械飞轮外部安装防护罩,属于(B)安全技术措施。 A.限制能量 B.隔离 C.故障设计 D.设置薄弱环节 2.生产经营单位的(B)是本单位安全生产的第一责任人,对落实本单位安全生产主体责任全面负责,具体履行安全生产管理职责。 A.全员 B…...
Marketo REST API 批量修改邮件内容
以下是更加细化的 使用 Marketo REST API 批量修改邮件内容 的步骤,详细解释每个阶段的操作,包括 API 的请求、数据处理及潜在问题解决。 前期准备工作 确保 Marketo API 访问权限 你需要 Marketo REST API 用户 和 API Role,有权限访问邮件资…...
Antigravity Skills 全局安装与配置指南
1. 核心概念在 Antigravity 中,技能系统分为两层:Skills (全局库):实际的代码、脚本和指南,存储在系统级目录(如 ~/.gemini/antigravity/skills)。它们是“能力”的本体。Workflows (项目级):存…...
关于sms,voip路由以及smpp
SMS 和 VoIP 路由是国际通讯行业核心技术,用于高效传递短信和语音通话。SMPP 协议则是 SMS 传输的关键标准,帮助运营商和企业实现全球消息互联。SMS 基础知识SMS(Short Message Service,短消息服务)是手机最常见的文本…...
Omni-Vision Sanctuary 在 Proteus 仿真中的应用:智能电路设计与调试助手
Omni-Vision Sanctuary 在 Proteus 仿真中的应用:智能电路设计与调试助手 1. 电子工程师的新助手 作为一名电子工程师,你是否经历过这样的场景:面对一个功能需求,花了大量时间查阅资料却找不到合适的电路方案;仿真波…...
VASP表面建模进阶:利用现代脚本工具实现Slab模型原子选择性固定(POSCAR高效处理)
1. 为什么需要自动化处理POSCAR文件 在计算材料学领域,VASP作为第一性原理计算的黄金标准工具,其输入文件POSCAR的准确性直接决定了计算结果的可靠性。传统手动处理方式存在几个致命缺陷:首先,用Excel手工标记原子固定状态极易出错…...
2026CIOE中国光博会观众报名通道正式开启!光电全产业链盛会蓄势待发
覆盖光电全产业链的综合型展会——第二十七届中国国际光电博览会(CIOE中国光博会)将于2026年9月9-11日在深圳国际会展中心举办。现报名通道已全面开启,即刻登记成功可获取CIOE2025全套会刊!点击阅读原文即刻登记参观!本…...
JNI内存泄漏吞噬GPU显存,Java AI服务OOM频发,一线工程师紧急封堵的4类隐蔽陷阱
第一章:Java AI 推理调试Java 在 AI 推理场景中常通过 ONNX Runtime、Deep Java Library(DJL)或 TensorFlow Java API 集成模型。调试过程需聚焦于输入张量形状匹配、数据类型一致性、设备绑定状态及推理结果可信度验证。启用详细日志输出 DJ…...
告别重复造轮子:用快马AI一键生成Unity高效开发工具与通用模块
告别重复造轮子:用快马AI一键生成Unity高效开发工具与通用模块 在Unity游戏开发过程中,UI管理系统是最基础也最常被重复开发的模块之一。每次新项目都要从头搭建UI框架,不仅浪费时间,还容易引入不一致的设计模式。最近我在InsCod…...
MPU9250 I²C驱动库深度解析与嵌入式工程实践
1. MPU9250 IC驱动库技术解析与工程实践指南 MPU9250是InvenSense(现为TDK子公司)推出的高性能9轴运动传感器,集成3轴陀螺仪、3轴加速度计和3轴磁力计,广泛应用于无人机姿态解算、可穿戴设备运动追踪、机器人SLAM前端感知等嵌入式…...
颠覆式风扇调控:基于FanControl的智能散热解决方案
颠覆式风扇调控:基于FanControl的智能散热解决方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...
革新性STL文件管理工具:让3D模型预览效率提升80%的Windows解决方案
革新性STL文件管理工具:让3D模型预览效率提升80%的Windows解决方案 【免费下载链接】STL-thumbnail Shellextension for Windows File Explorer to show STL thumbnails 项目地址: https://gitcode.com/gh_mirrors/st/STL-thumbnail 问题发现:3D设…...
