一文懂交叉熵Cross-Entropy

        本文翻译自https://naokishibuya.medium.com/demystifying-cross-entropy-e80e3ad54a8

        交叉熵由交叉(Cross)和熵(Entropy)两部分组成,在机器学习中常常被定义为损失函数的目标。在二分类任务中,更有二分类交叉熵作为训练目标函数。

一、熵的表达式

        在前文一文懂熵Entropy_liveshow021_jxb的博客-CSDN博客中,指出熵的数学表达式为

Entropy=-\sum_{i}^{}P(i)logP(i)

        上述表达式是离散的变量i。对于连续变量,可以写成积分的形式

Entropy=-\int P(x)logP(x)dx 

        上式中,x表示连续变量,P(x)表示概率密度函数。

        在上面两者计算表达式中,都是负对数概率的期望平均值。所以,也可以用期望来表示

Entropy=\mathbb{E}_{x{\sim}P}[-logP(x)]

        x~P表示离散或者连续变量x用概率分布P来计算期望。记H(P)为熵,则最终可以表示为

H(P)=\mathbb{E}_{x{\sim}P}[-logP(x)]

        简言之,熵表示遵循特定概率分布事件的理论最小平均编码长度。

        可以看出,知道概率分布,就能计算熵。反之,不知道概率分布,则不能计算熵。为了求熵,就需要先估计概率分布。这种情况下,熵也是估计熵了。

二、估计熵

        回到前文一文懂熵Entropy_liveshow021_jxb的博客-CSDN博客中的例子,向纽约发送东京的天气,并且希望将消息编码为尽可能短的长度。在真实事件发生前,是没办法知道各种天气的发生概率的。假设,经过一段时间的观察,将东京天气的概率分布估计为Q,此时估计的熵为

EstimatedEntropy=\mathbb{E}_{x{\sim}Q}[-logQ(x)]

        如果估计的概率分布Q接近真实的概率分布,则上式能给出最小编码长度,即真实的熵。但是估计的概率分布很可能与真实的概率分布差的很远。此时既影响了期望,也影响了编辑长度logQ(x)的计算。最后的估计熵与真实熵就差的很远了。

        为了让编码长度尽可能的小,用真实概率分布P和基于估计概率Q的编码大小来计算平均编码长度。这种计算方式就称为PQ之间的交叉熵。

CrossEntropy=\mathbb{E}_{x{\sim}P}[-logQ(x)]

Entropy=\mathbb{E}_{x{\sim}P}[-logP(x)]

        所以,交叉熵比较了实际使用的编码大小和理论最小编码,即交叉验证编码大小。

三、交叉熵>=熵

        记H(P,Q)为交叉熵,则最终可以表示为

H(P,Q)=\mathbb{E}_{x{\sim}P}[-logQ(x)]     

        注意上式中的PQ位置不能互换,因为是用真实概率分布算期望,估计概率分布算编码大小。

        如果估计概率分布Q是精确的,即Q=P,此时

H(P,Q)=H(P)

        估计概率分布Q是非精确时,

H(P,Q)> H(P)

四、交叉熵作为损失函数

        现在有一个动物图像的数据集,里面有5种不同的动物,每张图片中都只有一个动物。

Source: https://www.freeimages.com/

        每张图片用one-hot编码到相应的动物,如下所示

        这种one-hot编码也可以看成每张图片在5种动物上的概率分布。比如第一张图片在“狗”这个种类上的概率为1,在其他种类上的概率为0。

        每张图片的分类都知道了,此时的熵都是0。

        one-hot编码能100%的表明每张图片中是什么动物种类。不会说第一张图片90%是狗,10%是猫。现在有一个机器学习模型要对这些图片进行分类。当这个模型没有被充分训练时,可能会将第一张图片分类如下

        模型将这张图片40%判定为狗,30%判定为狐狸,5%判定为马,5%判定为鹰,20%判定为松鼠。这种估计对于第一张图片上的动物是什么种类没有给出高置信度。那么在这种估计下的交叉熵为

        这远远大于标签下的熵为0的情况。假设模型进行了改良,此时对第一张图片的分类概率如下

        此时,交叉熵为

        可以看到,交叉熵随着分类准确性的提升,会变小。当分类100%准确时,交叉熵也会等于0。所以,交叉熵是可以作为损失函数来训练分类模型的。

五、二分类的交叉熵

        当遇到二分类问题时,就可以用二分类的交叉熵作为损失函数了。例如上面的例子中,假设图片上的动物只有两类:猫和狗。此时,交叉熵表示如下:

        使用如下等式做进一步替换

        则

        令如下关系

        此时,二分类交叉熵就可以表示为

BinaryCrossEntropy=-Plog\hat{P}-(1-P)log(1-\hat{P})

        这个表达式就是在各种文献中常常看到的了。

六、2为底还是自然数e为底

        在机器学习中,常常使用自然数e为底,来替代使用2为底,这样便于计算导数。因为

{ln(x)}'=\frac{1}{x}

        对数底的变化不会引起任何问题,因为这只是改变了个常数。

log_{2}x=\frac{log_{e}x}{log_{e}2}

        例如,使用交叉熵作为分类的损失函数仍然是成立的,因为训练时只需要往目标越来越小的方向迭代就可以。

        作为概念,以自然数e为底的信息单位是奈特nat,以2为底的信息单位是比特bit。1nat中的信息量为按1/e概率发生的事件。

1bit=-log_2\frac{1}{2}

1nat=-log\frac{1}{e}=1.44bits

        1bit的信息量来自发生概率为1/2的事件。当把信息编码为1bit时,一条信息能减少50%的不确定性。比如收到新来报道的同学是男同学(假设男女的概率各为1/2),则从全部人口中减少了一半人,只需要从剩下的一半人中确认是哪个同学了。但以e为对数底时,不太好解释。

        综合上述,以2为对数底用来解释信息熵的概念,以e为对数底用来做数值计算。

        自此,把交叉熵彻底理解清楚了。交叉熵这个概念对你的熵就是0了。

参考

https://naokishibuya.medium.com/demystifying-cross-entropy-e80e3ad54a8

https://zhuanlan.zhihu.com/p/149186719 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT学习笔记(智能家居物联网项目实验2)

物联网项目综合测试 打开 4/01_smarthome/01_smarthome/01_smarthome.pro 项目,此项目为智能家居物联网 UI 界面控制端。 打开 4/01_smarthome/esp8266/esp8266.pro 项目,此项目设备端(被控端)。 打开上面两个项目如下。 项…

ToBeWritten之MOST协议、Flex Rat总线、车载以太网

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…

C/C++每日一练(20230402)

目录 1. 找最大数和最小数 ※ 2. 数组排序 ※ 3. 按要求完成数据的输入输出 ※ 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 标注 ※ 为入门基础题,今天什么好日子CSDN…

一个有完整业务连的淘宝API接口

支持的业务类型 1、卖家平台(包括淘宝网,天猫等):搜索、店铺信息维护、交易订单处理、发货管理、数据查询与统计分析。 2、买家平台(包括淘宝,天猫等):搜索,发布信息&a…

银行数字化转型导师坚鹏:金融科技如何赋能银行数字化转型

金融科技如何赋能银行数字化转型课程背景: 数字化背景下,很多银行存在以下问题: 不清楚5G如何赋能银行数字化转型? 不清楚金融科技如何赋能银行数字化转型? 不了解银行数字化转型标杆成功案例? 课程特色…

旅游市场迎来“开门红”,VR云游带来全新体验

旅游业是一个充满活力和吸引力的行业,可以促进当地经济发展和提高生活水平。在清明时节,春暖花开,各地旅游市场正在回暖,而各大景区也纷纷推出了优惠措施,吸引大批的游客前来游玩,旅游市场迎来了“开门红”…

ServletAPI的使用

目录 一、HttpServlet 1.1 HttpServlet的核心方法 1.2 Servlet的生命周期 1.3 代码示例:通过postman来发送请求 1.4 代码示例:通过ajax来发送请求 二、HttpServletRequest 2.1 代码示例:打印请求信息: 2.2 代码示例&#…

强化学习——初探强化学习

本文引自:《 动手学强化学习 》 第 1 章 初探强化学习 1.1 简介 亲爱的读者,欢迎来到强化学习的世界。初探强化学习,你是否充满了好奇和期待呢?我们想说,首先感谢你的选择,学习本书不仅能够帮助你理解强…

COI实验室技能:python控制相机的方法——采集、处理、显示、实时

COI实验室技能:python控制相机的方法——采集、处理、显示、实时本文介绍如何利用python控制办公摄像头、工业相机和科研相机。将数据采集和处理统一到python代码中。   主要围绕解决采用什么库、掌握这个库的控制相机方法(参数配置、读取数据等等)、结合自己的算…

Go 反射

目录 什么是反射 反射的弊端 reflect 包 Go 提供的反射方法 type Type 类型 type Kind 类型 TypeOf ValueOf 什么是反射 ​反射(reflection)是在 Java 出现后迅速流行起来的一种概念,通过反射可以获取丰富的类型信息,并可…

实战!项目管理实施过程的五大难点和痛点

作为一个在项目摸爬滚打十余年的管理人员,对项目管理的难点和痛点深有体会,这就结合我自身体验来说一说。 我认为,项目管理实施中的难点和痛点其实可以归结为两类:一类是对于项目任务本身,另一类则涉及到团队内部的管…

2023年,转行学Java还是web前端?

2023年要想顺利入行IT建议选择Java。 理由很简单,前端开发岗位需求大量减少,大厂裁员导致大量有经验的前端开发人员或者初级后端开发人员流入就业市场;作为新人缺乏技能优势和项目优势,而用人单位也更愿意招聘熟手,或…

Python 自动化指南(繁琐工作自动化)第二版:八、输入验证

原文:https://automatetheboringstuff.com/2e/chapter8/ 输入验证代码检查用户输入的值,比如来自input()函数的文本,格式是否正确。例如,如果您希望用户输入他们的年龄,您的代码不应该接受无意义的答案,如负…

chatgpt大模型赋能人形机器人之我见

我个人的看法(不涉及任何和他项目相关的细节或商业机密,仅仅是我个人的泛泛而谈): 1、从大趋势来说,人形机器人的灵活度和通用性确实非常的高,是有前景的。另外轮式足式也不是他独一例,像 ETH …

【Redis学习】Redis管道

理论简介 问题由来 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应。 服务端处理命令,并将结果返回给客户端。 上述两步称为:Round Trip Time(简称RTT,数据包往返…

STM32基于STM32CubeMX DMA + EXTI读取DS1307数据

STM32基于STM32CubeMX DMA EXTI读取DS1307数据✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!🍁对于文中所提供的相关资源链接将作不定期更换。&a…

JVM垃圾回收机制简介

内存管理 Java的内存管理很大程度指的就是对象的管理,其中包括对象空间的分配和释放。 对象空间的分配:使用new关键字创建对象即可 对象空间的释放:将对象赋值null即可。垃圾回收器将负责所有“不可达”对象的内存空间。 垃圾回收过程 任…

蓝桥杯web备赛——Node.js

node.js之前只能说是略有了解,这次好好了解一下吧! 东西还是比较多的。 目前来看就了解比赛会用到的http模块就可以了,其他的暂且不做了解 const http require("http");//1.引入http模块const app http.createServer();//2.创建…