欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Entropy

程序员文章站 2024-02-11 09:38:46
...

先出结论:

  • 信息熵:编码方案完美时,最短平均编码长度的是多少。
  • 交叉熵:编码方案不一定完美时(由于对概率分布的估计不一定正确),平均编码长度的是多少。
  • 相对熵:编码方案不一定完美时,平均编码长度相对于最小值的增加值。

                             平均编码长度 = 最短平均编码长度 + 一个增量                 
    

1: 熵

熵的本质是香农信息量log1/p的期望;也有解释是最短平均编码长度。
其数学定义,X为离算型随机变量:

H(X)=E[log(p)]=xp(x)log(p(x))

X为连续型随机变量:
H(X)=(xX)p(x)log(p(x))dx

当X为0-1分布时,熵与概率p的关系如下图:
Entropy

2:交叉熵

  编码方案不一定完美时(由于对概率分布的估计不一定正确),平均编码长度的是多少在信息理论中,交叉熵主要是用于衡量两个概率分布间的差异性信息。
  通常两个概率分布p、q,其中p表示真实分布,q表示非真实分布,在相同的事件中,用非真实分布q来表示某个事件发生所需要的平均比特数。
  其数学表达:

H(p,q)=Ep[log(q)]=xp(x)log(q(x))=H(p)+DKL[(p||q)]

   其中H(p)为p的信息熵,后者是相对熵。
  
  在ML中等效于相对熵,其作用:用来估计当前训练得到的概率分布于真实分布间有多大的差异,若p是固定分布,于训练无关,q是估计的分布应尽量等于p,两者一直时,交叉熵就等于p的信息熵。
  如TensorFlow代码:

cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys*tf.log(prediction), reduction_indices = [1]))

其中ys为实际值,prediction 为预测值,-tf.reduce_sum(ys*tf.log(prediction), reduction_indices = [1]))为求其交叉嫡!
  

3:相对熵

  本质含义:由于编码方案不一定完美,导致的平均编码长度的增大值。
  其数学表达,离算型:

DKL(p||q)=xp(x)log(p(x)/q(x))

  连续型:
DKL(p||q)=p(x)log(p(x)/q(x))dx

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


欢迎大家一起交流学习,邮箱为:aaa@qq.com


参考文章:

https://www.zhihu.com/question/41252833
http://blog.csdn.net/rtygbwwwerr/article/details/50778098