熵及其相关概念

news2024/9/25 21:29:12

文章目录

  • 一、什么是熵?
  • 二、相对熵(KL散度)
  • 三、交叉熵
  • 四、条件熵,联合熵,互信息


一、什么是熵?

 
熵,entropy,一个简简单单的字却撑起了机器学习的半壁江山,熵起源于热力学,代表一个热力系统的混乱程度,系统越混乱,熵越大。而机器学习中的熵是信息熵,是香农借鉴热力学熵而创造的概念。
 
本节的说明是借鉴王木头的YouTube视频而来的。
 
讨论熵的概念之前,先要解释清楚的是信息量这个概念,信息量的定性说明:针对某个不确定事件,将其变为确定性事件所需要的信息含量的度量。我们先不从定量的角度定义信息量,而是先给一个例子来说明不同情况下的不同信息量大小:
 
少年时期的迈特凯和卡卡西,参加忍者学校入学考试,毫无疑问,身为天才的卡卡西几乎是一定可以顺利通过入学考试,换而言之,顺利入学概率很大,接近100%,假设为99%;相反,常年被嘲笑的吊车尾迈特凯顺利入学的概率就小的多了,我们假设为10%。现在入学考试已经举行完毕,入学名单也公布了,但是你还没有看,我告诉你说卡卡西顺利入学,你很可能会说,这也没什么信息量,卡卡西那么强,入学不是理所当然的事情吗,但是我又告诉你,迈特凯也通过了入学考试,你很可能会感到惊讶,这个结果信息量太大了,这个吊车尾竟然也可以通过考试。
 
以上的例子就说明,一个事件发生概率越低,这件事由不确定变成确定事件所需要的信息量就越大。
 
现在我们看一下信息量的计算公式,我们首先从信息量的一些性质来说起,看信息量怎么计算才合理。有一个下忍开始了自己的职业生涯,需要一路升中忍,升上忍。事件1:该忍者顺利从下忍升为中忍,事件2:该忍者顺利从中忍升为上忍,事件3:该忍者顺利从下忍升为上忍。可以看出事件3时事件1和事件2的组合,用 P P P表示概率,用 H H H表示信息量,影响信息量大小的就是一个事件发生的概率,即信息量是概率的函数,即 H ( P ) H(P) H(P)我们理所应当保证:
P 1 ∗ P 2 = P 3 P_1*P_2 = P_3 P1P2=P3
H ( P 1 ) + H ( P 2 ) = H ( P 3 ) = H ( P 1 ∗ P 2 ) H(P_1)+H(P_2) = H(P_3) = H(P_1 * P_2) H(P1)+H(P2)=H(P3)=H(P1P2)
由以上公式可以看出,信息量计算公式需要满足一种从乘法到加法的转变,我们自然而言可以想到对数函数 l o g log log,至于 l o g log log的底我们是不很关心的,进一步观察,以概率为自变量,做对数计算得出的是负数,我们需要一个大于0的信息量(总不可能信息还会小于0吧),所以最后在公式前加上一个符号,就有了如下简单的公式:
H ( P i ) : = − l o g ( P i ) H(P_i) := -log(P_i) H(Pi):=log(Pi)
上面的公式之所以是 : = := :=,而不是 = = =(虽然最终计算结果上这两者并没有什么不同),是因为,这是一个定义,就是说这是公式作者(哈特莱)的发明,发明成这个样子是因为这样子可以满足我们对于信息量的设想和定义,也可以保证信息学其他概念的完整性和合理性,即逻辑自洽。当计算公式是以2为底的时候,计算出来的信息量的单位是 b i t bit bit
 
信息量的概念解释清楚之后,熵就很简单了,信息量是针对某个事件的不确定性度量,而是针对某个系统的不确定性度量,一个系统中可能包含了很多个事件。一个系统的熵的计算公式就是系统中所有事件信息量的概率加权求和:
H ( s y s t e m ) = − ∑ i = 0 n p i l o g ( p i ) H(system) = - \sum_{i=0}^{n}p_i log(p_i) H(system)=i=0npilog(pi)
其中 p i p_i pi是系统中某个事件的发生概率,系统中共有 n n n个事件。信息量和熵都用了 H H H表示,因为本质他们没有区别,都是不确定性的度量。
 
在机器学习中我们需要对比不同的模型,需要一个统一度量,熵就起到了这样一个作用。
 

二、相对熵(KL散度)

 
相对熵可以用来对比两个分布之间的差距,比如说我们有一个真实的分布 P P P,一个我们计算得到的分布 Q Q Q,我们想让计算结果 Q Q Q尽可能接近 P P P,怎么计算这个差距呢, K L   D i v e r g e n c e KL \space Divergence KL Divergence comes to recue。
在这里插入图片描述
 
观察以上公式,最后计算结果中的第二项 ∑ i = 1 m p i . ( − l o g 2 p i ) \sum_{i=1}^{m}p_i. (-log_2p_i) i=1mpi.(log2pi)其实就是真实分布 P P P的熵,而第一项 ∑ i = 1 m p i . ( − l o g 2 q i ) \sum_{i=1}^{m}p_i. (-log_2q_i) i=1mpi.(log2qi)就是著名的交叉熵。
 
可以看出,KL散度是不对称的,也就是说 D K L ( P ∣ ∣ Q ) ≠ D K L ( Q ∣ ∣ P ) D_{KL}(P||Q) \neq D_{KL}(Q||P) DKL(P∣∣Q)=DKL(Q∣∣P)。KL散度在任何情况下都是大于等于0的,这已经得到了证明,此处不说证明方法。
 

三、交叉熵

交叉熵被熟知是因为它经常用作分类问题的损失函数。它是KL散度计算的第一部分,由于第二部分已经固定为真实分布的熵,所以通常只取第一部分来衡量分布之间的差距。
关于交叉熵的深层意义,后续再补充。
 

四、条件熵,联合熵,互信息

 
有了上述的解释之后,之后这些衍生的概念就比较好理解:
条件熵:
H ( X ∣ Y ) = ∑ y ∈ Y p ( y ) H ( X ∣ Y = y ) H(X|Y) = \sum_{y\in Y} p(y) H(X|Y = y) H(XY)=yYp(y)H(XY=y)
 
联合熵:
H ( X , Y ) = ∑ y ∈ Y ∑ x ∈ X − p ( x , y ) . l o g ( p ( x , y ) ) H(X,Y) = \sum_{y \in Y} \sum_{x\in X} -p(x,y). log (p(x,y)) H(X,Y)=yYxXp(x,y).log(p(x,y))
 
互信息:
I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) = H ( Y ) − H ( Y ∣ X ) = H ( X ) + H ( Y ) − H ( X , Y ) I(X;Y) = H(X)-H(X|Y) = H(Y)-H(Y|X) = H(X)+H(Y)-H(X,Y) I(X;Y)=H(X)H(XY)=H(Y)H(YX)=H(X)+H(Y)H(X,Y)
 
它们之间的关系如下:
. . . . . . . . .

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

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

相关文章

怎么做3D可视化?NebulaGraph Explorer 的图数据库可视化实践告诉你答案

前言 图数据可视化是现代 Web 可视化技术中比较常见的一种展示方式,NebulaGraph Explorer 作为基于 NebulaGraph 的可视化产品,在可视化图数据领域积累了许多经验,尤其是在图形渲染性能等领域。本文将系统性分享下 NebulaGraph Explorer 在 …

串口通信协议

同步通信和异步通信 同步通信:需要时钟信号的约束,在时钟信号的驱动下两方进行数据交换,一般会选择在上升沿或者下降沿进行数据的采样,以及时钟极性和时钟相位【eg.SPI,IIC】。 异步通信:不需要时钟信号的同步,通过(…

只根据\r、\n、\r\n三种分隔符分割字符串splitlines()方法

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 只根据\r、\n、\r\n三种 分隔符分割字符串 splitlines()方法 选择题 对于以下python代码表述错误的一项是? s字符串1\n字符串2\r字符串3\r\n字符串4\n\r字符串5 print("【执行】s字符串…

移植FreeRTOS到STM32

移植FreeRTOS到STM32单片机上引言介绍什么是 RTOS?为什么嵌入式设备往往使用RTOS?FreeRTOS具体步骤总结引言 本文详细介绍如何移植FreeRTOS到STM32单片机上。移植操作系统是嵌入式开发的入门基础,单片机和嵌入式在物理上其实是一摸一样的&am…

二、MySQL 介绍及 MySQL 安装与配置

文章目录一、新手如何学习 MySQL二、MySQL 介绍2.1 百科定义2.2 创始人简历2.3 历史背景2.4 MySQL 的优势2.5 MySQL 版本2.6 MySQL 特性2.7 MySQL 的应用环境2.8 数据库专业术语2.9 MySQL 客户端和服务器架构(C/S架构)2.10 MySQL 内部结构三、MySQL 服务…

免费分享一个SpringBoot鲜花商城管理系统,很漂亮的

大家好,我是锋哥,看到一个不错的SpringBoot鲜花商城管理系统,分享下哈。 项目介绍 这是基于主流SpringBoot框架开发的项目,thymeleaf模版引擎,Mysql数据库,druid连接池,界面美观大方&#xff…

spring动态数据源,多数据源

Spring是如何支持多数据源的 Spring提供了一个AbstractRoutingDataSource类,用来实现对多个DataSource的按需路由,本文介绍的就是基于此方式实现的多数据源实践。 一、什么是AbstractRoutingDataSource 先看类上的注释: Abstract {link jav…

Goby安装与使用

Goby安装与使用1.Goby简介1.1.Goby介绍1.2.Goby下载2.Goby使用2.1.切换语言2.2.新建扫描2.2.1.设置扫描地址2.2.2.设置端口2.2.2.1.选中默认端口2.2.2.2.自定义端口2.2.3.漏洞2.2.3.1.通用Poc2.2.3.2.暴力破解2.2.3.3.全部漏洞2.2.3.4.自定义Poc2.2.4.开始扫描2.3.扫描情况2.3.…

【Eureka】如何实现注册,续约,剔除,服务发现

文章目录前言服务注册服务续约服务剔除(服务端去剔除过期服务)被动下线服务下线(主动下线)client发起的服务发现集群同步信息Work下载前言 Eureka是SpringCloud的具体实现之一,提供了服务注册,发现,续约,撤…

[ Linux Audio 篇 ] Type-C 转 3.5mm音频接口介绍

简介 常见的Type-C 转3.5mm 线有两种: 模拟Type-C转3.5mm音频线数字Type-C转3.5mm 音频线,也就是带DAC芯片的转换线 当使用Type-C转换3.5mm音频接口时,使用到的是这里面的SBU1、D-、D、CC四个针脚,手机会通过这四个针脚输出模拟…

信贷--------

定义 信贷:一切以实现承诺为条件的价值运动方式,如贷款、担保、承诺、赊欠等 信贷业务:本外币贷款、贴现、透支、押汇(表内信贷);票据承兑、信用证、保函、贷款承诺、信贷证明等(表外信贷&…

卷积神经网络硬件加速——INT8数据精度加速

卷积神经网络硬件加速——INT8数据精度加速 上一专题已介绍了一种通用的卷积神经网络硬件加速方法——Supertile,本文将介绍一种特殊的硬件加速方案,一种INT8数据精度下的双倍算力提升方案。 目前大部分卷积神经网络模型的数据类型都是32-bits单精度浮点…

android开发笔记002

ListView控件 <ListViewandroid:id"id/main_iv"android:layout_width"match_parent"android:layout_height"match_parent"android:layout_below"id/main_top_layout"android:padding"10dp"android:divider"null&qu…

TCP三次握手详解

三次握手是 TCP 连接的建立过程。在握手之前&#xff0c;主动打开连接的客户端结束 CLOSE 阶段&#xff0c;被动打开的服务器也结束 CLOSE 阶段&#xff0c;并进入 LISTEN 阶段。随后进入三次握手阶段&#xff1a; ① 首先客户端向服务器发送一个 SYN 包&#xff0c;并等待服务…

c++11 标准模板(STL)(std::deque)(二)

构造函数 std::deque<T,Allocator>::deque deque(); (1) explicit deque( const Allocator& alloc ); (2)explicit deque( size_type count, const T& value T(), const Allocator& alloc Allocator());(3)(C11 前) …

网络编程 完成端口模型

1.概念以及重叠IO存在的问题 2.完成端口代码详解 整体流程 使用到的新函数 1.CreateIoCompletionPort函数 该函数创建输入/输出 (I/O) 完成端口并将其与指定的文件句柄相关联&#xff0c;或创建尚未与文件句柄关联的 I/O 完成端口&#xff0c;以便稍后关联&#xff0c;即创建…

金融业务的数据存储选型

为什么用关系型数据库&#xff1f;最常见的理由是别人在用&#xff0c;所以我也得用&#xff0c;但是这个并不是理由&#xff0c;而是借口。 1 数据分类 选择数据存储类型前&#xff0c;先分析数据特点&#xff0c;才能针对性选择存储方案。 通常按数据与数据之间关系的复杂…

SSM2---spring

Spring spring环境搭建 创建一个空白模块&#xff0c;目录结构如下 在pom.xml文件中引入相关依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/…

基于SSM(Spring+SpringMVC+Mybatis)实现的个人博客系统,含数据库文件及详细说明

关于项目 该博客是基于SSM实现的个人博客系统&#xff0c;适合初学SSM和个人博客制作的同学学习。 最新版本支持用户注册&#xff0c;包含用户和管理员两个角色 。 博主已写了一篇该项目的毕业论文和录制了2个小时的代码讲解可以供大家学习&#xff0c;需要的可以联系博主&…

RFID在模块管理中的应用

应用背景 模具是工业生产的基础工艺装备&#xff0c;被称为“工业之母”。作为国民经济的基础行业&#xff0c;模具涉及机械、汽车、轻工、电子、化工、冶金、建材等各个行业&#xff0c;应用范围十分广泛。模具资产管理采用传统的人工纸质记录的方式已经无法及时有效的进行&am…