损失函数理解(二)——交叉熵损失

损失函数的目的是为了定量描述不同模型(例如神经网络模型和人脑模型)的差异。

交叉熵,顾名思义,与熵有关,先把模型换成熵这么一个数值,然后用这个数值比较不同模型之间的差异。

为什么要做这一步转换,原因是要直接比较两个模型,前提是两个模型是同一种类型,比如都是高斯分布,我们可以比较均值和方差。但现实中,我们要比较的两种模型往往不是同一种类型,甚至我们都不知道是什么类型。所以我们通过熵实现不同类型概率模型的公度


熵的前置知识

1. 信息量

衡量一个信息有没有信息量,不是看这个消息你知不知道,关键是看能带来多少确定性,也可以说能消除多少不确定性。

例如有8支队伍参加比赛,其中一支队伍名为“AI小队”。理论上来说,“AI小队”夺冠概率为1/8。但如果告诉你“AI小队”夺冠了,夺冠概率从1/8变为百分之百;但如果告诉你“AI小队”进入总决赛了,夺冠概率从1/8变为1/2,但直观上感觉这个信息量不如夺冠信息的信息量高。

通过上述例子我们大概能明白不同的信息,含有的信息量是不同的。那如何定义信息量呢?


***题外话***

所谓定义,就是人为规定它的意义,给出一个表达式,至于这个表达式为什么这么写而不那么写,原因是最先提出的人就是这么写的,并且逻辑得到了自洽,后人为了统一标准,便沿用了这个定义。你也可以给出自己的定义,但为了让体系自洽,可能其他与该定义相关的表达式就要重写。


首先,从直观上来说,一件事发生的概率越低,其包含的信息量越大;反之一件事发生的概率越大,包含的信息量越少。例如,我告诉你太阳每天东升西落,这对你来说没有任何信息量,因为这件事情的概率是1;但假如我告诉你下一期双色球中奖号码是某某某(假如是正确的话),那这个消息的信息量就很大了。因此信息量与事件发生的概率是相关的。

其次,假如一个事件可以被分解成多个事件,该事件的信息量等于多个事件信息量的和。现在我们假设f(x)是信息量的一个表达式,根据上面举的例子,该表达式应该满足如下要求:

f(AI小队夺冠(进决赛且赢得决赛)) = f(AI小队进入决赛)+f(AI小队进入决赛后还赢了决赛)

f(\frac{1}{8})=f(\frac{1}{4} \times \frac{1}{2})=f(\frac{1}{4})+f(\frac{1}{2})

乘法变加法,熟悉的感觉,是log!!!信息量能不能定义成log(P_{i})呢,其中P_{i}为事件i发生的概率。如此以来第二个条件满足了,但是这样的话信息量会随着事件发生概率的增大而增大,那怎么办呢?加个负号。

所以如果我们把一个事件的信息量定义为如下公式,逻辑就能自洽

H_{i}=-log(P_{i})

通常我们log以2为底,计算出的信息量的单位是比特(bit)。原因是计算机是二进制的,我们的信息量衡量了一个信息的最短编码(不理解的同学可忽略)。

2.熵

通过上面的分析,我们给出了信息量的定义。信息量可以理解成一个事件从原来的不确定性变得确定难度有多大,信息量比较大说明难度比较高。熵的理解也类似,不过熵衡量的不是某个具体事件,而是一个系统中所有的事件,即一个系统从原来的不确定到确定,其难度有多大。

我们可以把一场比赛看作一个系统。假如两个实力相近的队伍比赛,两只队伍胜利的概率都是\frac{1}{2},那这两只队伍赢球的信息量都是:

I=-log_{2}\frac{1}{2}=1

但如果是两只实力悬殊的队伍比赛,队伍A胜利的概率是99%,队伍B胜利的概率为1%,那两只队伍赢球的信息量分别为:

I_{A}=-log_{2}\frac{99}{100}\approx 0.0145

I_{B}=-log_{2}\frac{1}{100}\approx 6.6439

那球赛的熵是两只队伍赢球的信息量的加和么?

显然不是,因为如果是加和的话,实力悬殊队伍的比赛结果相对来说是确定的,大概率是实力强的队伍赢得比赛,所以它的不确定性是低的,但此时它的熵却是高的,所以熵并不是信息量的简单加和。

我们需要考虑每个事件对系统贡献的信息量,事件只有发生了,才会贡献信息量,所以系统的熵定义为信息量的期望:

H:= E(I)\\\\=\sum _{i=1}^{m}p_{i}I_{i}\\\\=\sum _{i=1}^{m}p_{i}(-log_{2}p_{i})\\\\=-\sum _{i=1}^{m}p_{i}\cdot log_{2}p_{i}

3.相对熵(KL散度)

我们的目的是要比较两个模型,最简单的方法就是把概率模型的熵计算出来然后直接比较熵的数值,但并不是所有概率模型我们都能求熵。因此引出另外一个概念——相对熵,也叫KL散度,其定义如下:

D_{KL}(P||Q)\\\\:=\sum _{i=1}^{m}p_{i}\cdot (I_{Q_{i}}-I_{P_{i}})\\\\=\sum _{i=1}^{m}p_{i}\cdot((-log_{2}q_{i})-(-log_{2}p_{i}))\\\\=\sum _{i=1}^{m}p_{i}\cdot(-log_{2}q_{i})-\sum _{i=1}^{m}p_{i}\cdot(-log_{2}p_{i})\\\\=H(P,Q)-H(P)

KL散度等于0表明两个分布是一样的,不等于0表示两者有差别。其中QP分别表示两个概率分布,D_{KL}(P||Q)表示以P为基准(P在前),用Q近似P式损失了多少信息,I_{Q_{i}}表示某个事件在系统Q中的信息量,H(P,Q)表示交叉熵,H(P)表示概率分布P的熵,我们以P为基准的话,这个值是不会变的。

由公式可知,H(P,Q)H(P)都是大于0的,但是两者谁更大呢?这是很重要的,因为如果KL散度大于零,要使得KL越接近于0,就得让交叉熵越小;如果KL散度小于0,要使得KL散度越接近于0,就得让交叉熵越大。

吉布斯不等式已经证明KL散度是恒大于等于0的(感兴趣的小伙伴可自行检索证明过程),那现在我们如果想让概率分布Q接近P,只需要最小化两者的交叉熵即可,也就是说交叉熵可作为损失函数对模型进行优化


通过前置知识,我们引出了交叉熵,并且明白了为什么交叉熵可以衡量两个概率分布之间的差异,也就是说可以用作损失函数。那么在神经网络中,我们该如何利用交叉熵呢?首先我们回顾一下交叉熵的定义:

H(P,Q)=\sum _{i=1}^{m}p_{i}\cdot(-log_{2}q_{i})

我们只需要用训练神经网络场景中的变量替换公式中的变量即可。

m表示分类的个数,在判断图像是不是猫的二分类任务中,i的取值只有两个,即i=1表示图像是猫,i=2表示图像不是猫;对应的,p_{i}表示每个事件发生的概率,即当前图像是猫的概率和不是猫的概率,在模型训练场景中,我们以人脑中的概率模型为基准,即以标签为基准,所以p_{1}=yp_{2}=(1-y),其中y表示人类给图像的标签,是猫为1,不是猫为0;q则对应模型预测的当前图像是猫的概率,即\widehat{y},而不是猫的概率就是(1-\widehat{y}),所以交叉熵用于神经网络中的形式如下:

H=-[y\cdot log_{2}\widehat{y}+(1-y)\cdot log_{2}(1-\widehat{y})]

当然这里是二分类的情况,如果是多分类,交叉熵可进一步写为:

H=-\sum _{i=1}^{m}y_{i}\cdot log(\widehat{y_{i}})

其中i表示类别数,y_{i}表示是类别i的概率(标签),\widehat{y_{i}}表示模型预测的是类别i的概率。


至此,我们通过信息量和熵引出交叉熵,并介绍了交叉熵是如何用于损失计算的,希望能够对有需要的伙伴提供帮助,如果文中有歧义或者有错误的地方,欢迎大家在评论区指出!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记--基于Sa-Token 实现Java项目单点登录+同端互斥检测

目录 同端互斥登录 单点登录SSO 架构选型 模式二: URL重定向传播 前后端分离 整体流程 准备工作 搭建客户端 搭建认证中心SSO Server 环境配置 开放认证接口 启动类 跨域处理 同端互斥登录 同端互斥登陆 模块 同端互斥登录指:同一类型设备上只允许单地…

蓝桥杯 小球反弹

问题描述 有一个长方形,长为 343720 单位长度,宽为 233333 单位长度。 在其内部左上角顶点有一小球(无视其体积),其初速度方向如图所示,且保持运动速率不变。分解到长宽两个方向上的速率之比为&#xff1…

PyCharm中使用pip安装PyTorch(从0开始仅需两步)

无需 anaconda,只使用 pip 也可以在 PyCharm 集成环境中配置深度学习 PyTorch。 本文全部信息及示范来自 PyTorch 官网。 以防你是super小白: PyCharm 中的命令是在 Python Console 中运行,界面左下角竖排图标第一个。 1. 安装前置包 numpy …

在刀刃上发力:如何精准把握计划关键节点

关键路径分析是项目管理中的一种重要方法,它通过在甘特图中识别出项目中最长、最关键的路径,来确定项目的最短完成时间。 关键路径上的任务都是项目成功的关键因素,任何延误都可能导致整个项目的延期。关键路径分析对于项目管理者来说至关重要…

Burp Suite 代理配置全流程指南

目录 一、基础环境准备 1.1 安装与启动 1.2 环境变量配置 二、核心代理配置 2.1 Burp 代理监听设置 2.2 浏览器代理配置 Firefox Chrome/Edge 代理插件推荐 三、HTTPS 流量拦截 3.1 证书安装流程 3.2 移动端配置 四、高级功能应用 4.1 流量操作 4.2 HTTP 历史记…

【数据分享】我国乡镇(街道)行政区划数据(免费获取/Shp格式)

行政区划边界矢量数据是我们在各项研究中最常用的数据。之前我们分享过2024年我国省市县行政区划矢量数据(可查看之前的文章获悉详情),很多小伙伴拿到数据后咨询有没有精细到乡镇(街道)的行政区划矢量数据!…

考研复习之队列

循环队列 队列为满的条件 队列为满的条件需要特殊处理,因为当队列满时,队尾指针的下一个位置应该是队头指针。但是,我们不能直接比较 rear 1 和 front 是否相等,因为 rear 1 可能会超出数组索引的范围。因此,我们需…

如果我没安装office,只安装了wps,python 如何通过win32com.client.Dispatch操作ppt?

文章目录 win32com.client.Dispatch是干嘛的?什么是Windows COM组件COM和dll有关系吗?python 如何通过win32com.client.Dispatch操作ppt?如果我没安装office,只安装了wps,python 如何通过win32com.client.Dispatch操作ppt?附录:完整报错信息win32com.client.Dispatch是干…

介绍一个测试boostrap表格插件的好网站!

最近在开发一个物业管理系统。用到bootstrap的表格插件bootstrap table,官方地址: https://bootstrap-table.com/ 因为是英文界面,对国人不是很友好。后来发现了小书童网站 IT小书童 - 为程序员提供优质教程和文档 网站: IT小…

七、服务器远程桌面报错

🌻🌻目录🌻🌻 一、远程桌面报错-用户账户限制(例如,时间限制)会阻止你登录。 一、远程桌面报错-用户账户限制(例如,时间限制)会阻止你登录。 原因是被远程的系…

不做颠覆者,甘为连接器,在技术叠层中培育智能新物种

--- 一、技术融合的必然:从“非此即彼”到“兼容共生” 当大模型的热浪撞上传统IT的礁石,企业智能化的真相浮出水面: 新旧技术的“量子纠缠”:MySQL与向量数据库共享数据总线,规则引擎与大模型共处决策链路 需求进…

# [RPA] 使用八爪鱼进行高效网页数据采集

在许多行业中,数据是核心资产。然而,虽然许多网站的文本内容可以免费访问,但手动一条一条采集,不仅耗时耗力,还容易出错。这种情况下,使用自动化工具来提高采集效率就显得尤为重要。本文将介绍 八爪鱼 这一…

Blazor+PWA技术打造全平台音乐播放器-从音频缓存到离线播放的实践之路

基于PWA技术打造全平台音乐播放器:从音频缓存到离线播放的实践之路 这篇文章是自己的想法结合AI之后润色的。在数字音乐领域,用户期望随时随地享受音乐,无论是手机还是电脑,无论是在线还是离线。**渐进式Web应用(PWA&…

众乐影音-安卓NAS-Player的安装和设置说明

众乐影音是耘想公司基于原有的安卓NAS,增加影音和图片播放功能后,推出的一款新概念NAS-Player。它不仅可以接收手机端推送的视频,音频和图片文件进行播放,还可以把任何一台安卓设备,比如手机、机顶盒、各种安卓盒子等&…

Linux shell脚本-概述、语法定义、自定义变量、环境变量、预设变量、变量的特殊用法(转义字符、单双引号、大小括号)的验证

目录 1.shell概述 1.1作为应用程序: 1.2 shell 作为一门语言 2.shell 语法 2.1 shell脚本的定义与执行 (1)新建文件 (2)程序开头第一行 必须写shell的类型 (3)程序编写完后&#xff0c…

redis集群的原理是什么?

大家好,我是锋哥。今天分享关于【redis集群的原理是什么?】面试题。希望对大家有帮助; redis集群的原理是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 集群(Redis Cluster)是一种分布式解决方案&…

PicFlow:一个图片处理与上传工作流工具(图床上传工具)

自从学习搭建网站以来,我就把很多图片托管在七牛云等图床平台上。以前总是通过网页批量上传,需要登录并一步步跳转网页操作,久而久之就厌烦了,于是花了一天时间用 Python 写了一个工具 —— PicFlow,从名字可以看出&am…

常⻅CMS漏洞之一:WordPress

WordPress是⼀个以PHP和MySQL为平台的⾃由开源的博客软件和内容管理系统。WordPress具有插件架构和模板系统。截⾄2018年4⽉,排名前1000万的⽹站中超过30.6%使⽤WordPress。 WordPress是最受欢迎的⽹站 内容管理系统。全球有⼤约30%的⽹站(7亿5000个)都是使⽤WordP…

一文说清预训练与微调:AI的双重训练法则

什么是预训练? 预训练是大型语言模型训练的第一步。它在资金和计算能力的支持下,通过深入分析大量的文本数据,使模型建立起语言的基本构架。在这一阶段,模型通过学习海量的书籍、文章和网页,识别出语言的语法、句法和…

【TI MSPM0】Timer学习

一、计数器 加法计数器:每进入一个脉冲,就加一减法计算器:每进入一个脉冲,就减一 当计数器减到0,触发中断 1.最短计时时间 当时钟周期为1khz时,最短计时时间为1ms,最长计时时间为65535ms 当时…