欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

相对熵与交叉熵_熵、KL散度、交叉熵

发布时间:2025/3/8 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 相对熵与交叉熵_熵、KL散度、交叉熵 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
公众号关注 “ML_NLP”设为 “星标”,重磅干货,第一时间送达!

机器学习算法与自然语言处理出品

@公众号原创专栏作者 思婕的便携席梦思

单位 | 哈工大SCIR实验室

KL散度 = 交叉熵 - 熵

  • 1. 熵(Entropy)

  • 抽象解释:熵用于计算一个随机变量的信息量。对于一个随机变量X,X的熵就是它的信息量,也就是它的不确定性。
    形象例子:有两个随机变量X和Y,或者说两个事件,X表示“投一枚硬币,落地时,哪一面朝上”;Y表示“太阳从哪个方向升起”。对于随机变量X,“正面朝上”和“反面朝上”的概率各为0.5;对于随机变量Y,“太阳从东边升起”的概率为1,从另外三个方向升起的概率为0。由此可以看出,事件X的不确定性大于事件Y,因此事件X的熵也就大于事件Y。
    那么具体该如何计算熵呢?
    熵的数学定义为:


    举个例子,依旧是投硬币的那个事件:
    我们令


    那么它的熵为:


    从编码的角度理解熵
    对于任意一个离散型随机变量,我们都可以对其进行编码。例如我们可以把字符看出一个离散型随机变量。
    根据shannon的信息论,给定一个字符集的概率分布,我们可以设计一种编码,使得表示该字符集组成的字符串平均需要的比特数最少。假设这个字符集是X,对x∈X,其出现概率为P(x),那么其最优编码(哈夫曼编码)平均需要的比特数等于这个字符集的熵。

  • 1. KL散度(Kullback-Leibler divergence)

  • 抽象解释:KL散度用于计算两个随机变量的差异程度。相对于随机变量X,随机变量Y有多大的不同?这个不同的程度就是KL散度。KL散度又称为信息增益,相对熵。需要注意的是KL散度是不对称的,就是说:X关于Y的KL散度 不等于 Y关于X的KL散度。
    形象例子:
    X表示“不透明的袋子里有2红2白五个球,随机抓一个球,球的颜色”事件,
    Y表示“不透明的袋子里有3红2白五个球,随机抓一个球,球的颜色”事件,
    Z表示“不透明的袋子里有1红1白两个球,随机抓一个球,球的颜色”事件。
    由于在事件X和Z中,都是P(红)=0.5 P(白)=0.5;而在事件Y中P(红)=0.6 P(白)=0.4,所以我们认为:相对于事件X,事件Y的差异程度小于事件Z。
    那么该如何具体计算KL散度呢?
    KL散度的数学定义为:
    对于离散型随机变量,我们定义A和B的KL散度为:


    对于离散型随机变量,我们定义A和B的KL散度为:


    从编码的角度理解KL散度
    在同样的字符集上,假设存在另一个概率分布Q(X)。如果用概率分布P(X)的最优编码(即字符x的编码长度等于log[1/P(x)]),来为符合分布Q(X)的字符编码,那么表示这些字符就会比理想情况多用一些比特数。KL-divergence就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离。

  • 1. 交叉熵(Cross-Entropy)

  • 抽象解释:我所理解的交叉熵的含义,与KL散度是类似的,都是用于度量两个分布或者说两个随机变量、两个事件不同的程度。
    具体例子:与KL散度类似
    交叉熵的数学定义:


    比较熵、KL散度和交叉熵的数学定义会发现:
    KL散度 = 交叉熵 - 熵
    从编码的角度理解交叉熵熵的意义是:对一个随机变量A编码所需要的最小字节数,也就是使用哈夫曼编码根据A的概率分布对A进行编码所需要的字节数;KL散度的意义是:使用随机变量B的最优编码方式对随机变量A编码所需要的额外字节数,具体来说就是使用哈夫曼编码却根据B的概率分布对A进行编码,所需要的编码数比A编码所需要的最小字节数多的数量;交叉熵的意义是:使用随机变量B的最优编码方式对随机变量A编码所需要的字节数,具体来说就是使用哈夫曼编码却根据B的概率分布对A进行编码,所需要的编码数。

    推荐阅读:

    【长文详解】从Transformer到BERT模型

    赛尔译文 | 从头开始了解Transformer

    百闻不如一码!手把手教你用Python搭一个Transformer

    总结

    以上是生活随笔为你收集整理的相对熵与交叉熵_熵、KL散度、交叉熵的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。