kl散度定义_熵、KL散度、交叉熵

公众号关注 “ ML_NLP ” 设为 “ 星标 ”,重磅干货,第一时间送达!

f9d3f26f48421cef3976b4d2c3556d3c.png

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

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

单位 | 哈工大SCIR实验室

KL散度 = 交叉熵 - 熵

  1. 1. 熵(Entropy)

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

533a572867dec68cde1ece8fc871b874.png


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

f47ce897a11168702e5d45f1afebe021.png


那么它的熵为:

868f9c75cd7851eac96be8591bb039fa.png


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

  1. 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散度为:

d31a700e3a554d1cde1925bba31da772.png


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

fc15d6f4f2f8bf7faf52064e4c957608.png


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

  1. 1. 交叉熵(Cross-Entropy)

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

d447f20a7cca7bb195151e1080706baf.png


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

e3beb5922bf7fb5ac634c6e877c285fa.png

推荐阅读:

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

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

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

debd9debff2d93752e4cb06022a2b64c.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值