栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

库尔巴克·莱布勒------KL散度

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

库尔巴克·莱布勒------KL散度

库尔巴克·莱布勒------KL散度
    • 散度
    • 信息的编码
    • "编码"分布
    • 编码分布
    • KL散度

散度

这里的散度是用来描述分布之间的距离,并非高数中的散度对应的物理意义。

信息的编码

一串数字可以通过二进制编码或者十进制编码,最终以有限的位数进行表示,同样的小数也可以进行这一表示,于是这一编码的具体形式体现在其表示的位数上,显然这是一个对数表示,比如1000以内的数需要三位十进制 l o g 10 1000 = 3 log_{10}1000=3 log10​1000=3,1024内的数字可以通过10位二进制表示, l o g 2 1024 = 10 log_{2}1024=10 log2​1024=10。

对应到小数中,可以类比为:一个小数float,其对应的进制位数为 l o g ( f l o a t ) log(float) log(float)

"编码"分布

显然一个分布式由多个小数表示的,每一个概率 p ( x ) p(x) p(x)都是一个小数。于是表示一个分布所需要的位数为: ∑ p ( x ) ( l o g ( p ( x ) ) ) sum p(x) (log(p(x))) ∑p(x)(log(p(x))),描述为小数出现的概率乘以其所需的编码。

显然这玩意是叫信息熵。小数的对数为负值,所以常常为 − ∑ p ( x ) ( l o g ( p ( x ) ) ) -sum p(x) (log(p(x))) −∑p(x)(log(p(x)))

编码分布

上面是用编码来表示分布,现在是用编码后的分布去表示另一个分布。
显然这两个分布有相同的定义域,但是显然这两个分布不可能完全一致,于是对应在概率上的编码长度就会产生偏差,最简单的方式通过差值描述偏差 l o g ( p ( x ) ) − l o g ( q ( x ) ) log(p(x))-log(q(x)) log(p(x))−log(q(x))。

由于是使用 p p p去描述 q q q,于是最终差值的累加是以 p p p的概率为基准 − ∑ p ( x ) ( l o g ( p ( x ) ) − l o g ( q ( x ) ) ) -sum p(x) (log(p(x))-log(q(x))) −∑p(x)(log(p(x))−log(q(x)))。

显然这不仅描述了编码上的差距,这也描述了分布之间的差距。

KL散度

两个分布之间的KL散度有如下形式:

∑ p ( x ) ( l o g ( p ( x ) ) − l o g ( q ( x ) ) ) sum p(x) (log(p(x))-log(q(x))) ∑p(x)(log(p(x))−log(q(x)))

上面是离散的形式,连续概率则将求和变为积分:

∫ p ( x ) ( l o g ( p ( x ) ) − l o g ( q ( x ) ) ) int p(x) (log(p(x))-log(q(x))) ∫p(x)(log(p(x))−log(q(x)))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/619418.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号