信息论
李鹏-南开百度联合实验室
信息论
信息熵
对于给定随机变量x的概率分布
p(x)
,我们使用
h(x)
来表达x所含有的信息量。对于两个独立事件
x,y
,它们两个的总信息量应该为两个随机变量的信息量的和,即
h(x,y)=h(x)+h(y)
又由于两个随机事件是独立的,我们有:
p(x,y)=p(x)+p(y)
因此,我们可以得出
h(x)
必须是
p(x)
的
log
形式,从而我们有:
h(x)=−log2p(x)
从信息编码的角度,
h(x)
表达的是对应
p(x)
这种状态的信息编码长度,
然后
p(x)⋅h(x)
为传输
p(x)
这么多量的所需要的编码量,具体请参见下面的编码举例。
对于随机变量
x
,可以取多个不同的值,分别具有不同的概率。当我们需要传输这样的序列的时候,它需要的平均信息量为:
H(x)=−∑xp(x)log2p(x)
其中我们称
H(x)
为熵。
编码举例
假定一个随机变量
x
有8种状态,且每种状态的概率相同,均为
18
,它的熵为:
扫描二维码关注公众号,回复:
679435 查看本文章
H(x)=−8⋅18log218=3
考虑另一种情况,一个随机变量
x
有8种状态,且各种状态的概率分别为
{12,14,18,116,164,164,164,164}
,从而它的熵为:
H(x)=−12log212−14log214−18log218−116log2116−4⋅164log2164=2
因此,我们可以看出不均匀的数据具有更少的信息量。
现在我们需要传输一个这样的具有8种状态的序列,我们可以使用
0,1
对数据进行编码,例如对于8种状态,我们使用
000,001,010,…,111
进行编码,那么很容易计算出它的平均码长为
3 bits
。
如果我们使用
0,10,110,1110,111100,111101,111110,111111
进行编码,那么它的平均码长为:
average code length=12∗1+14∗2+18∗3+116∗4+4∗164∗6=2 bits
香农定理证明熵是传输一个随机变量的所需要的bits数目的下界。
熵的另一种解释
现在
N
个编有序号的相同的小球,放入到多个箱子里,其中第
i
个箱子的小球数目为
ni
,一共有多少种分法。对于某一个箱子中的小球,我们不区分它们放入箱子的顺序,我们有:
W=N!∏ini!
且它被称为多样性。
对它取
log
,然后再标准化后,它的熵记为:
H=1NlnW=1NlnN!∏ini!
在
N→∞
,我们有公式:
lnN!=NlnN−N
我们还已知:
N=∑ini
带入,化简
H
,我们有:
H=1N(NlnN−N−∑i(nilnni−ni))=1N(NlnN−∑inilnni)=∑iniNlnN−∑iniNlnni=∑iniN(lnNni)=−∑iniNlnniN
我们使用随机变量
x
代表箱子的状态。
对于第
i
个箱子,我们有
p(xi)=niN
。 因此,我们有:
H(x)=−∑ip(xi)lnp(xi)
其实,我们可以猜测一下,什么时候
H
取得最大的值?
那应该是每一个箱子的球数目的比较均匀的时候,
H
较大。
当所有的球都在一个箱子里,我们可以认为概率为0.
最大熵的证明
我们的目标是最大化
H(x)
,采用拉格朗日乘子法,我们有:
H(x)~=−∑ip(xi)lnp(xi)−λ(∑ip(xi)−1)
假定一共有
M
个自变量,我们有:
∂H∂x1=−lnp(x1)−1−λ∂H∂x2=−lnp(x2)−1−λ⋮∂H∂xM=−lnp(xM)−1−λ∑ip(xi)=0=0=0=1
我们可以很容易解出来
p(x1)=p(x2)=…=p(xM)=1M
。
如果
x
是连续随机变量,如何计算熵呢?
这个可以直接将
M→∞
,我们会有:
H(x)=∫xp(x)lnp(x)dx
最大化连续随机变量
x
的
p(x)
满足的分布为:
p(x)=12πσ212exp{−(x−u)22σ2}
证明从略(依然是拉格朗日乘子法)。
条件熵
我们有
x,y
形成的联合概率分布
p(x,y)
。在
x
的值已知的情况下
y
的概率分布为
p(y|x)
,且需要传输的信息量为
−lnp(y|x)
。
因此,我们有
y
对
x
的条件熵
H(y|x)
:
H(y|x)=−∫x∫yp(x,y)lnp(y|x)dxdy
利用公式
p(x)=∫yp(x,y)dy
,我们有:
H(x,y)=H(y|x)+H(x)
这依然符合了熵的加法与概率的乘法性质。
相对熵或者k散度
对于未知分布
p(x)
,我们拟合了一个近似的分布
q(x)
,然后利用
q(x)
来构建一种编码方案以传输
x
,因此额外的数据传输量为:
KL(p||q)=−∫xp(x)lnq(x)dx−(−∫xp(x)lnp(x)dx)=−∫xp(x)lnq(x)p(x)dx
有凹函数
f(x)
,对于任意的
x1,x2
,我们有:
f(λx1+(1−λ)x2)≤λf(x1)+(1−λ)f(x2)
从而我们有:
f(∫xxp(x)dx)≤∫xf(x)p(x)dx
令
f(x)=−ln(x)
,故而:
KL(p||q)=−∫xp(x)lnq(x)p(x)dx≥ln∫x(−p(x)q(x)p(x))dx=0
当且仅当
q(x)=p(x)
等式成立。
因此,如果我们要传输
p(x)
,
如果我们选用了一个
q(x)
,且
q(x)≠p(x)
,那么如果一定会付出额外的传输代价,且这个代价就是相对熵。
对于未知分布
p(x)
,我们利用一个参数化的
q(x|θ)
来估计
p(x)
。
其中一个计算
θ
的方法是最小化
KL
。
然而,我们并不知道
p(x)
。不过,我们可以通过一堆从
p(x)
分布中取出来的观察值
xi
,其中
i=1,2,…,N
来估计
KL
。
我们有:
KL=∑i=1N(−lnq(xi|θ)+lnp(xi))
上面的公式来源于PRML,不过我是有疑问的。我感觉应该乘上系数
1N
,也不知道自己想的对不对,欢迎指正。
现在最小化
KL
,相当于最大化
∑Ni=1lnq(xi)
,也就是说最大化似然估计。
互信息
对于两个随机变量
x,y
,如果两个相互独立,我们有
p(x,y)=p(x)p(y)
。
对于不独立的两个随机变量,如何衡量它们是多近呢?有了前面的相对熵,我们有:
I(x,y)=KL(p(x,y)||p(x)p(y))=−∫x∫yp(x,y)lnp(x)p(y)p(x,y)dxdy
这叫做x和y的互信息,通过前面的描述,我们知道
I(x,y)≥0
,而且我们有互信息与条件熵的关系,即:
I(x,y)=H(x)+H(y)−H(x,y)=H(x)−H(x|y)=H(y)−H(y|x)
参考文献:
PRML第1.6章