交叉熵损失函数介绍

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

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

自信息

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

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

  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的分布。

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

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

相关文章

蓝桥杯:握手问题和小球反弹问题

试题 A: 握手问题 本题总分: 5 分 【问题描述】 小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上, 大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手(且仅有一次&#x…

FRR-NET:用于弱光图像增强的快速重参数残差网络

很久之前写的文章,前两天才见刊。项目的具体代码因项目原因无法公布,我自己重新训练了一个版本(包含两类预训练模型),供初学者参考。本文主要为AB式创新。 文章链接:paper 代码链接:GitHub || …

【QT入门】Qt自定义控件与样式设计之鼠标相对、绝对位置、窗口位置、控件位置

往期回顾 【QT入门】 Qt自定义控件与样式设计之QSlider用法及qss-CSDN博客 【QT入门】Qt自定义控件与样式设计之qss的加载方式-CSDN博客 【QT入门】Qt自定义控件与样式设计之控件提升与自定义控件-CSDN博客 【QT入门】Qt自定义控件与样式设计之鼠标相对、绝对位置、窗口位置、控…

【Unity】Feature has expired(H0041)

【背景】 在一台很久不用的电脑上更新了个人License,并导入了云项目,打开时却报错: 【分析】 网上查说要删缓存等等,试过都不行。重装Hub也不行。 这种环境类型的原因很难从信息入手定位错误。 所以我自己检查项目上有什么问题…

温故知新之-TCP Keepalive机制及长短连接

[学习记录] 前言 TCP连接一旦建立,只要连接双方不主动 close ,连接就会一直保持。但建立连接的双方并不是一直都存在数据交互,所以在实际使用中会存在两种情况:一种是每次使用完,主动close,即短连接&…

ChatGPT 和 Elasticsearch:使用 Elastic 数据创建自定义 GPT

作者:Sandra Gonzales ChatGPT Plus 订阅者现在有机会创建他们自己的定制版 ChatGPT,称为 GPT,这替代了之前博客文章中讨论的插件。基于本系列的第一部分的基础 —— 我们深入探讨了在 Elastic Cloud 中设置 Elasticsearch 数据和创建向量嵌…

C语言100道练习题打卡(1)

1 有1&#xff0c;2&#xff0c;3&#xff0c;4四个数字&#xff0c;能组成多少个互不相同且不重复的三位数&#xff0c;都是多少 #include<stdio.h> //有1&#xff0c;2&#xff0c;3&#xff0c;4四个数字&#xff0c;能组成多少个互不相同且不重复的三位数&#xff…

Web端Excel的导入导出Demo

&#x1f4da;目录 &#x1f4da;简介:✨代码的构建&#xff1a;&#x1f4ad;Web端接口Excel操作&#x1f680;下载接口&#x1f680;导入读取数据接口 &#x1f3e1;本地Excel文件操作⚡导出数据&#x1f308;导入读取数据 &#x1f4da;简介: 使用阿里巴巴开源组件Easy Exce…

在Mac中打开终端的3种方法

在使用Mac时&#xff0c;有时需要深入研究设置&#xff0c;或者完成一些开发人员级的命令行任务。为此&#xff0c;你需要终端应用程序来访问macOS上的命令行。下面是如何启动它。 如何使用聚焦搜索打开终端 也许打开终端最简单、最快的方法是通过聚焦搜索。要启动聚焦搜索&a…

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

1.二叉树的分层遍历 OJ链接 上面这道题是分层式的层序遍历,每一层有哪些结点都很明确,我们先想一想普通的层序遍历怎么做 /*** 层序遍历* param root*/public void levelOrder1(Node root){Queue<Node> queue new LinkedList<>();queue.offer(root);while (!qu…

支持向量机模型pytorch

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个支持向量机模型pytorch程序,最后打印5个条件分别的影响力。 示例一 支持向量机&#xff08;SVM&#xff09;是一种…

详解拷贝构造

拷贝构造的功能 写法&#xff1a; 拷贝构造函数的参数为什么是引用类型 系统自动生成的拷贝构造函数 拷贝构造的深拷贝与浅拷贝 概念 浅拷贝&#xff1a; 深拷贝 小结 拷贝构造的功能 拷贝构造函数可以把曾经实例化好的对象的数据拷贝给新创建的数据 &#xff0c;可见…

基于SpringBoot+Mybatis框架的私人影院预约系统(附源码,包含数据库文件)

基于SpringBootMybatis框架的私人影院预约系统&#xff0c;附源码&#xff0c;包含数据库文件。 非常完整的一个项目&#xff0c;希望能对大家有帮助哈。 本系统的完整源码以及数据库文件都在文章结尾处&#xff0c;大家自行获取即可。 项目简介 该项目设计了基于SpringBoo…

软考126-上午题-【软件工程】-测试方法

一、测试方法 在软件测试过程中&#xff0c;应该为定义软件测试模板&#xff0c;即将特定的测试方法和测试用例设计放在一系列的测试步骤中。 软件测试方法分为&#xff1a;静态测试和动态测试。 1-1、静态测试。 静态测试是指被测试程序不在机器上运行&#xff0c;而是采用…

事务隔离级别的无锁实现方式 -- MVCC

MVCC的全称是Multiversion Concurrency Control(多版本并发控制器)&#xff0c;是一种事务隔离级别的无锁的实现方式&#xff0c;用于提高事务的并发性能&#xff0c;即事务隔离级别的一种底层实现方式。 在了解MVCC之前&#xff0c;我们先来回顾一些简单的知识点&#xff1a;…

最优算法100例之47-从尾到头打印单链表

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 从尾到头打印单链表 题解报告 方法1:头插法逆置单链表然后依次打印;注意此处是不带头结点的单链表,带头节点的操作稍微有…

网络篇09 | 运输层 udp

网络篇09 | 运输层 udp 01 简介UDP 是面向报文的 02 报文协议 01 简介 UDP 只在 IP 的数据报服务之上增加了一些功能&#xff1a;复用和分用、差错检测 UDP 的主要特点&#xff1a;无连接。发送数据之前不需要建立连接。 使用尽最大努力交付。即不保证可靠交付。 面向报文。…

【信号处理】心电信号传统R波检测定位典型方法实现(matlab)

关于 心电信号中QRS波检测是一个非常重要的步骤&#xff0c;可以用于实现重要波群的基本定位&#xff0c;在定位基础上&#xff0c;可以进一步分析心电信号的特征变化&#xff0c;从而为医疗诊断提供必要的参考。 工具 MATLAB ECG心电信号 方法实现 ECG心电信号加载 ecg …

基于深度学习的花卉检测系统(含PyQt界面)

基于深度学习的花卉检测系统&#xff08;含PyQt界面&#xff09; 前言一、数据集1.1 数据集介绍1.2 数据预处理 二、模型搭建三、训练与测试3.1 模型训练3.2 模型测试 四、PyQt界面实现参考资料 前言 本项目是基于swin_transformer深度学习网络模型的花卉检测系统&#xff0c;…

架构师系列-搜索引擎ElasticSearch(八)- 集群管理故障恢复

故障转移 集群的master节点会监控集群中的节点状态&#xff0c;如果发现有节点宕机&#xff0c;会立即将宕机节点的分片数据迁移到其它节点&#xff0c;确保数据安全&#xff0c;这个叫做故障转移。 下图中node1是主节点&#xff0c;其他两个节点是从节点 节点故障 此时node1…