最大熵模型原理小结
最大熵模型(maximum entropy model, MaxEnt)也是很典型的分类算法了,它和逻辑回归类似,都是属于对数线性分类模型。在损失函数优化的过程中,使用了和支持向量机类似的凸优化技术。而对熵的使用,让我们想起了决策树算法中的ID3和C4.5算法。理解了最大熵模型,对逻辑回归,支持向量机以及决策树算法都会加深理解。本文就对最大熵模型的原理做一个小结。
1. 熵和条件熵的回顾
在决策树算法原理(上)一文中,我们已经讲到了熵和条件熵的概念,这里我们对它们做一个简单的回顾。
熵度量了事物的不确定性,越不确定的事物,它的熵就越大。具体的,随机变量X的熵的表达式如下:
其中n代表X的n种不同的离散取值。而代表了X取值为i的概率,log为以2或者e为底的对数。
熟悉了一个变量X的熵,很容易推广到多个个变量的联合熵,这里给出两个变量X和Y的联合熵表达式:
有了联合熵,又可以得到条件熵的表达式H(Y|X),条件熵类似于条件概率,它度量了我们的Y在知道X以后剩下的不确定性。表达式如下:
用下面这个图很容易明白他们的关系。左边的椭圆代表H(X),右边的椭圆代表H(Y),中间重合的部分就是我们的互信息或者信息增益I(X,Y), 左边的椭圆去掉重合部分就是H(X|Y),右边的椭圆去掉重合部分就是H(Y|X)。两个椭圆的并就是H(X,Y)。
2. 最大熵模型的定义
最大熵模型假设分类模型是一个条件概率分布,X为特征,Y为输出。
给定一个训练集,其中x为n维特征向量,y为类别输出。我们的目标就是用最大熵模型选择一个最好的分类类型。
在给定训练集的情况下,我们可以得到总体联合分布的经验分布,和边缘分布的经验分布。即为训练集中X,Y同时出现的次数除以样本总数m,即为训练集中X出现的次数除以样本总数m。
用特征函数描述输入x和输出y之间的关系。定义为:
可以认为只要出现在训练集中出现的,其. 同一个训练样本可以有多个约束特征函数。
特征函数关于经验分布的期望值,用表示为:
特征函数关于条件分布和经验分布的期望值,用表示为:
如果模型可以从训练集中学习,我们就可以假设这两个期望相等。即:
上式就是最大熵模型学习的约束条件,假如我们有M个特征函数就有M个约束条件。可以理解为我们如果训练集里有m个样本,就有和这m个样本对应的M个约束条件。
这样我们就得到了最大熵模型的定义如下:
假设满足所有约束条件的模型集合为:
定义在条件概率分布上的条件熵为:
我们的目标是得到使最大的时候对应的,这里可以对加了个负号求极小值,这样做的目的是为了使为凸函数,方便使用凸优化的方法来求极值。
3 . 最大熵模型损失函数的优化
在上一节我们已经得到了最大熵模型的函数。它的损失函数定义为:
约束条件为:
由于它是一个凸函数,同时对应的约束条件为仿射函数,根据凸优化理论,这个优化问题可以用拉格朗日函数将其转化为无约束优化函数,此时损失函数对应的拉格朗日函数定义为:
其中为拉格朗日乘子。如果大家也学习过支持向量机,就会发现这里用到的凸优化理论是一样的,接着用到了拉格朗日对偶也一样。、
我们的拉格朗日函数,即为凸优化的原始问题:
其对应的拉格朗日对偶问题为:
由于原始问题满足凸优化理论中的KKT条件,因此原始问题的解和对偶问题的解是一致的。这样我们的损失函数的优化变成了拉格朗日对偶问题的优化。
求解对偶问题的第一步就是求, 这可以通过求导得到。这样得到的是关于w的函数。记为:
即为对偶函数,将其解记为:
具体的是求关于的偏导数:
令偏导数为0,可以解出关于的表达式如下:
由于,可以得到的表达式如下:
其中,为规范化因子,定义为:
这样我们就得出了和的关系,从而可以把对偶函数里面的所有的替换成用表示,这样对偶函数就是全部用表示了。接着我们对求极大化,就可以得到极大化时对应的w向量的取值,带入和的关系式, 从而也可以得到的最终结果。
对求极大化,由于它是连续可导的,所以优化方法有很多种,比如梯度下降法,牛顿法,拟牛顿法都可以。对于最大熵模型还有一种专用的优化方法,叫做改进的迭代尺度法(improved iterative scaling, IIS)。
IIS也是启发式方法,它假设当前的参数向量是,我们希望找到一个新的参数向量,使得对偶函数增大。如果能找到这样的方法,就可以重复使用这种方法,直到找到对偶函数的最大值。
IIS使用的方法是找到的一个下界,通过对极小化来得到对应的的值,进而来迭代求解。对于,它的极小化是通过对求偏导数而得到的。
由于IIS一般只用于最大熵模型,适用范围不广泛,这里就不详述算法过程了,感兴趣的朋友可以直接参考IIS的论文The improved iterative scaling algorithm: A gentle introduction。
4. 最大熵模型小结
最大熵模型在分类方法里算是比较优的模型,但是由于它的约束函数的数目一般来说会随着样本量的增大而增大,导致样本量很大的时候,对偶函数优化求解的迭代过程非常慢,scikit-learn甚至都没有最大熵模型对应的类库。但是理解它仍然很有意义,尤其是它和很多分类方法都有千丝万缕的联系。
惯例,我们总结下最大熵模型作为分类方法的优缺点:
最大熵模型的优点有:
a) 最大熵统计模型获得的是所有满足约束条件的模型中信息熵极大的模型,作为经典的分类模型时准确率较高。
b) 可以灵活地设置约束条件,通过约束条件的多少可以调节模型对未知数据的适应度和对已知数据的拟合程度
最大熵模型的缺点有:
a) 由于约束函数数量和样本数目有关系,导致迭代过程计算量巨大,实际应用比较难。
(欢迎转载,转载请注明出处。欢迎沟通交流: liujianping-ok@163.com)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)