最大熵模型原理小结

Posted 郑兴鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大熵模型原理小结相关的知识,希望对你有一定的参考价值。

 最大熵模型(maximum entropy model, MaxEnt)也是很典型的分类算法了,它和逻辑回归类似,都是属于对数线性分类模型。在损失函数优化的过程中,使用了和支持向量机类似的凸优化技术。而对熵的使用,让我们想起了决策树算法中的ID3和C4.5算法。理解了最大熵模型,对逻辑回归,支持向量机以及决策树算法都会加深理解。本文就对最大熵模型的原理做一个小结。

1. 熵和条件熵的回顾

    在决策树算法原理(上)一文中,我们已经讲到了熵和条件熵的概念,这里我们对它们做一个简单的回顾。

    熵度量了事物的不确定性,越不确定的事物,它的熵就越大。具体的,随机变量X的熵的表达式如下:

 

H(X)=i=1npilogpiH(X)=−∑i=1npilogpi

 

    其中n代表X的n种不同的离散取值。而pipi代表了X取值为i的概率,log为以2或者e为底的对数。

    熟悉了一个变量X的熵,很容易推广到多个个变量的联合熵,这里给出两个变量X和Y的联合熵表达式:

 

H(X,Y)=i=1np(xi,yi)logp(xi,yi)H(X,Y)=−∑i=1np(xi,yi)logp(xi,yi)

 

    有了联合熵,又可以得到条件熵的表达式H(Y|X),条件熵类似于条件概率,它度量了我们的Y在知道X以后剩下的不确定性。表达式如下:

 

H(Y|X)=i=1np(xi,yi)logp(yi|xi)=j=1np(xj)H(Y|xj)H(Y|X)=−∑i=1np(xi,yi)logp(yi|xi)=∑j=1np(xj)H(Y|xj)

 

    用下面这个图很容易明白他们的关系。左边的椭圆代表H(X),右边的椭圆代表H(Y),中间重合的部分就是我们的互信息或者信息增益I(X,Y), 左边的椭圆去掉重合部分就是H(X|Y),右边的椭圆去掉重合部分就是H(Y|X)。两个椭圆的并就是H(X,Y)。

2. 最大熵模型的定义

    最大熵模型假设分类模型是一个条件概率分布P(Y|X)P(Y|X),X为特征,Y为输出。

    给定一个训练集(x(1),y(1)),(x(2),y(2)),...(x(m),y(m))(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m)),其中x为n维特征向量,y为类别输出。我们的目标就是用最大熵模型选择一个最好的分类类型。

    在给定训练集的情况下,我们可以得到总体联合分布P(X,Y)P(X,Y)的经验分布P¯¯¯¯(X,Y)P¯(X,Y),和边缘分布P(X)P(X)的经验分布P¯¯¯¯(X)P¯(X)。P¯¯¯¯(X,Y)P¯(X,Y)即为训练集中X,Y同时出现的次数除以样本总数m,P¯¯¯¯(X)P¯(X)即为训练集中X出现的次数除以样本总数m。

    用特征函数f(x,y)f(x,y)描述输入x和输出y之间的关系。定义为:

 

f(x,y)={10xyf(x,y)={1x与y满足某个关系0否则

 

    可以认为只要出现在训练集中出现的(x(i),y(i))(x(i),y(i)),其f(x(i),y(i))=1f(x(i),y(i))=1.

    特征函数f(x,y)f(x,y)关于经验分布P¯¯¯¯(X,Y)P¯(X,Y)的期望值,用EP¯¯¯¯(f)EP¯(f)表示为: 

 

EP¯¯¯¯(f)=x,yP¯¯¯¯(x,y)f(x,y)EP¯(f)=∑x,yP¯(x,y)f(x,y)

   

 

    特征函数f(x,y)f(x,y)关于条件分布P(Y|X)P(Y|X)和经验分布P¯¯¯¯(X)P¯(X)的期望值,用EP(f)EP(f)表示为:

 

EP(f)=x,yP¯¯¯¯(x)P(y|x)f(x,y)EP(f)=∑x,yP¯(x)P(y|x)f(x,y)

 

    如果模型可以从训练集中学习,我们就可以假设这两个期望相等。即:

 

EP¯¯¯¯(f)=EP(f)EP¯(f)=EP(f)

 

 

    上式就是最大熵模型学习的约束条件,假如我们有M个特征函数fi(x,y)(i=1,2...,M)fi(x,y)(i=1,2...,M)就有M个约束条件。可以理解为我们如果训练集里有m个样本,就有和这m个样本对应的M个约束条件。

    这样我们就得到了最大熵模型的定义如下:

    假设满足所有约束条件的模型集合为:

 

EP¯¯¯¯(fi)=EP(fi)(i=1,2,...M)EP¯(fi)=EP(fi)(i=1,2,...M)

 

 

    定义在条件概率分布P(Y|X)P(Y|X)上的条件熵为:

 

H(P)=x,yP¯¯¯¯(x)P(y|x)logP(y|x)H(P)=−∑x,yP¯(x)P(y|x)logP(y|x)

 

    我们的目标是得到使H(P)H(P)最小的时候对应的P(y|x)P(y|x),这里可以看到上式右边加了个负号,这样做的目的是为了使H(P)H(P)为凸函数,方便使用凸优化的方法来求极值。

 

3 . 最大熵模型损失函数的优化

    在上一节我们已经得到了最大熵模型的损失函数H(P)H(P)。它的定义为: