Entropy(熵)
一个信息源发出多种信号,如果某个信号概率大,那么它后面出现的机会也大,不确定性会小。反之就会机会小,不确定性就大,即不确定性函数 f 是概率 p 的单调递减函数。
那如果有两个信号A、B,他们产生的不确定性应该是各自不确定性的和,即 ,它们具有可加性。
那么不确定性 f 的函数体要满足几个条件:1.单调递减 2.具有可加性 3. 所以很容易想到对数函数,即
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
p = np.arange(0.4, 0.99, 0.01)
f = [-1 * np.log2(a) for a in p]
plt.plot(p,f)
image.png
那么如果考虑这个信息源的不确定性,即是考虑所有信号产生不确定性的统计平均值。 若信息源产生的各信息 的不确定性有 n 种取值:,对应的概率为,并且它们彼此独立。 信息的不确定性应该为 的统计平均值(期望)(E),这就是信息熵(Information Entropy),即
因为不确定性是抽象出来的,并非实际值,所以对于对数的底数的取值也并无要求,当我们以2为底的时候,单位为bit;底是e的时候,单位是nat。所以这里用2为底。
同时,有 ,证明如下(拉格朗日乘子法):
目标函数:
因为
设置约束条件 :
设置拉格朗日函数:
对 依次求偏导,令偏导为0,有:
联立得
即
则
当然最简单的单符号信号源仅取 0 和 1 两个元素,其概率为 P 和 1 - P,该信源的熵为下面所示
p = np.arange(0.001, 1, 0.001)
H = [-1 * a * np.log2(a) - (1 - a) * np.log2(1 - a) for a in p]
plt.gca().set_ylim([0,1])
plt.gca().set_xlim([0,1])
plt.plot(p,H)
image.png
Joint entropy(联合熵)
当我们从一维随机变量分布推广到多维随机变量分布,则其联合熵(Joint entropy)为:
Conditional entropy(条件熵)
条件熵 表示在已知随机变量 的条件下随机变量 的不确定性
条件熵 定义为在 给定条件下 的条件概率分布的熵对 的数学期望:
同时,条件熵 ,证明如下:
即为上式所证
网友评论