机器学习——熵,交叉熵,相对熵

熵—不确定性角度

通常,一个信源发送什么符号是不确定的,衡量它可以根据其出现的概率来度量。概率大,出现的机会就大,不确定性就小;反之不确定性就大。在信源中,考虑的不是某一单个符号的不确定性,而是考虑这个信源所有可能发生情况的平均不确定性。

若信源符号有n种取值:u1,u2,...,un,其对应概率分别为p1,p2,...,pn,且各种符号的出现彼此独立。这时,信源的平均不确定性 定义为单个符号概率的负对数统计平均值,将其命名为信息熵。即H(U)=E[logpi]=i=1npilogpi(这里负对数是一个减函数,合乎上文不确定性与概率的关系)

熵——信息量角度

在信息论中,熵是接收的每条消息中包含的信息的平均量,又被称信息熵。这里,“消息”代表来自分布或者数据流中的事件、样本或特征。来自信源的另一个特征是样本的概率。这里的想法是,比较不可能发生的事件,当它发生了,会提供更多的信息。由于一些其它的原因,把信息(熵)定义为概率分布对数的相反数是有道理的。事件的概率分布和每个事件的信息量构成了一个随机变量,这个随机变量的均值即期望就是这个分布产生的信息量的平均值即熵。

熵的计算

抛硬币事件:正面向上,反面向上的概率分别为p1,p2,则该事件的信息熵为H=p1log1+p2logp2=p1log1+(1p1)log(1p1),这个信息熵函数是一个凸函数,有一个最大值即正面
向上和反面向上的概率值相等时,熵取最大值为1(对数是以2为底,熵的单位是比特)。

我们无法预知下一个硬币抛掷的结果是什么,因此每一次抛硬币都是不可预测的,因此使用一枚正常的硬币进行若干次抛掷,这个时间的熵至多是一个比特,因为结果不外乎两个——正面或者
反面,可以用0,1编码。而且两个结果是彼此独立的,若进行n次独立实验,则熵可用长度为n的比特流表示。
image

交叉熵

在信息论中,基于相同事件测度的两个概率分布p和q的交叉熵是指,用一个近似分布q(或理论分布q)进行编码时,在事件集合中唯一标识一个事件所需的平均比特数即H(p,q)=Ep[logq], 离散和连续情况下形式如下:

H(p,q)=xp(x)logq(x)

H(p,q)=p(x)logq(x)dx

相对熵

相对熵,又被称之为KL散度或者信息散度,是对两个概率分布之间差异性的一种度量,这种度量是非对称性的。

定义

P(x),Q(x)是随机变量X上的两个概率分布,则在离散和联想随机变量的情况下,相对熵的定义分别为:

KL(P||Q)=P(x)logP(x)Q(x)

KL(P||Q)=P(x)logP(x)Q(x)dx

一般P表示真实的数据分布(可能未知),而Q是理论的概率分布或者是对P的近似分布,KL散度就是度量使用基于Q的分布来编码服从P的分布的样本所需的额外的平均比特数。

这个定义可以由熵和交叉熵的概念推导出。使用基于P的分布来编码服从P分布的样本的平均比特数是熵H(P); 使用Q分布来编码服从P分布的样本所需要的平均比特数就是交叉熵H(P, Q)。这两者的差值就是使用所需要的额外比特数即KL(P||Q)=H(P,Q)H(P)

参考

https://baike.baidu.com/item/信息熵/7302318

https://baike.baidu.com/item/相对熵/4233536

https://zh.m.wikipedia.org/zh-hans/交叉熵

https://www.cvmart.net/community/detail/3939

posted @   星辰大海,绿色星球  阅读(150)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-10-05 人脸大规模分类—计算过程
点击右上角即可分享
微信分享提示