交叉熵损失

交叉熵损失函数基本概念及公式 对于二分类问题,模型的输出通常是一个标量,表示样本属于正类的概率。因此,在二分类的交叉熵损失函数中,我们只需要考虑一个概率值,即模型预测为正类的概率。具体来说,当真实标签为1时,我们关注模型预测为正类的概率;当真实标签为0时,我们关注模型预测为负类的概率。因此,二分类的交叉熵损失函数可以表示为:其中,y 表示真实标签,取值为 0 或 1;p 表示模型预测为正类的概率。而对于多分类问题,模型的输出通常是一个向量,表示样本属于各个类别的概率。因此,在多分类的交叉熵损失函数中,我们需要考虑所有类别的概率。 阅读详情

1.背景

熵(Entropy): 熵是信息论中的一个基本概念,用于衡量一个随机变量的不确定性, 量化了随机变量的平均信息量。信息量的大小与事件发生的概率成反比:一个事件发生的概率越小,其携带的信息量越大;反之,一个事件发生的概率越大,其携带的信息量越小。
对于一个离散随机变量 X,其概率分布为 P(X),熵 H(X) 定义为: H ( X ) = − ∑ i P ( x i ) l o g P ( x i ) H(X)=-\sum_{i}^{}P(x_i)logP(x_i) H(X)=−∑i​P(xi​)logP(xi​).
其中, x i x_i xi​​ 是随机变量 X X X 的可能取值, P ( x i ​ ) P(x_i​) P(xi​​) 是 x i x_i xi​​ 出现的概率。
熵衡量了随机变量的不确定性。如果一个随机变量的取值非常不确定(例如,每个取值的概率都相等),那么熵会很大;如果一个随机变量的取值非常确定(例如,某个取值的概率接近1,其他取值的概率接近0),那么熵会很小。

  • 每个取值概率都相等: H ( x ) = − ∑ i = 1 n ( 1 n l o g ( 1 n ) ) = l o g n H(x)=-\sum_{i=1}^n(\frac{1}{n}log(\frac{1}{n}))=logn H(x)=−∑i=1n​(n1​log(n1​))=logn. 不确定性 n n n 越大, l o g ( n ) log(n) log(n) 越大
  • 某个取值的概率接近1,其他取值的概率接近0(不妨只让 x k x_k xk​ 接近1): H ( x ) = − ( P ( x k ) l o g P ( x k ) + ∑ i ≠ k P ( x i ) l o g P ( x i ) ) = − ( 1 l o g 1 + ∑ 0 l o g 0 ) = 0 H(x)=-(P(x_k)logP(x_k)+\sum_{i\ne k}P(x_i)logP(x_i))=-(1log1 + \sum0log0)=0 H(x)=−(P(xk​)logP(xk​)+∑i=k​P(xi​)logP(xi​))=−(1log1+∑0log0)=0.( x x x趋近0的速度比 l o g x logx logx趋近无穷的速度快很多)

2.交叉熵

交叉熵是衡量两个概率分布之间的差异的工具。假设我们有两个概率分布 P 和 Q,它们定义在同一个随机变量 X 上。
交叉熵 H(P,Q) 定义为: H ( P , Q ) = − ∑ i P ( x i ) l o g Q ( x i ) H(P,Q)=-\sum_{i}P(x_i)logQ(x_i) H(P,Q)=−∑i​P(xi​)logQ(xi​).
其中, P ( x i ​ ) P(x_i​) P(xi​​) 是真实分布的概率。 Q ( x i ​ ) Q(x_i​) Q(xi​​) 是模型预测的概率。
交叉熵衡量了用概率分布 Q 来表示真实分布 P 的平均信息量。如果 Q 和 P 完全一致,那么交叉熵等于 P 的熵;如果 Q 和 P 差异很大,那么交叉熵会比 P 的熵大得多。

3.推导

3.1 二分类问题

假设我们有一个二分类问题: 真实标签 y 只能取 0 或 1。模型预测的概率 y ^ \hat{y} y^​​ 表示样本属于类别 1 的概率。
真实分布 P P P 可以表示为:
p ( y ) = { 1   i f   y = 1 0   i f   y = 0 } p(y)=\begin{Bmatrix} 1 \space if \space y=1 \\ 0 \space if \space y=0 \end{Bmatrix} p(y)={1 if y=10 if y=0​}
模型预测的 Q 可以表示为:
Q ( y ) = { y ^   i f   y = 1 1 − y ^   i f   y = 0 } Q(y)=\begin{Bmatrix} \hat{y} \space if \space y=1 \\ 1-\hat{y} \space if \space y=0 \end{Bmatrix} Q(y)={y^​ if y=11−y^​ if y=0​}
交叉熵损失 L c e L_{ce} Lce​​ 可以写为: L c e = − ∑ y ∈ { 0 , 1 } P ( y ) l o g Q ( y ) L_{ce}=-\sum_{y\in\left \{ 0,1 \right \} }P(y)logQ(y) Lce​=−∑y∈{0,1}​P(y)logQ(y).
展开: L c e = − [ P ( y = 1 ) l o g ( y = 1 ) + P ( y = 0 ) l o g Q ( y = 0 ) ] = − [ y l o g ( y ^ ) + ( 1 − y ) l o g ( 1 − y ^ ) ] L_{ce}=-[P(y=1)log(y=1)+P(y=0)logQ(y=0)]=-[ylog(\hat{y})+(1-y)log(1-\hat{y})] Lce​=−[P(y=1)log(y=1)+P(y=0)logQ(y=0)]=−[ylog(y^​)+(1−y)log(1−y^​)]
这就是二分类问题中的交叉熵损失函数。

3.2 多分类问题

对于多分类问题,假设:真实标签 y 是一个 one-hot 编码向量,表示样本属于某个类别的概率分布。模型预测的概率 y ^ \hat y y^​ 是一个向量,表示样本属于每个类别的概率。
真实分布 P 和预测分布 Q 可以表示为: P ( y ) = [ y 1 , y 2 , ⋯   , y c ] P(y)=[y_1,y_2,\cdots,y_c] P(y)=[y1​,y2​,⋯,yc​], Q ( y ) = [ y ^ 1 , y ^ 2 , ⋯   , y ^ c ] Q(y)=[\hat y_1, \hat y_2, \cdots, \hat y_c] Q(y)=[y^​1​,y^​2​,⋯,y^​c​].
其中, C C C 是类别的总数, y i y_i yi​​ 是真实标签向量中的第 i i i 个元素, y i y_i yi​​ 是预测概率向量中的第 i i i 个元素。
交叉熵损失 L c e L_{ce} Lce​可以写为: L c e = − ∑ i = 1 c P ( y i ) l o g Q ( y i ) L_{ce}=-\sum_{i=1}^{c}P(y_i)logQ(y_i) Lce​=−∑i=1c​P(yi​)logQ(yi​).
展开: L c e = − ∑ i = 1 C y i l o g ( y i ^ ) L_{ce}=-\sum_{i=1}^Cy_ilog(\hat{y_i}) Lce​=−∑i=1C​yi​log(yi​^​). 当 C = 2 C=2 C=2, y i ∈ { 0 , 1 } y_i\in\{0,1\} yi​∈{0,1} 时, 就是二分类的交叉熵损失了.
这就是多分类问题中的交叉熵损失函数。

4.优势

  1. 对数似然的负值:最小化交叉熵损失等价于最大化对数似然,这是统计学中常用的优化目标。
  2. 对概率敏感:交叉熵损失使用对数函数,对概率值的变化非常敏感。如果模型对正确类别的预测概率非常低,交叉熵损失会变得非常大,从而对模型施加较大的惩罚。
  3. 非负性:交叉熵损失总是非负的,这使得它在优化过程中具有良好的性质。

5. 总结

交叉熵损失函数是从信息论中的交叉熵概念推导出来的。它衡量了模型预测的概率分布与真实标签的概率分布之间的差异。通过最小化交叉熵损失,模型可以学习到如何更好地预测每个类别的概率。

交叉熵损失和二元交叉熵损失 交叉熵损失和二元交叉熵损失的简单讨论 阅读详情

相关推荐

[TensorFlow] 交叉熵损失函数,加权交叉熵损失函数

写在前面 在文章[TensorFlow] argmax, softmax_cross_entropy_with_logits, sparse_softmax_cross_entropy_with_logits函数详解中,提到了交叉熵损失函数的计算方式以及tensorflow中的输入和输出等。本篇文章会更细地讲一下tensorflow中交叉熵损失函数的应用,以及在优化过程中可能用到加权交叉熵损失函数的使用方式。 一、基础计算 当存在多个类别时,通常使用交叉熵损失函数来衡量模型的效果,也是对模型调参的重要依据,

小太阳~ 1万+

交叉熵损失CrossEntropyLoss

这两种方法哪一个更好?

Gefangenes的博客 1万+

交叉熵损失和KL散度损失

交叉熵损失和KL散度损失是常用的衡量两个概率分布之间差异的方法,在神经网络训练中,常用如分类问题和生成模型中。例如,交叉熵常用于分类问题KL散度常用于变分自编码器(VAE)中来衡量近似后验分布和真实后验分布的差异。实际使用时经常忘记这两个概念,下面把这两个概念记录下来以提高记忆点。交叉熵用于直接计算真实分布和预测分布之间的差异。比如。

karmueo46的博客 1630

损失函数——交叉熵损失(Cross-entropy loss)

对于每个类别i,yi​表示真实标签x属于第i个类别的概率,y^​i​表示模型预测x属于第i个类别的概率。对于每个输入数据x,我们定义一个C维的向量y^​,其中y^​i​表示x属于第i个类别的概率。假设真实标签y是一个C维的向量,其中只有一个元素为1,其余元素为0,表示x属于第k个类别。该函数将输入数据视为模型输出的概率分布,将目标标签视为类别索引,并计算这些概率与实际标签之间的交叉熵损失。其中,xi​表示真实标签的第i个元素,y​i​表示模型预测x属于第i个类别的概率。清空梯度,计算模型输出和损失,使用。

weixin_50752408的博客 2万+

PMOS过压保护电路设计与仿真优化策略

本文深入探讨PMOS过压保护电路(OVP)的设计与仿真优化策略,详细解析PMOS管选型、稳压管特性及三极管配置等关键要素。通过Proteus仿真案例揭示典型设计误区,并提供响应速度提升、抗干扰设计等进阶优化方案,助力工程师实现高可靠性的电源保护系统设计。

weixin_42620340的博客 438

【亲测】ubuntu20.4 安装CUDA11.8

一步一步搭建C++ CUDA CUDNN TENSORRT OPENCV DNN ONNXRUNTIME推理环境

weixin_40950590的博客 3894

交叉熵损失(Cross-Entropy loss)

在处理机器学习或深度学习问题时,损失/成本函数用于在训练期间优化模型。目标几乎总是最小化损失函数。损失越低,模型越好。交叉熵损失是最重要的成本函数。它用于优化分类。对交叉熵的理解取决于对 Softmax 激活函数的理解。

斑驳的岁月 6523

TensorFlow_PyTorch实战:构建AI人工智能回归模型

回归分析是机器学习的核心任务之一,用于预测连续型目标变量(如房价、股票价格、用户留存时间等)。基础线性回归模型的数学原理与代码实现多项式回归模型的过拟合处理与正则化技巧自定义数据集加载与数据预处理流程动态图(PyTorch)与静态图(TensorFlow)的编程范式对比模型评估指标与可视化分析方法核心概念:对比两大框架的架构设计,解析回归模型核心组件数学原理:推导线性回归的假设函数、损失函数及优化算法算法实现:提供TensorFlow和PyTorch的完整代码示例项目实战。

AI天才研究院 1429

【交叉熵损失函数】关于交叉熵损失函数的一些理解

目录0. 前言1.损失函数(Loss Function)1.1 损失项1.2 正则化项2. 交叉熵损失函数2.1 softmax2.2 交叉熵 0. 前言 有段时间没写博客了,前段时间主要是在精读一些计算机视觉的论文(比如yolov1),以及学cs231n这门AI和计算机视觉领域的经典课程。我发现很多事情不能着急,质变需要量变的积累,违背事物发展的客观规律,往往适得其反。 今天在学习cs231n的时候看到了关于交叉熵损失函数的讲解,发现之前虽然经常用到这个损失函数,但却对里面的细节很模糊,学完之后更清晰了一

syh的技术记录 1万+

IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)

实现三分频电路最简单的是: 利用计数器实现。 时序图分析(本人比较懒,平常科研忙,所以直接手画时序图了,懒得用软件画了): 直接上图分析:利用计数器每隔三个周期信号翻转一次,同时在不同的计数下翻转得到的同步信号 clk_1和clk_2,再利用异或即可实现出一个不同占空比的三分频信号(同样的方法也可扩展到其他奇数分频设计中)。 例如占空比50%: module Div_three( input clk, input rst_n, output div_three ); reg

qq_41884662的博客 1万+

FPGA实现电机转速PID控制

通过纯RTL实现电机转速PID控制,包括电机编码器值读取,电机速度、正反转控制,PID算法,卡尔曼滤波,最终实现对电机速度进行控制,使其能够渐近设定的编码器目标值。

STATEABC的博客 7474

理解熵,交叉熵和交叉熵损失

交叉熵损失是深度学习中应用最广泛的损失函数之一,这个强大的损失函数是建立在交叉熵概念上的。当我开始使用这个损失函数时,我很难理解它背后的直觉。在google了不同材料后,我能够得到一个令人满意的理解,我想在这篇文章中分享它。 为了全面理解,我们需要按照以下顺序理解概念:自信息, 熵,交叉熵和交叉熵损失 自信息 "你对结果感到惊讶的程度" 一个低概率的结果与一个高概率的结果相比,低概率的结...

TensorFlowNews 3691

kali破解wifi之airmon-ng 工具利用

......

qq_42378173的博客 1万+

交叉熵损失函数

目录 一、交叉熵损失函数含义 二、交叉熵损失函数定义为:​ 三、交叉熵损失函数计算案例 一、交叉熵损失函数含义 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的。给定两个 概率分布p和q,通过q来表示p的交叉熵为 交叉熵刻画的是两个概率分布之间的距离, p代表正确答案, q代表的是预测值, 交叉熵越小,两个概率的分布约接近 二、交叉熵损失函数定义为: 其中: ????????为标签值, ????????′为预值测 三、交叉熵损失函数计算案例 假设

shazi4399的博客 3万+

图像去雾新思路:手把手教你复现DEA-Net中的“细节增强卷积”与PyTorch实现

本文详细解析了DEA-Net中的'细节增强卷积'(DEConv)与PyTorch实现,通过多分支差分卷积和重参数化技术,显著提升单图像去雾效果。文章从数学原理到代码实现,手把手指导复现这一创新架构,帮助开发者在保持轻量化的同时实现41dB以上的PSNR指标,适用于自动驾驶、遥感监测等关键领域。

weixin_30323631的博客 505

如何使用freesurfer对T1w结构像进行分区指标的提取?——皮层面积,灰质体积,平均厚度,厚度标准差,平均曲率、高斯曲率、曲率指数、折叠指数

如何使用freesurfer对T1w结构像进行分区指标的提取?——皮层面积,灰质体积,平均厚度,厚度标准差,平均曲率、高斯曲率、曲率指数、折叠指数

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 3787

交叉熵损失分析

交叉熵损失函数分析 分类任务是训练神经网络最常用的任务之一。对于分类任务来说,它的损失函数一般采用交叉熵损失函数。至于为什么这样做,本博客在此进行简单的分析。 平方损失函数 在分类任务上,类别往往属于离散的整形数据(integer)。最直观的想法就是直接使用平方损失函数:L=12∑i=1N(yi−ti)2L=\frac{1}{2}\sum_{i=1}^N(y_i-t_i)^2L=21​∑i=1N​...

南有乔木NTU的博客 1979

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

交叉熵损失和NLL损失的区别

交叉熵损失和NLL损失之间的区别 总结: 交叉熵 = NLL + SOFTMAX Layer NLL损失 torch.nn.NLLLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean') 常用于多分类(设为C类)问题,且可以对每个分类提供相应的权重,这对于非平衡数据集的处理非常有用。 输入的数据为一阶张量,数据为对数化的概率,并且nll损失需要一个softmax层,如果不想自己创建

Vicky111308的博客 4433

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

什么是交叉熵损失

交叉熵损失,权重优化,ikun

qq_45670407的博客 821

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

损失函数——交叉熵损失函数

交叉熵损失函数

YCCNUST的博客 7586

交叉熵损失函数详解

交叉熵损失函数 说到交叉熵损失函数(Cross Entropy Loss),就想到公式:L=−[ylogy^+(1−y)log(1−y^)]L=-[ylog \hat y + (1-y)log(1- \hat y)]L=−[ylogy^​+(1−y)log(1−y^​)] 大多数情况下,这个交叉熵函数直接拿来用即可,但是知其然还要知其所以然,关于它是怎么推导而来的,为什么它能表征真实样本标签和预测...

journey_fan的专栏 1万+

交叉熵损失与二元交叉熵损失:区别、联系及实现细节

在机器学习和深度学习中,交叉熵损失(Cross-Entropy Loss)和二元交叉熵损失(Binary Cross-Entropy Loss)是两种常用的损失函数,它们在分类任务中发挥着重要作用。本文将详细介绍这两种损失函数的区别和联系,并通过具体的代码示例来说明它们的实现细节。

qq_42754434的博客 3540
上一篇: 神经网络入门:从零实现异或(XOR)神经网络 (新手指南)
下一篇: 【OpenLayers 要素删除失败问题分析总结】
m0_57001872
博客等级 码龄6年 6粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值