信息论

信息论

李鹏-南开百度联合实验室

信息论

信息熵

对于给定随机变量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)=818log218=3

考虑另一种情况,一个随机变量 x 有8种状态,且各种状态的概率分别为 {12,14,18,116,164,164,164,164} ,从而它的熵为:

H(x)=12log21214log21418log218116log21164164log2164=2

因此,我们可以看出不均匀的数据具有更少的信息量。
现在我们需要传输一个这样的具有8种状态的序列,我们可以使用 0,1 对数据进行编码,例如对于8种状态,我们使用 000,001,010,,111 进行编码,那么很容易计算出它的平均码长为 3 bits
如果我们使用 0,10,110,1110,111100,111101,111110,111111 进行编码,那么它的平均码长为:

average code length=121+142+183+1164+41646=2 bits

香农定理证明熵是传输一个随机变量的所需要的bits数目的下界。

熵的另一种解释

现在 N 个编有序号的相同的小球,放入到多个箱子里,其中第 i 个箱子的小球数目为 ni ,一共有多少种分法。对于某一个箱子中的小球,我们不区分它们放入箱子的顺序,我们有:

W=N!ini!
且它被称为多样性。

对它取 log ,然后再标准化后,它的熵记为:

H=1NlnW=1NlnN!ini!

N ,我们有公式:

lnN!=NlnNN
我们还已知:
N=ini
带入,化简 H ,我们有:
H=1N(NlnNNi(nilnnini))=1N(NlnNinilnni)=iniNlnNiniNlnni=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 个自变量,我们有:

Hx1=lnp(x1)1λHx2=lnp(x2)1λHxM=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{(xu)22σ2}

证明从略(依然是拉格朗日乘子法)。

条件熵

我们有 x,y 形成的联合概率分布 p(x,y) 。在 x 的值已知的情况下 y 的概率分布为 p(y|x) ,且需要传输的信息量为 lnp(y|x)
因此,我们有 y x 的条件熵 H(y|x)

H(y|x)=xyp(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)dxlnx(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))=xyp(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章

猜你喜欢

转载自blog.csdn.net/lipeng08/article/details/78608670