信息论概述
信息论主要的关注点是一个信号包含的信息量。在机器学习的范畴内,信息论的思想主要是和概率结合,用来描述概率分布及其相关特性的。
信息论的基本思想
一件大概率事件发生了,给我们提供的信息要少于一件小概率事件发生提供的信息。比如我们天天习以为常的事情每天都在发生,没什么好研究的,如果一件几百年一遇的事情发生了,其信息量就很丰富了。
以上这种思想其实是在用概率来量化一个信号的信息量。也就是小概率对应大信息量,大概率对应小信息量。
假设:
+ 一个信号x发生的概率为p(x)
+ 用I(x)来表示信号中包含的信息量
那么I(x)和p(x)之间有什么关系呢?
+ 根据之前的描述,概率和信息量之间应该是成反比的
+ 概率和信息量之间的关系应该不是线性的,中间包含着概率“越”小,信息量“越”大的意思
前人给我们的答案是log关系,即
I(x)=−logP(x)
,其中的I(x)被称为x的自信息(self-information)。
然而,知道一个信号的自信息显然是不够的。我们希望进一步地知道有一串信号的时候,信息总量是多少。那自然地,我们针对每个信号的信息量乘以它发生的概率再求和就的出来了。
H(P)=Ex P[I(x)]=−Ex P[logP(x)]
其中H(P)是香农熵(Shannon entropy),某一个分布的香农熵是遵循这个分布的事件所产生的期望信息总量。特别的,当x是连续的时候,香农熵被称为微分熵(differential entropy)。
熵
熵(entropy)是用来描述事件内部混乱程度/不确定性/不纯净度的指标。熵越大,说明事件不确定性越高。
如果用 pi 表示 P(X=xi) , 那么随机变量X的熵为:
H(X)=−∑i=1n pi log pi
最大熵原理&最大熵模型
假设,我们面前有一个完全未知的离散随机变量组成的数组X,我们在什么都不知道的前提下,会怎样推断X中元素的概率分布呢?
那么首先假设X的概率分为为P(X),那么它的熵就是 H(P)=−∑i=1n pi log pi 。
从逻辑上来讲
我们在所有条件未知的情况下,最合理的推断是X中每一个元素 xi 是等概率分布的。
具体来讲,如果我们从X中抽取某一个 xi ,或者说在抽取每一个 xi 的时候,我们都会假定 xi 被抽到的概率是一样的, 我们不会毫无理由的对某一个 xi 偏心说它被抽到的概率比其他 xi 大的。
也就是说,每一个 xi 的概率是相同的,那么在这个时候,整个数组X的纯度也是最低的,此刻的熵也就是最大的。如果此时,我提前知道了其中某个 xi 永远不会被取到,那么此时整个数组X的纯度就会提升,熵也会随之下降。
我也一直强调任何条件未知是等概率分布的前提,如果我们提前知道了一些信息的话,在求最大熵的时候,需要使用这些已知信息来推断才可靠。
从数学上来讲
熵一定满足以下的不等式:
0≤H(P)≤log|X|
式中,|X|是X的取值个数,要想使右边等号成立,那么就要让|X|,也就是X的取值个数最大,也就是X需要均匀等概率分布。
最大熵原理
最大熵原理,就是在学习概率模型时,在所有满足约束条件的概率分布中,熵最大的模型就是最合理的模型。
而最大熵模型(maximum entropy model)就是由最大熵原理推导实现的模型
我们用
+
P~(X,Y)
表示联合分布
P(X,Y)
的样本概率分布
+
P~(X)
表示边缘分布
P(X)
的样本概率分布
*边缘概率:是指某个事件发生的概率,而与其他事件无关。
如果我们用
f(x,y)
表示满足
X=xi,Y=yi
,
+ 对于
P~(X,Y)
的期望值为:
Ep~(f)=∑x,yP~(x,y)f(x,y)
+ 对于模型
P(Y|X)
与
P~(X)
的期望值为:
Ep(f)=∑x,yP~(x)P(y|x)f(x,y)
由此,我们可以知道,从训练数据中得到模型的过程可以概括为: P~(X,Y)=P~(X)P(Y|X) ,也就是 Ep~(f)=Ep(f) 的这样一个过程。
条件熵(conditional entropy)
设有随机变量(X,Y),其联合概率分布为:
P(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...,m
条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性。随机变量X给定的情况下,随机变量Y的条件熵,定义为X给定条件下Y的条件概率分布的熵对X的数学期望。
H(Y|X)=∑i=1n pi H(Y|X=xi)
在条件概率分布P(Y|X)上的条件熵为: H(P)=−∑x,yP~(x)P(y|x) logP(y|x) ,在所有满足约束条件的模型中,条件熵最大的模型被称为最大熵模型,也就是我们要找的模型。
最大熵模型推导和求解
那么具体怎样在众多符合条件的模型中找出我们的目标模型呢?
首先确定我们要做的事情就是最大化条件熵,即 max H(P)=−∑x,yP~(x)P(y|x) logP(y|x)
同时,我们多次强调的这是有约束条件的,即 Ep~(f)=Ep(f) 和 ∑y P(y|x)=1
这是一个有约束条件的最优化(此时是最大化)问题,通常来讲,在机器学习的世界中,求解这样的问题所用的方法就是拉格朗日乘子法
有一套固定招式来解这种问题,具体来讲:
首先,将最大值问题改写为等价的求最小值问题,这里在式子前面加一个符号即可
min −H(P)=∑x,yP~(x)P(y|x) logP(y|x)
s.t. Ep~(f)=Ep(f) , ∑y P(y|x)=1
其次,将约束最优化的原始为题转换为无约束最优化的对偶问题
- 引入拉格朗日乘子 w0,w1,w2....,wn ,定义拉格朗日函数 L(P,w)
L(P,w)=−H(P)+w0[1−∑y P(y|x)]+∑i=1nwi[Ep~(f)=Ep(f)]
2. 将原始问题转化为对偶问题
min maxw L(P,w)=maxw min L(P,w)
然后,先求解对偶问题中右边部分(也就是极小化的问题)
- 求 L(P,w) 对 P(y|x) 的偏导数
∂L(P,w)∂P(y|x)=∑x,yP~(x)(log P(y|x)+1)−∑yw0−∑x,y(P~(x)∑i=1nwifi(x,y))
2. 化简,并令偏导数等于0
∑x,yP~(x)(log P(y|x)+1−w0−∑i=1nwifi(x,y))=0
3. 解出
P(y|x)
P(y|x)=exp(∑i=1nwifi(x,y)+w0−1)
4. 由于有
∑y P(y|x)=1
,可得出最大熵模型:
exp(∑i=1nwifi(x,y))∑y exp(∑i=1nwifi(x,y))
其中, fi(x,y) 是特征函数, wi 是特征的权重。
接下来进入最大熵模型的求解过程:
由于我们刚刚已经解决了对偶问题的极小化问题,现在需要完成左半部分的极大化问题。具体的求解过程涉及到另一种转换,先上结论:对偶函数的极大化等价于最大熵模型的极大似然估计。
下面是证明过程:
已知训练集的样本概率分布为 P~(X,Y) , 则条件概率分布 $P(Y|X)的似然函数为:
L(P)=∏x,y P(y|x)P~(X,Y)
为了简便运算,还是两边取对数,把连乘变成连加:
l(P)=∑x,y P~(X,Y) logP(y|x)
l(P)=∑x,yP~(X,Y)∑i=1nwifi(x,y)−∑x,yP~(X,Y) log ∑yexp(∑i=1nwifi(x,y))
l(P)=∑x,yP~(X,Y)∑i=1nwifi(x,y)−∑xP~(X) log ∑yexp(∑i=1nwifi(x,y))
而我们的对偶函数为: ∑x,y P~(x)P(y|x)logP(y|x)+∑i=1nwi(∑x,yP~(X,Y)fi(x,y)−∑x,yP~(x)P(y|x)fi(x,y))
化简:
∑x,yP~(X,Y)∑i=1nwifi(x,y)+∑x,yP~(x)P(y|x)(logP(y|x)−∑i=1nwifi(x,y))
由于有: ∑y P(y|x)=1
∑x,yP~(X,Y)∑i=1nwifi(x,y)+∑x,yP~(x)log∑yexp∑i=1nwifi(x,y)
这样一来,我们就把求解极大似然的问题和求解对偶函数最大化的问题联系起来。而极大似然函数的问题一般是用迭代的方法求解,包括我们以后会涉及到的:
+ 改进的迭代尺度法(improved iterative scaling, IIS)
+ 梯度下降法
+ 牛顿法
等等…