什么是交叉熵

交叉熵(Cross-Entropy) 交叉熵(Cross-Entropy) 交叉熵是一个在ML领域经常会被提到的名词。在这篇文章里将对这个概念进行详细的分析。 1.什么是信息量? 假设XX是一个离散型随机变量,其取值集合为X\mathcal{X},概率分布函数为p(x)=Pr(X=x),x∈Xp(x)=Pr(X=x),x∈\mathcal{X},我们定义事件X=x0X=x_0的信息量为: I(x0)=−log(p(x0))I( 阅读详情
作者:CyberRep
链接:https://www.zhihu.com/question/41252833/answer/195901726
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

讨论这个问题需要从香农的信息熵开始。信息熵。熵是热力学中的概念,是一种测量在动力学方面不能做功的能量总数,也就是当总体熵的增加,其做功能力也下降,熵的量度正是能量退化的指标——维基百科。香农将“熵”的概念引入到了信息论中,故在信息论中被称为信息熵,它是对不确定性的测量,熵越高,不确定性越大,熵越低,不确定性越低。

小明在学校玩王者荣耀被发现了,爸爸被叫去开家长会,心里悲屈的很,就想法子惩罚小明。到家后,爸爸跟小明说:既然你犯错了,就要接受惩罚,但惩罚的程度就看你聪不聪明了。这样吧,我们俩玩猜球游戏,我拿一个球,你猜球的颜色,你每猜一次,不管对错,你就一个星期不能玩王者荣耀,当然,猜对,游戏停止,否则继续猜。当然,当答案只剩下两种选择时,此次猜测结束后,无论猜对猜错都能100%确定答案,无需再猜一次,此时游戏停止(因为好多人对策略1的结果有疑问,所以请注意这个条件)。


题目1:爸爸拿来一个箱子,跟小明说:里面有橙、紫、蓝及青四种颜色的小球任意个,各颜色小球的占比不清楚,现在我从中拿出一个小球,你猜我手中的小球是什么颜色?

为了使被罚时间最短,小明发挥出最强王者的智商,瞬间就想到了以最小的代价猜出答案,简称策略1,小明的想法是这样的。

在这种情况下,小明什么信息都不知道,只能认为四种颜色的小球出现的概率是一样的。所以,根据策略1,1/4概率是橙色球,小明需要猜两次,1/4是紫色球,小明需要猜两次,其余的小球类似,所以小明预期的猜球次数为:

H = 1/4 * 2 + 1/4 * 2 + 1/4 * 2 + 1/4 * 2 = 2


题目2:爸爸还是拿来一个箱子,跟小明说:箱子里面有小球任意个,但其中1/2是橙色球,1/4是紫色球,1/8是蓝色球及1/8是青色球。我从中拿出一个球,你猜我手中的球是什么颜色的?

小明毕竟是最强王者,仍然很快得想到了答案,简称策略2,他的答案是这样的。

在这种情况下,小明知道了每种颜色小球的比例,比如橙色占比二分之一,如果我猜橙色,很有可能第一次就猜中了。所以,根据策略2,1/2的概率是橙色球,小明需要猜一次,1/4的概率是紫色球,小明需要猜两次,1/8的概率是蓝色球,小明需要猜三次,1/8的概率是青色球,小明需要猜三次,所以小明预期的猜题次数为:

H = 1/2 * 1 + 1/4 * 2 + 1/8 * 3 + 1/8 * 3= 1.75


题目3:其实,爸爸只想让小明意识到自己的错误,并不是真的想罚他,所以拿来一个箱子,跟小明说:里面的球都是橙色,现在我从中拿出一个,你猜我手中的球是什么颜色?

最强王者怎么可能不知道,肯定是橙色,小明需要猜0次。


上面三个题目表现出这样一种现象:针对特定概率为p的小球,需要猜球的次数 = \log_2 \frac{1}{p} ,例如题目2中,1/4是紫色球,\log_2 4 = 2 次,1/8是蓝色球,\log_2 8 = 3次。那么,针对整个整体,预期的猜题次数为:\sum_{k=1}^N p_k \log_2 \frac{1}{p_k} ,这就是信息熵,上面三个题目的预期猜球次数都是由这个公式计算而来,第一题的信息熵为2,第二题的信息熵为1.75,最三题的信息熵为1 *\log 1 = 0 。那么信息熵代表着什么含义呢?

信息熵代表的是随机变量或整个系统的不确定性,熵越大,随机变量或系统的不确定性就越大。上面题目1的熵 > 题目2的熵 > 题目3的熵。在题目1中,小明对整个系统一无所知,只能假设所有的情况出现的概率都是均等的,此时的熵是最大的。题目2中,小明知道了橙色小球出现的概率是1/2及其他小球各自出现的概率,说明小明对这个系统有一定的了解,所以系统的不确定性自然会降低,所以熵小于2。题目3中,小明已经知道箱子中肯定是橙色球,爸爸手中的球肯定是橙色的,因而整个系统的不确定性为0,也就是熵为0。所以,在什么都不知道的情况下,熵会最大,针对上面的题目1~~题目3,这个最大值是2,除此之外,其余的任何一种情况,熵都会比2小。

所以,每一个系统都会有一个真实的概率分布,也叫真实分布,题目1的真实分布为(1/4,1/4,1/4,1/4),题目2的真实分布为(1/2,1/4,1/8,1/8),而根据真实分布,我们能够找到一个最优策略,以最小的代价消除系统的不确定性,而这个代价大小就是信息熵,记住,信息熵衡量了系统的不确定性,而我们要消除这个不确定性,所要付出的【最小努力】(猜题次数、编码长度等)的大小就是信息熵。具体来讲,题目1只需要猜两次就能确定任何一个小球的颜色,题目2只需要猜测1.75次就能确定任何一个小球的颜色。

现在回到题目2,假设小明只是钻石段位而已,智商没王者那么高,他使用了策略1,即

爸爸已经告诉小明这些小球的真实分布是(1/2,1/4, 1/8,1/8),但小明所选择的策略却认为所有的小球出现的概率相同,相当于忽略了爸爸告诉小明关于箱子中各小球的真实分布,而仍旧认为所有小球出现的概率是一样的,认为小球的分布为(1/4,1/4,1/4,1/4),这个分布就是非真实分布。此时,小明猜中任何一种颜色的小球都需要猜两次,即1/2 * 2 + 1/4 * 2 + 1/8 * 2 + 1/8 * 2 = 2。

很明显,针对题目2,使用策略1是一个坏的选择,因为需要猜题的次数增加了,从1.75变成了2,小明少玩了1.75的王者荣耀呢。因此,当我们知道根据系统的真实分布制定最优策略去消除系统的不确定性时,我们所付出的努力是最小的,但并不是每个人都和最强王者一样聪明,我们也许会使用其他的策略(非真实分布)去消除系统的不确定性,就好比如我将策略1用于题目2(原来这就是我在白银的原因),那么,当我们使用非最优策略消除系统的不确定性,所需要付出的努力的大小我们该如何去衡量呢?

这就需要引入交叉熵,其用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。

正式的讲,交叉熵的公式为: \sum_{k=1}^N p_k \log_2 \frac{1}{q_k} ,其中p_k 表示真实分布, q_k 表示非真实分布。例如上面所讲的将策略1用于题目2,真实分布p_k = (\frac {1}{2},\frac {1}{4},\frac {1}{8},\frac {1}{8}) , 非真实分布q_k = (\frac {1}{4},\frac {1}{4},\frac {1}{4},\frac {1}{4}) ,交叉熵为\frac{1}{2} * \log_2 4 + \frac{1}{4} * \log_2 4 + \frac{1}{8} * \log_2 4 + \frac{1}{8} * \log_2 4 = 2 ,比最优策略的1.75来得大。

因此,交叉熵越低,这个策略就越好,最低的交叉熵也就是使用了真实分布所计算出来的信息熵,因为此时 p_k = q_k ,交叉熵 = 信息熵。这也是为什么在机器学习中的分类算法中,我们总是最小化交叉熵,因为交叉熵越低,就证明由算法所产生的策略最接近最优策略,也间接证明我们算法所算出的非真实分布越接近真实分布。


最后,我们如何去衡量不同策略之间的差异呢?这就需要用到相对熵,其用来衡量两个取值为正的函数或概率分布之间的差异,即:

KL(f(x) || g(x)) = \sum_{ x \in X} f(x) * \log_2 \frac{f(x)}{g(x)}

现在,假设我们想知道某个策略和最优策略之间的差异,我们就可以用相对熵来衡量这两者之间的差异。即,相对熵 = 某个策略的交叉熵 - 信息熵(根据系统真实分布计算而得的信息熵,为最优策略),公式如下:

KL(p || q) = H(p,q) - H(p) = \sum_{k=1}^N p_k \log_2 \frac{1}{q_k} - \sum_{k=1}^N p_k \log_2 \frac{1}{p_k} = \sum_{k=1}^N p_k \log_2 \frac{p_k}{q_k}

所以将策略1用于题目2,所产生的相对熵为2 - 1.75 = 0.25.

机器学习----交叉熵(Cross Entropy)如何做损失函数 损失函数是指一种将一个事件(在一个样本空间中的一个元素)映射到一个表达与其事件相关的经济成本或机会成本的实数上的一种函数。信息熵的值越小,表示系统的不确定性越低。例如,在机器学习中,相对熵常用于比较真实数据的分布和模型预测的分布之间的差异,以评估模型的性能。它可以用于评估两个模型或概率分布的相似性,比较数据分布的差异,以及在熵最小化的框架下进行优化等。对于回归问题,均方差的损失函数的导数是局部单调的,可以找到最优解。上面说的都是一个样本的时候,多个样本的表达式是:多个样本的概率即联合概率,等于每个的乘积。 阅读详情

相关推荐

交叉熵损失函数基本概念及公式

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

qlkaicx的博客 1万+

交叉熵损失函数(Cross-Entropy Loss)

交叉熵损失函数是深度学习中分类问题常用的损失函数,特别适用于多分类问题。它通过度量预测分布与真实分布之间的差异,来衡量模型输出的准确性。中,softmax 和交叉熵是结合在一起实现的,因此你不需要手动调用 softmax。用于度量预测分布与真实分布之间的差异,是分类问题中的核心工具。结合 softmax,用来计算预测分布与真实分布之间的差异。结合了 softmax 和交叉熵计算,使用简单且高效。模型通常输出logits(未归一化的分数),例如。4、示例:在神经网络中的应用。在 PyTorch 的。

qq_39437730的博客 4万+

交叉熵损失和二元交叉熵损失

交叉熵损失和二元交叉熵损失的简单讨论

飞机火车巴雷特的博客 3万+

交叉熵简述

交叉熵是什么

mefocus的博客 3978

交叉熵cross entropy

在统计学中,损失函数是一种衡量损失和错误程度的函数.建设某样本的实际输出为a,而预计的输出为y,则y和a之间可能会不一样,存在偏差,深度学习的目的就是通过不断地训练迭代,使得a越来越接近y,即,而训练的本质就是寻找损失函数最小值的过程. 常见的损失函数有两种,一种是均方差函数,另一种是交叉熵函数,对于深度学习而言,交叉熵函数要优于均方差函数,原因在于交叉熵函数配合输出层的激活函数如...

shuijinghua的博客 3787

【Python・统计学】(两)多因素方差分析(原理及代码)

自学笔记,分享给对统计学原理不太清楚但需要在论文中用到的小伙伴,欢迎大佬们补充或绕道。ps:本文不涉及公式讲解(文科生小白友好体质)~(部分定义等来源于知乎) 本文重点:多因素方差分析 【1.多因素方差分析简单原理】 【2.多因素方差分析步骤】 【3.多因素方差分析代码】

TUTO_TUTO的博客 4864

交叉熵

  一.什么是交叉熵 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的。给定两个概率分布p和q,通过q来表示p的交叉熵为:      注意,交叉熵刻画的是两个概率分布之间的距离,或可以说它刻画的是通过概率分布q来表达概率分布p的困难程度,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布约接近。      那么,在神经网络中怎样把前向传播得到的结果也变成概率分布呢?...

Meiko记录 1万+

手动安装SeuratData包中pbmc3k数据集的详细步骤与避坑指南

本文提供了手动安装SeuratData包中pbmc3k数据集的详细步骤与避坑指南。针对国内用户网络不稳定导致自动下载失败的问题,文章核心介绍了如何从错误信息中获取下载链接,使用浏览器或下载工具完成手动下载,并通过指定本地文件路径和参数在R中成功安装。该方法同样适用于SeuratData包中的其他数据集,是单细胞分析入门的必备生存技能。

weixin_29054399的博客 183

二分类交叉熵以及加权交叉熵

对于单个样本,二分类交叉熵损失的公式为:BCE=−[ylog⁡(p)+(1−y)log⁡(1−p)] \text{BCE} = - \left[ y \log(p) + (1 - y) \log(1 - p) \right] BCE=−[ylog(p)+(1−y)log(1−p)]在机器学习中,预测概率 ppp 通常通过 sigmoid 函数计算得出:p=σ(z)=11+e−z p = \sigma(z) = \frac{1}{1 + e^{-z}} p=σ(z)=1+e−z1​我们的目标是计算损失函数 B

Jerry的博客 3194

3D视觉入门必看:深度图、点云图、IR图、RGB图像到底有什么区别?

本文深入解析了3D视觉中深度图、点云图、IR图与RGB图像的核心区别。深度图记录像素距离,是连接2D与3D的桥梁;点云图是显式的三维坐标集合;IR图感知红外光强度;RGB图像则提供颜色纹理。理解其信息维度和应用场景,是进行机器人导航、三维重建等任务的基础。

year5的博客 342

LeGO-LOAM运行kitti数据集

文章目录1. kitti-lego-loam2. 改动3. 实验结果4. evo轨迹测评 1. kitti-lego-loam 链接:kitti-lego-loam kitti-lego-loam提供了将kitti序列转化成rosbag的代码,在kittibag中. 需要注意下数据文件的存放顺序,以00序列为例: datafolder          |____results          &

Zlp19970106的博客 8703

交叉熵简介

交叉熵(Cross Entropy)是用来衡量两个概率分布之间的差异性的一种方法。在机器学习和深度学习中,交叉熵常常被用作损失函数,用来衡量模型预测的结果与真实结果之间的差距。Hpq−i1∑n​pi​logqi​其中,pi​表示真实分布中第i个事件发生的概率,qi​表示模型预测分布中第i个事件发生的概率。交叉熵越小,表示模型预测的结果与真实结果越接近,反之则越不接近。因此,在机器学习中,我们通常将交叉熵作为损失函数,用来指导模型的优化。

m0_57236802的博客 6395

uni-app - 实现全屏自适应且不变形背景大图,设置一张图片占满全屏(根据手机或电脑尺寸自动拉伸背景图像),用于页面是一张平铺的大图做背景的情况,全端兼容

uni-app,vue.js,微信小程序-设置背景图自适应手机屏幕尺寸,页面中的背景图片高度和宽度自适应,UNI-APP里如何设置背景图自适应手机屏幕尺寸,如何实现一个图片铺满整个页面,并且可以根据用户机型进行自动修正,自适应背景大图片官方教程,一个页面如何将图像放到背景上,纯CSS实现,设置背景图片占满全屏,3种CSS实现背景图片全屏铺满自适应的方式,uni-app中如何让图片不带高度的自适应,兼容uni-app全端,支持【纯】微信小程序项目使用,uni-app-实现全屏自适应且不变形背景大图

🏆 前端领域优质创作者 1万+

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

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

TensorFlowNews 3691

YOLOv11改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法: 1️⃣ 加入。添加后如下:2️⃣:加入基于的。利用改进模块,减少通道冗余。改进代码如下:首先添加如下代码让加入,并重命名为 再添加如

Limiiiing的博客 3873

27、单阶段目标检测算法(SSD):原理、训练与实战

本文详细介绍了单阶段目标检测算法SSD的原理、训练方法与实战应用。内容涵盖SSD的核心机制,如特征图离散化、边界框预测、损失函数设计及难负样本挖掘,并通过使用dlib车辆数据集从零开始训练SSD模型的完整流程展示了实际操作步骤。文章还讨论了训练中的关键问题,如边界框坐标处理和‘忽略区域’缺失的影响,提供了模型评估与优化策略,包括超参数调整、基础网络替换和数据增强。最后总结了SSD的优势与局限性,并展望了未来目标检测技术的发展方向。

nice1的博客 505

交叉熵与交叉熵损失

原文出处:https://blog.youkuaiyun.com/rtygbwwwerr/article/details/50778098 红字部分为读完这篇博文之后我的一些理解。   交叉熵(Cross-Entropy) 交叉熵是一个在ML领域经常会被提到的名词。在这篇文章里将对这个概念进行详细的分析。 1.什么是信息量? 假设是一个离散型随机变量,其取值集合为,概率分布函数为,我们定义事件的信...

ZT0518的博客 1844

Nature、science、cell旗下刊物

Nature\science\cell子刊说明

计算机视觉 5604

必能读懂的 交叉熵详解,pytorch中交叉熵的使用

目录 1. 交叉熵详解 1.1信息量 1.2 熵 1.3 相对熵(KL散度) 1.4交叉熵 1.5 小结 2. 交叉熵的应用(pytorch中) 2.1交叉熵在分类任务中的计算过程 2.2 log_softmax()函数 2.3nll_loss()函数 2.4cross_entropy()函数 2.5 函数的其他调用方式 1. 交叉熵详解 1.1...

Defiler_Lee的博客 2800

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

交叉熵的计算

在学习孪生神经网络的时候,讲到Loss计算的时候,看到了一个概念——交叉熵,查了有关资料之后,觉得得到了答案,所以跟大家分享一下。我先附一下我看到的交叉熵是用在哪的。 对于孪生神经网络而言,其具有两个输入: 当两个输入指向同一个类型的图片时,此时标签为1。 当两个输入指向不同类型的图片时,此时标签为0。 然后将网络的输出结果和真实标签进行交叉熵运算,就可以作为最终的loss了。 当我们输入如下两个相似图片甚至同一图片的时候,我们希望网络的输出为1。 我们会将预测结果和1求交叉熵。 当我们输入两个不相似图片的

weixin_46196863的博客 3797

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

带权重的交叉熵_理解熵,交叉熵和交叉熵损失

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

weixin_42498989的博客 1800

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

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

Pytorch中的交叉熵:通过验证代码学习交叉熵

首先,  输入torch 头文件。下面, 定义两个样本对应的网络输出。分别对应三个类别中的第1,2 两个类别。交叉熵是在用于分类网络常用到的损失函数。¡¿¡¿下面根据网络上的这篇博文, 通过代码对比给出它内部具体的计算公式。下面定义了 softmax, 对数softmax以及获得平均交叉熵的软件定义。下面分别给出 Torch内的 交叉熵以及自定义交叉熵在给定的样例上计算的结果。下面给出了网络输出以及分类类别两个张量。下面计算带有权重的交叉熵。2、带有平滑和权重的交叉熵。1、带有平滑的交叉熵。

TSINGHUAJOKING 1090
上一篇: 机器学习helloworld(实例)
下一篇: Springcloud结合zookeeper配置中心
yyoc97
博客等级 码龄12年 272粉丝 91原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值