信息量、熵、KL散度、交叉熵概念理解

news2024/11/28 19:00:30

信息量、熵、KL散度、交叉熵概念理解

(1) 信息量

  • 信息量是对事件的不确定性的度量。
假设我们听到了两件事,分别如下:

事件A:巴西队进入了世界杯决赛圈。
事件B:中国队进入了世界杯决赛圈。


仅凭直觉来说,显而易见事件B的信息量比事件A的信息量要大。

究其原因,是因为事件A发生的概率很大,事件B发生的概率很小。

所以当越不可能的事件发生了,我们获取到的信息量就越大。
越可能发生的事件发生了,我们获取到的信息量就越小。
(`事件发生的概率越小,信息量越大;事件发生的概率越大,信息量越小。`

信息量的数学表达式

具体而言,对于一个离散随机事件 x x x,其发生的概率为 p ( x ) p(x) p(x),则该事件所包含的信息量 l ( x ) l(x) l(x) 定义为:
l ( x ) = − l o g ( p ( x ) ) l(x)=-log(p(x)) l(x)=log(p(x))

  • 对数函数可以采用任意底数,常见的有自然对数(以 e 为底)和常用对数(以 2为底)。
  • 使用常用对数2时,信息量的单位是比特(bit)
  • 使用自然对数e时,单位是纳特(nat)

(2) 熵

  • 信息量可以理解为一个事件由不确定变为确定,它的难度有多大。

  • 熵可以理解为一个系统由不确定变为确定,它的难度有多大。

熵定义为对信息量 f ( p i ) f(pi) f(pi)求期望,熵越大,表示这个系统的不确定性越高。对所有可能发生的事件,把这个信息量求出来,然后和事件发生可能性相乘,最后全部加起来。

设X是一个离散型随机变量,分布律为 p ( x ) = p ( X = x ) p(x) = p(X = x) p(x)=p(X=x) x ∈ X x∈X xX为取值空间集合 ,则随机变量X的熵 H ( X ) H(X) H(X) 定义为:
H ( X ) = − ∑ x ∈ X p ( x ) l o g ( p ( x ) ) H(X) = -\sum_{x∈ X} p(x)log(p(x)) H(X)=xXp(x)log(p(x))

  • 熵的单位
    使用常用对数2时,熵的单位是比特(bit);
    使用自然对数e时,熵的单位是纳特(nat)。
假设我们有一个离散随机变量 X,它有四个可能的结果:x1、x2、x3 和 x4,对应的概率分别为 0.1、0.2、0.3 和 0.4。我们要计算这个随机变量X的熵。

# 首先计算每个结果的信息量。根据信息量的定义,我们有
I(x1) = -log(0.1)
I(x2) = -log(0.2)
I(x3) = -log(0.3)
I(x4) = -log(0.4)

# 然后,我们将这些信息量与对应的概率相乘,并将结果相加,得到随机变量 X 的熵
H(X) = 0.1 * I(x1) + 0.2 * I(x2) + 0.3 * I(x3) + 0.4 * I(x4)

(3) 相对熵(KL散度)

相对熵,也叫KL散度,是一种衡量两个分布差异的方法。假设现在同一个随机变量 X ,有P、Q两个单独的概率分布(如下图),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。

在这里插入图片描述

如何定义相对熵来衡量这两个分布的差异呢?
D K L ( P ∣ ∣ Q ) = ∑ x ∈ X p x ( l Q ( q x ) − l P ( p x ) ) 【对于每一个可能的 x , 计算信息量之差】 = ∑ x ∈ X p x ( − l o g ( q x ) − ( − l o g ( p x ) ) = ∑ x ∈ X p x ( − l o g ( q x ) ) − ∑ x ∈ X p x ( − l o g ( p x ) ) 【称为相对熵】 = ∑ x ∈ X p x l o g ( p x q x ) D_{KL}(P||Q)=\sum_{x∈X}p_x(l_Q(q_x)-l_P(p_x)) 【对于每一个可能的x,计算信息量之差】\\ =\sum_{x∈X}p_x(-log(q_x)-(-log(p_x)) \\ =\sum_{x∈X}p_x(-log(q_x))-\sum_{x∈X}p_x(-log(p_x)) 【称为相对熵】\\ =\sum_{x∈X}p_xlog(\frac{p_x}{q_x}) DKL(P∣∣Q)=xXpx(lQ(qx)lP(px))【对于每一个可能的x,计算信息量之差】=xXpx(log(qx)(log(px))=xXpx(log(qx))xXpx(log(px))【称为相对熵】=xXpxlog(qxpx)

  • D K L ( P ∣ ∣ Q ) = ∑ x ∈ X p x l o g ( p x q x ) D_{KL}(P||Q)=\sum_{x∈X}p_xlog(\frac{p_x}{q_x}) DKL(P∣∣Q)=xXpxlog(qxpx),KL散度的值越小,Q分布越接近P分布;
  • 根据吉布斯不等式,KL散度的值一定是大于等于0的;
  • KL散度不能用来衡量两个分布的距离,其原因在于KL散度不是对称的,即 D K L ( P ∣ ∣ Q ) 不等于 D K L ( Q ∣ ∣ P ) D_{KL}(P||Q)不等于D_{KL}(Q||P) DKL(P∣∣Q)不等于DKL(Q∣∣P)
  • KL散度通俗解释(英文原文):Kullback-Leibler Divergence Explained
  • KL散度通俗解释(翻译版本):KL散度介绍

(4) 交叉熵

我们一般会从极大似然估计角度,来推导交叉熵公式。

二分类交叉熵公式推导:

在这里插入图片描述

为了计算方便,我们对似然函数求对数,并加负号,这样就从求解使似然函数最大时的参数,变为求解使交叉熵最小时的参数。
J = − 1 n ∑ i = 1 n ( y i l o g y i ^ + ( 1 − y i ) l o g ( 1 − y i ^ ) ) 在机器学习或深度学习中,其中 n 为批量样本数 J=-\frac{1}{n}\sum_{i=1}^n(y_ilog \hat{y_i}+ (1-y_i)log(1-\hat{y_i})) \\ 在机器学习或深度学习中,其中n为批量样本数 J=n1i=1n(yilogyi^+(1yi)log(1yi^))在机器学习或深度学习中,其中n为批量样本数
多分类交叉熵公式:
对于多项分布,我们假设有 m 个类别,模型预测各个类别的分数分别为 ( y i 1 ^ , y i 2 ^ , . . . , y i m ^ ) ,则有: p ( y i = 1 ∣ x i , w ) = y i 1 ^ p ( y i = 2 ∣ x i , w ) = y i 2 ^ . . . . . . p ( y i = c ∣ x i , w ) = y i c ^ . . . . . . p ( y i = m ∣ x i , w ) = y i m ^ 同样,合并上述公式: p ( y i ∣ x i , w ) = y i 1 ^ y i 1 y i 2 ^ y i 2 . . . y i m ^ y i m = ∏ c = 1 m y i c ^ y i c 对于 n 次观察结果 ( 批量样本 n ) ,则有似然函数: L ( w ∣ X , Y ) = f ( Y = y 1 , . . . , y n ∣ X = x 1 , . . . , x n , w ) = ∏ i = 1 n ∏ c = 1 m y i c ^ y i c 同样,为了计算方便,我们对似然函数求对数,并加负号: J = − 1 n l o g L ( w ∣ X , Y ) = − 1 n ∑ i = 1 n ∑ c = 1 m y i c l o g y i c ^ 对于多项分布,我们假设有m个类别,模型预测各个类别的分数分别为(\hat{y_{i1}},\hat{y_{i2}},...,\hat{y_{im}}),则有:\\ p(y_i=1|x_i,w)=\hat{y_{i1}}\\ p(y_i=2|x_i,w)=\hat{y_{i2}}\\ ......\\ p(y_i=c|x_i,w)=\hat{y_{ic}}\\ ......\\ p(y_i=m|x_i,w)=\hat{y_{im}}\\ 同样,合并上述公式:\\ p(y_i|x_i,w)=\hat{y_{i1}}^{y_{i1}}\hat{y_{i2}}^{y_{i2}}...\hat{y_{im}}^{y_{im}} =\prod\limits_{c=1}^{m}\hat{y_{ic}}^{y_{ic}} \\ 对于n次观察结果(批量样本n),则有似然函数:\\ L(w|X,Y)=f(Y=y_1,...,y_n|X=x_1,...,x_n,w)=\prod\limits_{i=1}^{n}\prod\limits_{c=1}^{m}\hat{y_{ic}}^{y_{ic}}\\ 同样,为了计算方便,我们对似然函数求对数,并加负号:\\ J=-\frac{1}{n}logL(w|X, Y)=-\frac{1}{n}\sum\limits_{i=1}^n\sum\limits_{c=1}^my_{ic}log\hat{y_{ic}} 对于多项分布,我们假设有m个类别,模型预测各个类别的分数分别为(yi1^,yi2^,...,yim^),则有:p(yi=1∣xi,w)=yi1^p(yi=2∣xi,w)=yi2^......p(yi=cxi,w)=yic^......p(yi=mxi,w)=yim^同样,合并上述公式:p(yixi,w)=yi1^yi1yi2^yi2...yim^yim=c=1myic^yic对于n次观察结果(批量样本n),则有似然函数:L(wX,Y)=f(Y=y1,...,ynX=x1,...,xn,w)=i=1nc=1myic^yic同样,为了计算方便,我们对似然函数求对数,并加负号:J=n1logL(wX,Y)=n1i=1nc=1myiclogyic^
通过上述推导,我们就确定了多分类的交叉熵损失函数:
l o s s = − 1 n ∑ i = 1 n ∑ c = 1 m y i c l o g y i c ^ n 为批量样本, m 为分类数 loss=-\frac{1}{n}\sum\limits_{i=1}^n\sum\limits_{c=1}^my_{ic}log\hat{y_{ic}} \\ n为批量样本,m为分类数 loss=n1i=1nc=1myiclogyic^n为批量样本,m为分类数
m = 2 m=2 m=2时候,就是二分类交叉熵损失函数:
l o s s = − 1 n ∑ i = 1 n ∑ c = 1 2 y i c l o g y i c ^ = − 1 n ∑ i = 1 n ( y i 1 l o g y i 1 ^ + y i 2 l o g y i 2 ^ ) 令 y i 1 = y i ,那么 y i 2 = 1 − y i l o s s = − 1 n ∑ i = 1 n ( y i l o g y i ^ + ( 1 − y i ) l o g ( 1 − y i ^ ) ) n 为批量样本,和之前推导一样 loss=-\frac{1}{n}\sum\limits_{i=1}^n\sum\limits_{c=1}^2y_{ic}log\hat{y_{ic}} \\ =-\frac{1}{n}\sum\limits_{i=1}^n(y_{i1}log\hat{y_{i1}}+y_{i2}log\hat{y_{i2}})\\ 令y_{i1}=y_{i},那么y_{i2}=1-y_{i}\\ loss=-\frac{1}{n}\sum\limits_{i=1}^n(y_{i}log\hat{y_{i}}+(1-y_{i})log(1-\hat{y_i}))\\ n为批量样本,和之前推导一样 loss=n1i=1nc=12yiclogyic^=n1i=1n(yi1logyi1^+yi2logyi2^)yi1=yi,那么yi2=1yiloss=n1i=1n(yilogyi^+(1yi)log(1yi^))n为批量样本,和之前推导一样

我们现在从相对熵的角度,来看待交叉熵。那么,相对熵和交叉熵的有什么关系呢?
D K L ( P ∣ ∣ Q ) = ∑ x ∈ X p x ( − l o g ( q x ) − ( − l o g ( p x ) ) = ∑ x ∈ X p x ( − l o g ( q x ) ) − ∑ x ∈ X p x ( − l o g ( p x ) ) = ∑ x ∈ X p x ( l o g ( p x ) ) − ∑ x ∈ X p x ( l o g ( q x ) ) 令 H ( p , q ) = − ∑ x ∈ X p x ( l o g ( q x ) ) ,那么 D K L ( P ∣ ∣ Q ) = H ( p ) + H ( p , q ) D_{KL}(P||Q)=\sum_{x∈X}p_x(-log(q_x)-(-log(p_x)) \\ =\sum_{x∈X}p_x(-log(q_x))-\sum_{x∈X}p_x(-log(p_x)) \\ =\sum_{x∈X}p_x(log(p_x))-\sum_{x∈X}p_x(log(q_x)) \\ 令H(p,q)=-\sum_{x∈X}p_x(log(q_x)),那么\\ D_{KL}(P||Q)=H(p)+H(p,q) \\ DKL(P∣∣Q)=xXpx(log(qx)(log(px))=xXpx(log(qx))xXpx(log(px))=xXpx(log(px))xXpx(log(qx))H(p,q)=xXpx(log(qx)),那么DKL(P∣∣Q)=H(p)+H(p,q)

  • 在机器学习中,训练数据的分布通常是固定的,因此 H ( p ) H(p) H(p)是一个常数,不影响模型的训练过程。我们的目标是使模型预测的概率分布q尽可能接近真实分布p,其实就是最小化交叉熵 H ( p , q ) H(p,q) H(p,q)
  • 所以我们把交叉熵损失函数定义为:

H ( p , q ) = − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) H(p,q)=-\sum\limits_{i=1}^np(x_i)log(q(x_i)) H(p,q)=i=1np(xi)log(q(xi))

总结如下:

在这里插入图片描述

通俗讲解这几个概念的视频,可以参考:

“交叉熵”如何做损失函数?打包理解“信息量”、“比特”、“熵”、“KL散度”、“交叉熵”

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

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

相关文章

SpringAMQP-消息转换器

这边发送消息接收消息默认是jdk的序列化方式,发送到服务器是以字节码的形式,我们看不懂也很占内存,所以我们要手动设置一下 我这边设置成json的序列化方式,注意发送方和接收方的序列化方式要保持一致 不然回报错。 引入依赖&#…

STM32_HAL_TIM_1介绍

1.F1的定时器类型(高的拥有低级的全部功能) 高级定时器(TIM1和TIM8): 16位自动重装载计数器。支持多种工作模式,包括中心对齐模式、边沿对齐模式等。可以产生7个独立的通道,用于PWM、输出比较、…

Cosmo Bunny Girl

可爱的宇宙兔女郎的3D模型。用额外的骨骼装配到Humanoid上,Apple混合了形状。完全模块化,包括不带衣服的身体。 技术细节 内置,包括URP和HDRP PDF。还包括关于如何启用URP和HDRP的说明。 LOD 0:面:40076,tris 76694,verts 44783 装配了Humanoid。添加到Humanoid中的其他…

测试用例编写规范

1.1目的 统一测试用例编写的规范,为测试设计人员提供测试用例编写的指导,提高编写的测试用例的可读性,可执行性、合理性。为测试执行人员更好执行测试,提高测试效率,最终提高公司整个产品的质量。 1.2使用范围 适用…

数字人实训室助推元宇宙人才培养

如今,全身动作捕捉设备已经大量应用在影视、动画、游戏领域,在热门的元宇宙内容领域中,全身动作捕捉设备逐步发挥着重要的作用,在包括体育训练、数字娱乐虚拟偶像、虚拟主持人、非物质文化遗产保护等等场景,数字人实训…

第5章 处理GET请求参数

1 什么是GET请求参数 表单GET请求参数是指在HTML表单中通过GET方法提交表单数据时所附带的参数信息。在HTML表单中,可以通过表单元素的name属性来指定表单字段的名称,通过表单元素的value属性来指定表单字段的值。当用户提交表单时,浏览器会将…

【数据结构】有关栈和队列相互转换问题

文章目录 用队列实现栈思路实现 用栈实现队列思路实现 用队列实现栈 Leetcode-225 用队列实现栈 思路 建立队列的基本结构并实现队列的基本操作 这部分这里就不多说了,需要的可以看笔者的另一篇博客 【数据结构】队列详解(Queue) 就简单带过一下需要实现的功能 …

金融业开源软件应用 评估规范

金融业开源软件应用 评估规范 1 范围 本文件规定了金融机构在应用开源软件时的评估要求,对开源软件的引入、维护和退出提出了实现 要求、评估方法和判定准则。 本文件适用于金融机构对应用的开源软件进行评估。 2 规范性引用文件 下列文件中的内容通过文中的规范…

数据科学:使用Optuna进行特征选择

大家好,特征选择是机器学习流程中的关键步骤,在实践中通常有大量的变量可用作模型的预测变量,但其中只有少数与目标相关。特征选择包括找到这些特征的子集,主要用于改善泛化能力、助力推断预测、提高训练效率。有许多技术可用于执…

【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL(已更新)

1.一直以来想写下基于kettle的系列文章,作为较火的数据ETL工具,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下FTP服务器相关知识体系 3.欢迎批评指正,跪谢一键三连! kettle访问FTP服务器文件并处理数据至PostgreS…

【Unity UI系统介绍】

Unity UI系统介绍 想了解更多游戏开发知识,可以扫描下方二维码,免费领取游戏开发4天训练营课程 Unity UI 是 Unity 引擎中的一套用户界面(UI)系统,允许开发者创建和管理游戏的用户界面。 Canvas:Canvas 是 Unity UI 的核心组件…

如何3分钟快速训练一个属于自己的(暴躁老哥、猫娘)AI大模型?(弱智吧经典问题为例)

首先我们进入谷歌Gemini:Gemini - Google DeepMind 然后我们进入官网看见左边的几个选项 选择Create new prompt创建新的提示 选择结构化提示 点击action可以增加列,也就是设置更多回答或者选项 那么那个温度(Temperature)是什么…

二、安装、使用Grafana

目录 一、安装Grafana 二、使用grafana 一、安装Grafana 官网:https://grafana.com/ 账号:admin 密码:xxxxxx [rootrabbitmq_2 prometheus]# [rootrabbitmq_2 prometheus]# wget https://dl.grafana.com/enterprise/release/grafana-enter…

redis安装与群集

项目需求: 1.安装redis 2.测试redis性能,100个并发连接,100000个请求测试 3.在当前数据库下创建键值对 a11,a22,a33,a44,a55 4.查看键值对 5.将a1改名为a11,将a2删除 5.将a3移动到1号数据库 6搭建redis集群(可选) 测试环境…

第六十节 Java设计模式 - 过滤器/标准模式

Java设计模式 - 过滤器/标准模式 过滤器模式使用不同的条件过滤对象。 这些标准可以通过逻辑操作链接在一起。 过滤器模式是一种结构型模式。 例子 import java.util.List; import java.util.ArrayList;class Employee {private String name;private String gender;private…

【Spring】Springmvc学习Ⅲ

# Springmvc学习Ⅲ 文章目录 一、图书管理系统1. 功能1.1 登录前端接口前端代码后端接口后端代码 1.2 图书列表展示步骤:图书类代码mock数据代码控制层调用代码服务层代码(存储除数据库中需要存储的数据) 2. 分层控制2.1 三层架构2.2 代码重…

C语言实现简单的日历功能

开篇 本篇文章的题目来源于《编程珠玑》第三章课后习题的第四个问题,也是我会手动实现的本章的最后一个功能。 问题概要 给定月和年,使用字符数组生成该月的日历(含有周几的日历)。 思路分析 为了生成给定年份中某个月的日历&…

【光线重塑技术】小姐姐,美得不可方物——lllyasviel/ic-light

在英伟达自18年宣布光追技术之后,RTX显卡也成了目前Steam游戏的常客。就连 AMD、Intel 和 Apple Silicon 都宣布要在GPU上支持光追算法。这次我要介绍的是huggingface上比较火的relight技术—— ic-light 介绍 IC-Light 是一个操纵图像照明的项目。 IC-Light &qu…

商务分析方法与工具(十):Python的趣味快捷-公司财务数据最炫酷可视化

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…

【FreeRTOS 快速入门】-- 1、STM32工程移植FreeRTOS

目录 一、新建STM32工程 为了示范完整的移植过程,我们从0开始,新建一个标准的STM32点灯工程。 (本篇以CubeMX作示范,CubeIDE操作近同,可作对比参考) 1、新建工程 选择 芯片型号 新建工程 2、搜索芯片型号…