Chinaunix首页 | 论坛 | 博客
  • 博客访问: 370232
  • 博文数量: 162
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1501
  • 用 户 组: 普通用户
  • 注册时间: 2016-10-21 19:45
文章分类
文章存档

2018年(1)

2017年(101)

2016年(60)

分类: 大数据

2017-04-21 16:36:54

1. 香农熵(Shannon entropy)

信息熵(又叫香农熵)反映了一个系统的无序化(有序化)程度,一个系统越有序,信息熵就越低,反之就越高。

如果一个随机变量 X 的可能取值为 X={x1,x2,…,xn},对应的概率为 p(X=xi),则随机变量 X 的信息熵为:


H(X)=?∑i=1np(xi)logp(xi)


2. 相对熵(relative entropy)

所谓相对,自然在两个随机变量之间。又称互熵,Kullback–Leibler divergence(K-L 散度)等。设 p(x) 和 q(x) 是 X 取值的两个概率分布,则 p 对 q的相对熵为: 

D(p||q)=∑i=1np(x)logp(x)q(x)

在一定程度上,熵可以度量两个随机变量的距离。KL 散度是两个概率分布 P 和 Q 差别的非对称性的度量。KL 散度是用来度量使用基于 Q 的编码来编码来自 P 的样本平均所需的额外的位元数。


典型情况下,P 表示数据的真实分布,Q 表示数据的理论分布,模型分布,或 P 的近似分布。

相对熵的性质,相对熵(KL散度)有两个主要的性质。如下

  • (1)尽管 KL 散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,即


D(p||q)≠D(q||p)


  • (2)相对熵的值为非负值,即


    D(p||q)≥0


在证明之前,需要认识一个重要的不等式,叫做吉布斯不等式。内容如下



这里写图片描述 


这里提供一个离散型 KL 散度的简单实现:

from functools import reduce
import operator
import math
def kl(p, q):
     
return reduce(operator.add, map(lambda x, y: x*math.log(x/y), p, q))

3. 交叉熵(cross entropy)

  • H(p,q)=?∑xp(x)logq(x)

通俗理解

1)信息熵:编码方案完美时,最短平均编码长度的是多少。
2)交叉熵:编码方案不一定完美时(由于对概率分布的估计不一定正确),平均编码长度的是多少。
平均编码长度 = 最短平均编码长度 + 一个增量
3)相对熵:编码方案不一定完美时,平均编码长度相对于最小值的增加值。(即上面那个增量)
-------------------------------------------------------------------------------------------------

零、信息熵
1、熵的本质是香农信息量 log(1/p) 的期望;(参考了第一个答案)
H(p) = E[ log(1/p) ] = ∑ p_i * log(1/p_i),是一个期望的计算,也是记录随机事件结果的平均编码长度;
为什么信息量 是 log(1/p) 呢?
因为:一个事件结果的出现概率越低,对其编码的bit长度就越长。
以期在整个随机事件的无数次重复试验中,用最少的 bit 去记录整个实验历史。
即无法压缩的表达,代表了真正的信息量。

2、熵的本质的另一种解释:最短平均编码长度
【本质含义:编码方案完美时,最短平均编码长度的是多少】

3、交叉熵,则可以这样理解:使用了“估算”的编码后,得到的平均编码长度(可能不是最短的)
p是真实概率分布,q是你以为的概率分布(可能不一致);
你以 q 去编码,编码方案 log(1/q_i)可能不是最优的;
于是,平均编码长度 = ∑ p_i *log(1/q_i),就是交叉熵;
只有在估算的分布 q 完全正确时,平均编码长度才是最短的,交叉熵 = 熵


一、交叉熵
1、定义
【本质含义:编码方案不一定完美时,平均编码长度的是多少】
连续函数:
<img src="" data-rawwidth="312" data-rawheight="32" class="content_image" width="312">
两项中 H(p)是 p的信息熵,后者是相对熵;
离散函数:
<img src="" data-rawwidth="216" data-rawheight="44" class="content_image" width="216">=Entropy(P) + D_KL(P||Q)

=Entropy(P) + D_KL(P||Q)

2、在 ML 中等效于相对熵
【作用:用来评估,当前训练得到的概率分布,与真实分布有多么大的差异】
因为与相对熵只差一个 分布 P 的信息熵,
若 P 是固定的分布,与训练无关;
Q 是估计的分布,应尽量等于 P。
二者一致时,交叉熵就等于 P 的熵

二、相对熵
【本质含义:由于编码方案不一定完美,导致的平均编码长度的增大值】
离散:
<img src="" data-rawwidth="237" data-rawheight="52" class="content_image" width="237">
【发现:D_KL(P||Q) = ∑P(i) *logP(i) - ∑P(i) *logQ(i)
= - Entropy(P) + 交叉熵 H(p,q) 】
连续:
<img src="" data-rawwidth="264" data-rawheight="56" class="content_image" width="264">

1)用来衡量2个取值为正数的函数的相似性
2)2个完全相同的函数,相对熵为0;差异越大,相对熵越大;
3)概率分布函数,或 概率密度函数,若函数值均大于0,相对熵可以度量两个随机分布的差异性;
4)相对熵不对称,没有交换律


阅读(6503) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~