神经网络数学基础-香浓信息量、信息熵、交叉熵、相对熵(KL散度)

本文主要是介绍神经网络数学基础-香浓信息量、信息熵、交叉熵、相对熵(KL散度),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

香浓信息量

这里以连续随机变量的情况为例。设 p 为随机变量X的概率分布,即 p(x) 为随机变量 XX=x 处的概率密度函数值,随机变量 Xx 处的香农信息量定义为:

-log_2p(x)=log_2\frac{1}{p(x)}

这时香农信息量的单位为比特,香农信息量用于刻画消除随机变量在处的不确定性所需的信息量的大小

如果非连续型随机变量,则为某一具体随机事件的概率。

为什么是这么一个表达式呢?想具体了解的可以参考如下的讨论:

知乎-香农的信息论究竟牛在哪里?

香农信息量_weixinhum-CSDN博客

 

信息熵

由香农信息量可以知,对于一个已知概率的事件,需要多少的数据量能完整地把它表达清楚。

信息熵则刻画的是,对于整个系统而言,表达系统整体所需要的信息量。比如,dddLdddYdddXddd 这段字母,虽然 L、Y 和 X 的香农信息量比较大,但他们出现的次数明显要比 d 少很多,因此需要信息熵来评估整体系统的信息量。

信息熵=事件香农信息量×事件概率

对于连续随机变量,信息熵 H(p) 可表示为:

H(p)=-\int p(x)\log p(x)dx

对于离散随机变量,信息熵 H(p) 可表示为:

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

注意:前面在说明的时候 log 是以 2 为底的,但是一般情况下在神经网络中,默认以指数 e 为底,这样算出来的香农信息量虽然不是最小的可用于完整表示事件的比特数,但对于信息熵的含义来说是区别不大的。其实只要这个底数是大于 1 的,都能用来表达信息熵的大小。

举例如下:

zbbbb 的信息熵为:

zrcdf  的信息熵为:

计算所得第二个值较大,即信息量较大,显然观察 zrcdf 的信息量会大于 zbbbb 的信息量,计算符合观察。

 

交叉熵

假设 \widetilde{p}(x) 是用来拟合 p(x) 的概率分布,x 属于 p 的样本空间,交叉熵用于衡量 \widetilde{p} 在拟合 p 的过程中,用于消除不确定性而充分使用的信息量大小。

注意:理解为衡量 \widetilde{p} 为了拟合 p 所付出的努力。

另外,交叉熵定义里的 “充分使用” 和信息熵定义里的 “所需”的区别,“充分使用” 不一定能达到全部,“所需” 是指全部。

由于在每一个点 X=x\widetilde{p} 的香农信息量为 -log_2\widetilde{p}(x),也就是在点 X=x 处,\widetilde{p} 消除不确定性而充分使用的信息量为-log_2\widetilde{p}(x)

注意:理解为衡量 \widetilde{p}X=x 处为了拟合p所作的努力),那么就可以计算出在整个样本空间上 \widetilde{p} 消除不确定性而充分使用的总体信息量,即 -log_2\widetilde{p}(x) 的数学期望,由于每个 x 的权重为 p(x),因此交叉熵 H(p,\widetilde{p}) 为:

H(p,\widetilde{p})=-\int p(x)\log \widetilde{p}(x)dx

 

相对熵、KL 散度

又被称为 KL 散度或信息散度,是两个概率分布间差异的非对称性度量 。

在信息论中,相对熵等价于两个概率分布的信息熵的差值,若其中一个概率分布为真实分布,另一个为理论(拟合)分布,则此时相对熵等于交叉熵与真实分布的信息熵之差,表示使用理论分布拟合真实分布时产生的信息损耗 。

相对熵的定义为:

D_{KL}(p||\widetilde{p})=\sum_{i=1}^n[p(x_i)\log p(x_i)-p(x_i)\log \widetilde{p}(x_i)]=\sum_{i=1}^n[p(x_i)\log \frac{p(x_i)}{\widetilde{p}(x_i)}]

其中,p 为真实概率分布,\widetilde{p} 为预测概率分布

该公式的字面上含义就是:真实事件信息熵拟合事件香农信息量与真实事件概率的乘积 的差的累加。

当预测的概率分布于真实事件的概率分布相似时,KL 散度的绝对值就会比较小;反之,变大。

 

相对熵是不对称的。

但为什么有缺点,深度学习还要用 KL 散度呢?参考博客:

https://blog.csdn.net/weixinhum/article/details/85064685

 

这篇关于神经网络数学基础-香浓信息量、信息熵、交叉熵、相对熵(KL散度)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/692319

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

浅析Python中的绝对导入与相对导入

《浅析Python中的绝对导入与相对导入》这篇文章主要为大家详细介绍了Python中的绝对导入与相对导入的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1 Imports快速介绍2 import语句的语法2.1 基本使用2.2 导入声明的样式3 绝对import和相对i

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件