交叉熵损失函数介绍

news2024/11/15 23:22:36

 交叉熵是信息论中的一个重要概念,它的大小表示两个概率分布之间的差异,可以通过最小化交叉熵来得到目标概率分布的近似分布。

为了理解交叉熵,首先要了解下面这几个概念。

自信息

信息论的基本想法是,一个不太可能的事件发生了的话,要比一个非常可能发生的事件提供更多的信息。

如果想通过这种想法来量化信息,需要满足以下性质:

  1. 非常可能发生的事件信息量比较少,并且极端情况下,确定能够发生的事件没有信息量。
  2. 较不可能发生的事件具有更高的信息量。
  3. 独立事件应具有增量的信息。例如,投掷的硬币两次正面朝上传递的信息量,应该是投掷一次硬币正面朝上的信息量的两倍。

根据以上三点,定义自信息(self-information):

I(x)=-logP(x)

 在本文中,用log来表示自然对数,其底数为e。

香农熵

设 X 是一个有限个值的离散随机变量,其概率分布为:

P(X=x_{i})=p_{i}, i=1,2,...,n

对于该离散随机变量,用自信息的期望来量化整个概率分布中的不确定性总量:

H(x)=-\sum_{i=1}^{n}p^{i}logp^{i}

 这里的H(X)定义为随机变量 X 的香农熵(Shannon entropy),香农熵只依赖于 X 的分布,而与 X 的取值无关,所以香农熵也记作H(P)。

下面借助抛硬币的例子来简单理解一下香农熵。

在抛硬币时,假设正面朝上的概率为p,反面朝上的概率为1-p,即 P(X=正) = p, P(X=反) = 1-p,香农熵大小为:

H(p)=-plogp-(1-p)log(1-p)

 H(p)随概率p变化的曲线为:

 从上图中可以看到,当正面朝上的概率p=0或1时,这时我们完全可以确定抛硬币的结果,此时香农熵H(p)=0,随机变量完全没有不确定性。当p=0.5时,正面和反面出现的概率相同,我们完全无法确定结果,此时香农熵取值最大,随机变量不确定性也最大。这说明了更接近确定性的分布具有较低的香农熵,而更接近均匀分布的分布(不确定性最大)具有较高的香农熵。

KL散度(相对熵)

 KL散度(Kullback-Leibler divergence),也叫做相对熵。若随变量 X 有两个单独的概率分布P(X)和Q(X),可以用相对熵来衡量这两个分布的差异,相对熵的定义如下:

D_{KL}(P||Q)=\sum_{i=1}^{n}P(x_{i})log\frac{P(x_{i})}{Q(x_{i})} 

 相对熵是非负的(关于KL散度或者相对熵非负性的证明,可以参考我的另一篇文章:KL散度非负性证明),它的大小可以用来衡量两个分布之间的差异,当且仅当P和Q具有完全相同的分布时,相对熵取值为0。

交叉熵 

 通过上面的介绍,相信聪明的同学已经发现可以通过最小化相对熵来用分布Q逼近分布P(目标概率分布)。首先我们对相对熵公式进行变形:

 

 这里的H(P,Q)就是交叉熵(cross-entropy),它的表达式为:

H(P,Q)=-\sum_{i=1}^{n}P(x_{i})logQ(x_{i})

 对于确定的概率分布P,它的香农熵H(P)是一个常数,所以要对相对熵 D_{KL}(P||Q) 进行最小化,只需对交叉熵H(P,Q)做最小化处理即可。

通过最小化交叉熵,就可以得到分布P的近似分布,这也是为什么可以用交叉熵作为网络的损失函数。 

交叉熵损失函数

交叉熵损失函数常用于分类问题中,下面以图像分类问题来举例说明。

为了计算网络的loss,模型的输出要确保归一化到0到1之间,二分类问题通常使用sigmoid函数来进行归一化,多分类问题通常使用softmax函数来归一化。

假设我们需要对数字1,2,3进行分类,它们的label依次为:
[1,0,0], [0,1,0], [0,0,1]
当输入的图像为数字1时,它的输出和label为:
[0.3,0.4,0.3] , [1,0,0]
接下来我们就可以利用交叉熵计算网络的  loss=-(1*log(0.3)+0+0)=1.2
随着训练次数的增加,模型的参数得到优化,这时的输出变为:[0.8,0.1,0.1]
则  loss=-(1*log(0.8)+0+0)=0.22

 可以发现loss由1.20减小为0.22,而判断输入图像为数字1的概率由原本的0.3增加为0.8,说明训练得到的概率分布越来越接近真实的分布,这样就大大的提高了预测的准确性。

【个人理解】深度学习中,在进行分类任务的时候,训练集就是一堆图片加上每一张图片对应的标签,比如MNIST手写数字识别数据集就是一张灰度图片加上10个类别的one-hot标签,这个时候,最理想的分布就是:输入一张图片比如数字1,输出对应类别的one-hot即[0,1,0,0,0,0,0,0,0,0] 。而我们实际在网络训练过程中的分布是:输入一张图片比如数字1,输出对应类别的one-hot即[0,0.8,0,0,0,0,0,0,0.2,0] 。可以看到我们训练时候的实际分布和最理想的分布之间还是存在差别的,这个时候我们就希望网络训练的时候,输入一张图片比如数字1,输出对应类别的one-hot尽可能的接近[0,1,0,0,0,0,0,0,0,0],也就是说,我们希望训练时候的分布尽可能的接近最理想的分布。而这种评估两个分布之间差异即为KL散度,所以说,交叉熵损失函数的核心思想就是使网络训练的分布尽可能接近Ground Truth的分布。

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

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

相关文章

【leetcode面试经典150题】51. 用最少数量的箭引爆气球(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

【学习笔记十六】EWM常见下架策略介绍

一、FIFO(First in ,First out)先进先出下架策略 1.后台配置 ①定义出库规则 字段: WDATU:收货日期和时间 或者WDATU_DATE收货日期无时间 QUAN:可用数量 排序: 不勾选升序,勾选降序 ②指定仓库类型搜索顺序 ③确定出库的存储类型搜索顺序 ②和③的配置详情见…

Android MVVM架构学习——ViewModel DataBinding

关于MVVM架构,我并不想花篇幅去做重复性的描述,网上一搜都是一堆讲解,大家可以自行了解,我所做的只是以最简单的例子,最有效的步骤,从零开始,去实现一个相对有点学习参考价值的项目。 先来看本…

无人机GB42590接收端 +接收端,同时支持2.4G与5.8G双频WIFI模组

严格按照GB42590的协议开发的发射端,通过串口和模块通讯,默认波特率 921600。 http://www.doit.am/首页-深圳四博智联科技有限公司-淘宝网https://shop144145132.taobao.com/?spma230r.7195193.1997079397.2.71f6771dJHT2r0 二、接口文档 单片机和模…

【web3技术】什么是 WEB3?

Web3 简介 中心化网络已经帮助数十亿人融入了互联网,并在其上创建了稳定、可靠的基础设施。 与此同时,少数中心化巨头几乎垄断了互联网,甚至可以为所欲为。 Web3 是摆脱这一困境的方案。 不同于科技巨头垄断的传统互联网,Web3 采用去中心化,由所有用户构建、运营和拥有。…

探索数据结构:顺序串与链式串的深入理解

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 串的定义 串是一种特殊的顺序表,即每一个元素都是单独一…

Matlab 2024安装教程(附免费安装包资源)

鼠标右击软件压缩包,选择“解压到MatlabR2024a“。 2.打开解压后的文件夹,鼠标右击“MATHWORKS_R2024A“选择装载。 鼠标右击“setup“选择”以管理员身份运行“。点击“是“,然后点击”下一步“。复制一下密钥粘贴至输入栏,然后…

移动开发避坑指南——内存泄漏

在日常编写代码时难免会遇到各种各样的问题和坑,这些问题可能会影响我们的开发效率和代码质量,因此我们需要不断总结和学习,以避免这些问题的出现。接下来我们将围绕移动开发中常见问题做出总结,以提高大家的开发质量。本系列文章…

爬虫的目的是做什么

通过网站域名获取HTML数据解析数据,获取想要的信息存储爬取的信息如果有必要,移动到另一个网页重复过程 这本书上的代码的网址是 : GitHub - REMitchell/python-scraping: Code samples from the book Web Scraping with Python http://shop.…

低代码集成Java系列:高效构建自定义插件

前言 随着软件开发的快速发展和需求的不断增长,开发人员面临着更多的压力和挑战。传统的开发方法需要花费大量的时间和精力,而低代码开发平台的出现为开发人员提供了一种更加高效、快速的开发方式。今天小编就以构建命令插件为例,展示如何使…

不要顺从胃的指示进食

没有人喜欢一直胖着,但想瘦,运动力、运动量、毅力、耐力、坚持、饮食管控方面等都不可缺,道理懂得都懂,但大多数超重胖子却都是有心而无力的。原因,除了生理体积影响了行动外,更重要的一点是:由…

汽车抗疲劳驾驶测试铸铁试验底座技术要求有哪些

铸铁平台试验台底座的主要技术参数要求 1、 试验台底座设计制造符合JB/T794-1999《铸铁平板》标准。 2、 试验铁底板及所有附件的计量单位全部采用 单位(SI)标准。 3、铸铁平台平板材质:用细密的灰口铸铁HT250或HT200,强度符…

Mysql的事务隔离级别以及事务的四大特性。

MySQL 的事务隔离级别是数据库管理系统中的一个重要概念,它决定了事务如何隔离和影响其他并发事务。MySQL 支持四种事务隔离级别,分别是:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)…

Collection与数据结构 二叉树(二):二叉树精选OJ例题(上)

1. 判断是否为相同的二叉树 OJ链接 public boolean isSameTree(Node p, Node q) {if (p null && q ! null || p ! null && q null){//结构不同return false;}if (p null && q null){//结构相同,都是空树return true;}if (p.value ! q.value){//…

STC89C52学习笔记(十二)

STC89C52学习笔记(十二) 一、AD/DA 1.定义 AD能够将模拟信号转化为数字信号,DA能够将数字信号转化为模拟信号。 2.两种类型的DA转换器 (1)PWM型DA滤波器 由于PWM是通过脉冲调制的方法来调整的,低通滤…

【数字IC/FPGA】什么是无符号数?什么是有符号数?

进制 虽然在日常生活中,我们已经习惯了使用10进制数字,但在由数字电路构成的数字世界中,2进制才是效率更高的选择。 10进制与2进制 10进制(decimal)计数法(一般也叫阿拉伯计数法)是在日常生活…

C++ | Leetcode C++题解之第19题删除链表的倒数第N个结点

题目&#xff1a; 题解&#xff1a; class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummy new ListNode(0, head);ListNode* first head;ListNode* second dummy;for (int i 0; i < n; i) {first first->next;}while (fi…

UE4_导入内容_骨架网格体

FBX 导入支持 骨架网格体&#xff08;Skeletal Mesh&#xff09; 。这提供了一种简化的处理流程来将有动画的网格体从 3D应用程序中导入到虚幻引擎内&#xff0c;以便在游戏中使用。除了导入网格体外&#xff0c;如果需要&#xff0c;动画和变形目标都可以使用FBX格式 在同一文…

IDA导入jni.h头文件步骤

源地址&#xff1a;https://www.ctvol.com/asreverse/2273.html 导入步骤1&#xff1a; 点击IDA Pro 菜单项“File->Load file->Parse C header file ” 选择jni.h头文件。 导入步骤2&#xff1a; 1、点击IDA Pro 主界面上的“Structures”选项卡。 2、按下Insert键…

为什么会有c++内存模型

1. 引言 c的内存模型主要解决的问题是多线程的问题。怎么理解多线程呢&#xff1f;单核时候&#xff0c;只有1个CPU内核处理多线程&#xff0c;各线程之间随着时间的推进&#xff0c;会不断的切换&#xff0c;如下图形便于理解。 实际上线程间的切换是非常快的&#xff0c;所以…