信息熵
香农与1948年提出的信息论以其中的信息熵这一基本概念为基础,用来表征人们对客观事件的不确定性的度量,与物理学中的熵表征物质的混乱程度有相似之处。
当处理不确定事件时,最常用的方式就是用概率方式描述,一般假定不确定的事件A每种可能的状态都有一个概率与之对应:
P(Ai)s.t.∑i=1nP(Ai)=1P(Ai)≥0
而总共可能的状态如果是有限个(n个),那么就是离散的事件,用离散的随机变量表示;如果可能的状态是无穷多个,那么就是连续的事件,用连续的随机变量表示。本文所有说明仅以离散事件说明(连续事件只需将求和符合换成积分即可)。
人们对不确定的事件的信息知道得越多,信息熵就越小;知道得越少,信息熵就越大。信息熵表征了人们对不确定事件知道的信息的多少。从上述分析可以看出,不确定事件的每个状态都包含一定的信息,该 信息量与概率值成反比,香农使用二进制比特来定义信息量的多少:
H(Ai)=log(1P(Ai))=−logP(Ai)
log(⋅) 是以2为底的对数。针对一个状态所含的信息量使用上述定义式得到,如果该状态的概率越大,则信息量越小。概率为1的状态是确定的就不携带任何信息,为0;反之概率越小的,信息量越大,但是,当概率为0时理论上携带了无穷多的信息(因为我们对其不知道任何信息)。
信息熵是表征不确定事件所有状态携带信息量的期望值:
H(A)=∑i=1npilog(1pi)=E(log(1pi))
式中以 pi 代替 P(Ai) ,因此信息熵表征了一个不确定事件A的所有可能状态所提供的 平均信息量,信息熵越大,表明携带的平均信息量越大,不确定性也就越大;反之携带的平均信息量越少,不确定性越小。
最大熵原理
从上述定义可以看出当考虑所有状态时,信息熵是一个 n 维函数,是通过在每个维度(也就是每个状态)的信息量求加权和得到,因此求解上述定义式的最大值就是求解如下的约束最优化问题:
使用Language乘数法求解得到:
L(p1,p2...pn,λ)=−∑i=1npilog(pi)+λ(∑i=1npi−1)∂L∂pi=−log(pi)−ln2+λ=0∂L∂λ=∑i=1npi−1=0
求解上述方程得到信息熵取得最大值时的条件:
p1=p2=p3....pn=1n,λ=ln2−log(n)
因此,对于未知的每个状态 赋予同样的概率,使用 均匀分布得到的信息熵是最大的。当人们对不确定事件进行模拟时,在一直部分知识的前提下,对未知的部分进行最合理的推断应该是 最符合自然状态(最不确定状态)的推断,也就是 熵最大的推断。这也与物理学中的 熵增原理符合: 物质总是趋于熵增大的方向变化,也就是最自然的状态变化。这种采取的保留全部的不确定性,使用最符合自然状态的推断,从满足约束条件的模型集合中选取熵最大的模型的方法就是最大熵原理。
从上述优化的角度可以看出,对于不确定的状态使用等可能的概率来寻找模型不易操作,而使用信息熵这一个数值指标去度量,通过寻找其最大值来表示等可能性在数学论证和编程实现上获得了可能。
最大熵模型
模型学习的是条件概率 P(Y|X) ,属于判别式模型。
对于给定的训练数据集,首先可以得出 P(X,Y) 和 P(X) 的经验分布 P^(X,Y) 和 P^(X) :
P^(X,Y)=Count(X=x,Y=y)NP^(X)=Count(X=x)N
式中,N为训练样本的个数, Count(⋅) 表示满足条件的样本个数。
其次从样本中选取或者设计 n 个特征函数: