最大熵模型原理

  最大熵模型与逻辑回归类似,是对数线性分类模型。在损失函数优化过程中,使用和支持向量机类似的凸优化技术。对熵的使用,会想起决策树ID3和C4.5。

1. 最大熵模型的定义

  将最大熵原理应用到分类得到最大熵模型。

  用最大熵模型选择一个最好的分类模型。训练集,其中x为n维特征向量,y为类别输出。

  训练集总体联合分布 P(X, Y)的经验分布,和边缘分布P(X)的经验分布即为训练集中X,Y同时出现次数除以样本总数m为训练集中X出现次数除以样本总数m

  用特征函数 f(x, y)描述 x 和 y 的关系。为:

  可以认为训练集只要出现 (x(i), y(i)),其 f(x(i), y(i))=1。同一个训练集可以有多个约束特征函数。

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

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

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

  

  最大熵模型定义如下:

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

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

  我们目的是求使 H(P) 最大时对应的 P(Y|X),这里对 H(P) 加负号求极小值,目的是为了使 -H(P) 为凸函数,方便用凸优化求极值。

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

  最大熵模型损失函数 -H(P)定义为:

  约束条件为:

  用拉格朗日函数将约束最优化转化为无约束最优化对偶问题,此时损失函数对应的拉格朗日函数 L(P, ω)定义为:

  其中ωi(i=0,1,2,3...M)为拉格朗日乘子。这与支持向量机中用到的凸优化理论一样,用到了拉格朗日对偶。

  凸优化原始问题:

  其对应的拉格朗日对偶问题为:

  因此原始问题的解和对偶问题的解一致。可以通过求解对偶问题来求解原始问题。

  求解对偶问题的第一步是求,这可以通过求导得到。得到的是关于 ω 的函数。记为:

  Ψ(ω)为对偶函数,将其解记为:

  

  这样得到P(y|x)和ω的关系,从而把对偶函数Ψ(ω)里的所有P(y|x)替换成用ω表示,这样对偶函数Ψ(ω)就是全部用ω表示。接着对Ψ(ω)求极大化,得到极大化时对应ω向量的取值,带入P(y|x)和ω的关系式,从而也得到P(y|x)的最终结果。

3. 最大熵模型实例

例:假设随机变量 x 有5个取值{A,B,C,D,E},其中P(A)+P(B) = 3/10,根据最大熵模型估计各个值的概率 P(A),P(B),P(C),P(D),P(E)。

解:用 y1,y2,y3,y4,y5 表示 A,B,C,D,E,于是最大熵模型的最优化问题是:

引入拉格朗日乘子 w0,w1,则拉格朗日函数为:

根据拉格朗日对偶性:

首先求解 L(P, w) 关于 P 的极小化问题,为此,固定 w0, w1,求偏导数:

令各偏导数等于0,得:

于是

再求解 L(Pw, w) 关于 w 的极大化问题:

分别求 L(Pw, w) 对 w0, w1的偏导数并令其为0,得到

则所求概率分布为:

4. 最大熵模型小结

  它的约束函数的数目会随样本量的增大而增大,导致样本量很大的时候,对偶函数优化求解的迭代过程非常慢,scikit-learn都没有最大熵模型对应的库。

来自:https://www.cnblogs.com/pinard/p/6093948.html

原文地址:https://www.cnblogs.com/keye/p/10728878.html