首页 > 其他分享 >信息熵、交叉熵、KL散度公式的简单理解

信息熵、交叉熵、KL散度公式的简单理解

时间:2023-05-20 10:04:24浏览次数:50  
标签:概率 交叉 信息量 散度 KL 信息熵 事件


整理:我不爱机器学习

1 信息量

信息量是对信息的度量,就跟时间的度量是秒一样,考虑一个离散的随机变量 x 的时候,当观察到的这个变量的一个具体值的时候,我们接收到了多少信息呢?

例如听到太阳从东方升起,这样信息对于我们来说价值不大,因为这是一个必然事件,所以这个信息传递给我们的信息量为 0。得到大厂 offer 通知书,如果在之前没有任何征兆时,这个信息量对于我们来说就很大。

例如投硬币的游戏有两种可能,分别是正面和反面朝上,可以用 H 表示正面朝上,用字母 T 表示反面朝上。我们通过传递 H 或者 T 信息给其他人告诉不在场的人关于游戏结果,当然也可以用 0 表示反面朝上,而 1 表示正面朝上来传递这个信息。

大家都了解过计算机,就是 1 个单位比特来表示 2 种可能,那么也就是我们用 1 个比特单位就可以描述投掷硬币游戏的结果传递给其他人。信息帮助我们消除了 2 种情况中出现哪一个面的不确定性。

下面来玩一个游戏,在两个人之间设立一个屏障,这个屏障只能传递 0 或者 1 电信号。有两个人分别位于屏障两端,暂且叫他们 A 和 B,A 从 A,B,C,D 字母中,随机取出一个字母,然后通过 0 和 1 组合方式将其抽取字母 A 信息通过屏障告诉 B,需要 2 个bit 可以将信息传递给 例如 00 表示 A 01 表示 B 10 表示 C 11 表示 D。也就是需要两个 bit 的信息。

信息熵、交叉熵、KL散度公式的简单理解_算法

上面事件中所有等概率事件的数量取以 2 为底的对数,刚好是传递这个事件结果所需要的信号数量

一个系统等可能事件越多,需要描述事件的比特位就越大。这里假设的等概率事件恰恰都可以用几个 2 连乘所表示。那么对于随机事件结果是 10 种可能的概率事件,又应该如何表示其信息量?

可以 4 bit 信息来表示 10 种可能,不过这里浪费了 6 种,当然可以用 信息熵、交叉熵、KL散度公式的简单理解_概率系统_02

信息量刻画一个事实,就是一个系统中等可能的事件越多,那么传输其中一个事件的信息量就越大。等可能事件越多也就意味着哪个事件发生不确定性越大。

信息熵、交叉熵、KL散度公式的简单理解_概率系统_03

这里 Ω 系统微观状态的数量对应系统等概率事件的数量,那么可以把这种度量不确定性的信息量称之为信息量

不过到现在为止我们研究系统是等可能事件组成的,可以看成理想系统,在实际中大多数情况下,系统都是由不同概率的事件所组成的。

实际上我们可以把一个概率事件转为在等概率事件系统中发生某一个事件的概率。也就是总能把一个概率事件转换为 N 个等概率事件,例如从 N 个球中摸出某一个球的概率。例如中彩票的概率为 2kw 分之一,也就是从 2kw 中个球摸中奖球的概率,所以可以 1 除以概率值 p 就可能反推得到等可能概率数量。根据上式可以得到信息量的概率表达式:

信息熵、交叉熵、KL散度公式的简单理解_算法_04

即对于某一事件,其发生的概率越小,那么其信息量越大;发生的概率越大,那么其信息量越小(最小不小于0)。上式中的 信息熵、交叉熵、KL散度公式的简单理解_信息熵_05 可以理解为随机事件 信息熵、交叉熵、KL散度公式的简单理解_机器学习_06

从这里可以发现一个事实:如果某一事件的概率为100%,那么其信息量为0,即已经确定的信息没有传递的价值

2 信息熵

还是投掷硬币为例假设现在投掷硬币正面朝上概率为 p 反面朝上概率为 q,将这两概率事件转换为等概率系统,分别转化为 1/p1/q 数量的等概率系统,这样就可以轻松计算出这 2 等概率系统信息量如下:

信息熵、交叉熵、KL散度公式的简单理解_算法_07

然后用 2 个等概率系统分别乘以其出现概率表求和就是当前系统信息量的期望,也就是信息熵的公式。

信息熵、交叉熵、KL散度公式的简单理解_信息熵_08

信息量度量的是一个具体事件发生了所带来的信息,而则是在结果出来之前对可能产生的信息量的期望,考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。说白了,信息熵就是信息量的数学期望。

信息熵意义

就像光速作为物理世界速度的极限,信息熵指出了通讯的极限。或者所数据压缩效率的极限。一切试图突破这个极限的行为都是无用功。对于存在多种可能信息,就可以通过编码方式来对数据进行压缩从而进行传输和存储。

3 交叉熵

信息论中,基于相同事件测度的两个概率分布p和q的交叉熵(英语:Cross entropy)是指,当基于一个“非自然”(相对于“真实”分布p而言)的概率分布q进行编码时,在事件集合中唯一标识一个事件所需要的平均比特数(bit)

给定两个概率分布pqp相对于q的交叉熵定义为:

信息熵、交叉熵、KL散度公式的简单理解_信息熵_09

其中,信息熵、交叉熵、KL散度公式的简单理解_信息熵_10信息熵、交叉熵、KL散度公式的简单理解_算法_11 的熵,信息熵、交叉熵、KL散度公式的简单理解_机器学习_12是从 信息熵、交叉熵、KL散度公式的简单理解_算法_11信息熵、交叉熵、KL散度公式的简单理解_概率论_14 的KL散度(也被称为 信息熵、交叉熵、KL散度公式的简单理解_算法_11 相对于 信息熵、交叉熵、KL散度公式的简单理解_概率论_14

对于离散分布 信息熵、交叉熵、KL散度公式的简单理解_算法_11信息熵、交叉熵、KL散度公式的简单理解_概率论_14,这意味着:

信息熵、交叉熵、KL散度公式的简单理解_概率论_19

对于连续分布也是类似的。我们假设 信息熵、交叉熵、KL散度公式的简单理解_算法_11信息熵、交叉熵、KL散度公式的简单理解_概率论_14 在测度 信息熵、交叉熵、KL散度公式的简单理解_信息熵_22 上是绝对连续的(通常 信息熵、交叉熵、KL散度公式的简单理解_信息熵_22 是Lebesgue measure on a Borel σ-algebra)。设 信息熵、交叉熵、KL散度公式的简单理解_信息熵_24信息熵、交叉熵、KL散度公式的简单理解_机器学习_25 分别为信息熵、交叉熵、KL散度公式的简单理解_算法_11信息熵、交叉熵、KL散度公式的简单理解_概率论_14

信息熵、交叉熵、KL散度公式的简单理解_机器学习_28

在大多数情况下,要在不知道分布p的情况下计算其交叉熵。例如在语言模型中, 基于训练集T创建了一个语言模型,而在测试集合上通过其交叉熵来评估该模型的准确率。p是语料中词汇的真实分布,而q是获得的语言模型预测的词汇分布。由于真实分布是未知的,我们不能直接计算交叉熵。在这种情况下,可以通过下式来估计交叉熵:

信息熵、交叉熵、KL散度公式的简单理解_概率系统_29

N是测试集大小,q(x)是在训练集上估计的事件x发生的概率。假设训练集是**p(x)**的真实采样,则此方法获得的是真实交叉熵的蒙特卡洛估计。

4 KL散度公式

KL散度的概念来源于概率论和信息论中。KL散度又被称为:相对熵、互熵、鉴别信息、Kullback熵、Kullback-Leible散度(即KL散度的简写)。在机器学习、深度学习领域中,KL散度被广泛运用于变分自编码器中(Variational AutoEncoder,简称VAE)、EM算法、GAN网络中。

KL散度的定义是建立在熵(Entropy)的基础上的。此处以离散随机变量为例,先给出熵的定义,再给定KL散度定义。

若一个离散随机变量X的可能取值为 信息熵、交叉熵、KL散度公式的简单理解_信息熵_30,而对应的概率为 信息熵、交叉熵、KL散度公式的简单理解_概率系统_31,则随机变量 X 的熵定义为:

信息熵、交叉熵、KL散度公式的简单理解_概率系统_32

注意:规定当 信息熵、交叉熵、KL散度公式的简单理解_概率论_33 时,信息熵、交叉熵、KL散度公式的简单理解_概率论_34

若有两个随机变量P、Q,且其概率分布分别为p(x)q(x),则p相对q的相对熵为:

信息熵、交叉熵、KL散度公式的简单理解_算法_35

之所以称之为相对熵,是因为其可以通过两随机变量的交叉熵(Cross-Entropy)以及信息熵推导得到。

针对上述离散变量的概率分布**p(x)、q(x)**而言,其交叉熵定义为:

信息熵、交叉熵、KL散度公式的简单理解_算法_36

在信息论中,交叉熵可认为是对预测分布q(x)用真实分布p(x)来进行编码时所需要的信息量大小

因此,KL散度或相对熵可通过下式得出:

信息熵、交叉熵、KL散度公式的简单理解_信息熵_37

从不同角度解读KL散度

  • 统计学意义上的KL散度:在统计学意义上来说,KL散度可以用来衡量两个分布之间的差异程度。若两者差异越小,KL散度越小,反之亦反。当两分布一致时,其KL散度为0。正是因为其可以衡量两个分布之间的差异,所以在VAEEMGAN中均有使用到KL散度。
  • 信息论角度的KL散度:KL散度在信息论中的专业术语为相对熵。其可理解为编码系统对信息进行编码时所需要的平均附加信息量。其中信息量的单位随着计算公式中log运算的底数而变化。

log底数为2:单位为比特(bit)
log底数为e:单位为奈特(nat)

参考:

http://www.ttshitu.com/news/53cb16eba9a046f58c57b2a3b06763ad.html
https://www.wikiwand.com/zh-hans/%E4%BA%A4%E5%8F%89%E7%86%B5
https://hsinjhao.github.io/2019/05/22/KL-DivergenceIntroduction/


标签:概率,交叉,信息量,散度,KL,信息熵,事件
From: https://blog.51cto.com/u_15479825/6317170

相关文章

  • 区块链实验-构建Merkle Tree
      主要内容:1.掌握MerkleTree的基本原理。2.编程实现MerkelTree的构建和数据完整性验证。实验条件:Win系统、Python实验内容:根据上图原理实现如下两个函数:#构建MerkleTreedefBuildTree(data):#验证数据完整性defValidate(hash,data):实现思......
  • sklearn之主成分分析pca
    sklearn之主成分分析pca在scikit-learn中,CA是主成分分析的缩写。主成分分析是一种常用的线性降维技术,可以将多维数据集降到较低的特征维度,并保留数据集的大部分特征信息。在sklearn中,使用PCA需要引入PCA模块,并通过实例化一个PCA对象来使用它的方法和属性。例如,可以使用PCA模块的f......
  • 用户backlog
    1.用户愿景:需要一个网上门诊挂号,约诊功能:需要病人可以在网上预约就诊,在网上就诊时需要填写姓名,年龄,x性别,病况,同时诊所可以收到挂号者的挂号信息。可以网上买药:在网上购买药物,需要药物按类别分为中药,西药,中成药。按治病类型分为,消炎药,感冒药,保健类,肠胃药可以预约......
  • Weakly-Supervised Temporal Action Localization by Inferring Snippet-Feature Affi
    0.前言相关资料:papergithub论文解读论文基本信息:领域:弱监督时序动作定位发表时间:Arxiv2023(2023.3.22)1.针对的问题伪标签生成是解决具有挑战性问题的一种很有前途的策略,但现有的大多数方法都局限于使用片段级分类结果来指导生成,而忽略了视频的......
  • 基恩士KV5500程序 基恩士KV5500,威伦通触摸屏,搭载KL-N20V.远程I
    基恩士KV5500程序基恩士KV5500,威伦通触摸屏,搭载KL-N20V.远程IO模块,KV-MC02V凸轮定位模块,KV-L2*V串行通信模块全自动锂电池注液机伺服轴进行位置控制,等经典应用,与雅马哈四轴机械手串行通信控制,电子秤通信控制,单工位单动调试模式程序,全自动模式,触摸屏与PLC交互控制页面功能,设备报......
  • ustc-csapp-attacklab
    这部分仍然属于第三章的内容,承接上一个实验。ustc版本相对原版本有些变化,但是主题没有变,都是作为黑客去攻击一个软件。这周要做的事情太多(工作难找......
  • KingbaseES 使用sys_bulkload远程导入
    前言sys_bulkload常见场景是本地导入数据,也可以在远程运行sys_bulkload,对数据库上的CSV文件进行导入。远程导入数据时候需要注意,csv文件和ctl文件所在服务器。以下举例展示整个远程导入的过程。测试环境V8R6C7演示目的将数据从IP2所在服务器导入到IP3远程服务器上。IP3......
  • 注册表RootKey简写:HKCR, HKCU, HKLM, HKU, and HKCC
    WhatDoHKCR,HKCU,HKLM,HKU,andHKCCMean?(RegistryRootKeys)By Rich Note: TogetabetterunderstandingofWindowsRegistrybasics,read thisguide.Ifyou’resomewhatfamiliarwiththeWindowsRegistry,you’venodoubtseenreferencestoHKCR,HKCU......
  • [Python]-sklearn模块-机器学习Python入门《Python机器学习手册》-05-处理分类数据
    《Python机器学习手册——从数据预处理到深度学习》这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习中python常用的这些库有更深入的理解,在应用中也能更为熟练。以下是根据书上的代码进行实操,注释......
  • sklearn.metrics.precision_recall_curve—计算不同概率阈值的精确召回对(仅限于二分类
    参考:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_curve.html在分类模型的性能评估指标总结章节中,提到的Precision-Recall曲线可通过sklearn库中的precision_recall_curve函数计算而得。语法格式sklearn.metrics.precision_recall_cu......