转自:https://zhuanlan.zhihu.com/p/56414312
最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(maximum entropy model).本部分首先介绍最大熵模型,其次讲述其学习算法,包括改进的迭代尺度算法和拟牛顿法,最后介绍最大熵原理在NLP应用。
PART1 最大熵模型
最大熵模型由最大熵原理推导实现。这里首先叙述一般的最大熵原理,然后讲解最大熵模型的推导,最后给出最大熵模型学习的形式。
1.最大熵原理
最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。通常用约束条件来确定概率模型的集合,所以,最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。
2.最大熵模型的推导
最大熵原理是统计学习的一般原理,将它应用到分类得到最大熵模型。
假设分类模型是一个条件概率分布
,
表示输入,
表示输出,
和
分别是输入和输出的集合。这个模型表示的是对于给定的输入
,以条件概率
输出
。
给定一个训练数据集
学习的目标是用最大熵原理选择最好的分类模型。
首先考虑模型应该满足的条件。给定训练数据集,可以确定联合分布
的经验分布和边缘分布
的经验分布,分别以
和
表示。这里,
其中,
表示训练数据中样本
出现的频数,v(X=x)表示训练数据中输入
出现的频数,
表示训练样本容量。
用特征函数(feature function)
描述输入
和输出
之间的某一个事实。其定义是
它是一个二值函数,当
和
满足这个事实时取值为1,否则取值为0.
特征函数
关于经验分布
的期望值,用
表示
特征函数
关于模型
与经验分布
的期望值,用
表示
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1FX1AlMjhmJTI5JTNEJTVDc3VtXyU3QnglMkN5JTdEJTVDYmFyJTdCUCU3RCUyOHglMjlQJTI4eSU3Q3glMjlmJTI4eCUyQ3klMjk=.png)
如果模型能够获取训练数据中的信息,那么就可以假设着两个期望值相等,即
(*1)
或
(*2)
将式(*1)和(*2)作为模型学习的约束条件。假如有
个特征函数
,那么就有
个约束条件。
Definition1:(最大熵模型)
假设满足所有约束条件的模型集合为
(*3)
定义在条件概率分布
上的条件熵为
(*4)
则模型集合
中条件熵
最大的模型称为最大熵模型。式中的对数为自然对数。
3.最大熵模型学习的形式
最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题。
对于给定的训练数据集
以及特征函数
,最大熵模型的学习等价于约束最优化问题:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNtaW5fJTdCUCU1Q2luKyU1Q21hdGhjYWwlN0JDJTdEJTdEKyU1Q3F1YWQrLUglMjhQJTI5.png)
(*5)
(*6)
这里,将约束最优化的原始问题转换为无约束最优化的对偶问题。通过求解对偶问题求解最优化问题。
首先,引进拉格朗日乘子
,定义拉格朗日函数
:
(*7)
原始化的原始问题是
(*8)
对偶问题是
(*9)
由于拉格朗日函数
是
的凸函数,原始问题(8)的解与对偶问题(9)的解是等价的。这样,可以通过求解对偶问题(*9)来求解原始问题(*8)。
首先,求解对偶问题(*9)内部的极小化问题
。
是
函数,将其记作
(*10)
具体地,求
对
的偏导数
令偏导数等于0,在
的情况下,解得
由于
,得
(*11)
其中,
(*12)
之后,求解对偶问题外部的极大化问题
将其解记为
。
也就是说,可以应用最优化算法求对偶函数
的极大化,得到
,用来表示
。这里,
是学习到的最优化模型(最大熵模型)。
4.极大似然估计
从以上最大熵模型学习中可以看出,最大熵模型是由式(*11)、式(*12)表示的条件概率分布。下面证明对偶函数的极大化等价于最大熵模型的极大似然估计。
已知训练数据的经验概率分布
,条件概率分布
的对数似然函数表示为
当条件概率分布
是最大熵模型(*11)和(*12)时,对数似然函数
为
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MXyU3QiU1Q2JhciU3QlAlN0QlN0QlMjhQX3clMjklM0QlNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyQ3klMjlsb2crUCUyOHklN0N4JTI5.png)
(*13)
再看对偶函数,由式(*7)及式(*10)可得
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNQc2klMjh3JTI5JTNEJTVDc3VtXyU3QnglMkN5JTdEJTVDYmFyJTdCUCU3RCUyOHglMjlQX3clMjh5JTdDeCUyOWxvZytQX3clMjh5JTdDeCUyOSUyQiU1Q3N1bV8lN0JpJTNEMSU3RCU1RW53X2klMjglNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyQ3klMjlmX2klMjh4JTJDeSUyOS0lNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyOVBfdyUyOHklN0N4JTI5Zl9pJTI4eCUyQ3klMjklMjk=.png)
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lM0QlNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyQ3klMjklNUNzdW1fJTdCaSUzRDElN0QlNUVud19pZl9pJTI4eCUyQ3klMjklMkIlNUNzdW1fJTdCeCUyQ3klN0QlNUNiYXIlN0JQJTdEJTI4eCUyOVBfdyUyOHklN0N4JTI5bG9nK1pfdyUyOHglMjk=.png)
(*14)
比较(*13)和(*14),可得
既然对偶函数
等价于对数似然函数
,于是证明了最大熵模型学习中的对偶函数极大化等价于最大熵模型的极大似然估计这一事实。
PART2 学习算法
逻辑斯蒂回归模型、最大熵模型学习归结为以似然函数为目标函数的最优化问题,通常通过迭代算法求解。从最优化的观点看,这时的目标函数具有很好的性质,它是光滑的凸函数,因此多种最优化方法都适用,保证能找到全局最优解。常用的方法有改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法。
1.改进的迭代尺度法(imporoved iterative scaling,IIS)
IIS的想法是:假设最大熵模型当前的参数向量是
,我们希望找到一个新的参数向量
,使得模型的对数似然函数值增大。如果能有这样一种参数向量更新的方法
,那么就可以重复适用这一方法,直到找到对数似然函数的最大值。
对于给定的经验分布
,模型参数从
到
,对数似然函数的改变量是
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4dyUyQiU1Q2RlbHRhJTI5LUwlMjh3JTI5JTNEJTVDc3VtXyU3QnglMkN5JTdEJTVDYmFyJTdCUCU3RCUyOHglMkN5JTI5JTVDc3VtXyU3QmklM0QxJTdEJTVFJTdCbiU3RCU1Q2RlbHRhX2lmX2klMjh4JTJDeSUyOS0lNUNzdW1fJTdCeCU3RCU1Q2JhciU3QlAlN0QlMjh4JTI5bG9nJTVDZnJhYyU3QlpfJTdCdyUyQiU1Q2RlbHRhJTdEJTI4eCUyOSU3RCU3QlpfdyUyOHglMjklN0Q=.png)
利用不等式
建立对数似然函数改变量的下界:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4dyUyQiU1Q2RlbHRhJTI5LUwlMjh3JTI5JTVDZ2VxKyU1Q3N1bV8lN0J4JTJDeSU3RCU1Q2JhciU3QlAlN0QlMjh4JTJDeSUyOSU1Q3N1bV8lN0JpJTNEMSU3RCU1RSU3Qm4lN0QlNUNkZWx0YV9pZl9pJTI4eCUyQ3klMjklMkIxLSU1Q3N1bV8lN0J4JTdEJTVDYmFyJTdCUCU3RCUyOHglMjklNUNmcmFjJTdCWl8lN0J3JTJCJTVDZGVsdGElN0QlMjh4JTI5JTdEJTdCWl93JTI4eCUyOSU3RA==.png)
将右端记为
于是有
即
是对数似然函数改变量的一个下界。
如果能找到适当的
使下界
提高,那么对数似然函数也会提高。然而,函数
中的是
一个向量,含有多个变量,不易同时优化。IIS试图一次只优化其中一个变量
,而固定其他变量
。
为达到这一目的,IIS进一步降低下界
。具体地,IIS引进一个量
,
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1mJTVFJTdCJTVDYXN0JTdEJTI4eCUyQ3klMjklM0QlNUNzdW1faStmX2klMjh4JTJDeSUyOQ==.png)
这样
(*15)
利用指数函数的凸性以及对任意
,有
且
这一事实,根据Jensen不等式,得到
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1leHAlMjglNUNzdW1fJTdCaSUzRDElN0QlNUVuJTVDZnJhYyU3QitmX2klMjh4JTJDeSUyOSU3RCU3QmYlNUUlMkElMjh4JTJDeSUyOSU3RCU1Q2RlbHRhX2lmJTVFJTJBJTI4eCUyQ3klMjklMjklNUNsZXErJTVDc3VtXyU3QmklM0QxJTdEJTVFbiU1Q2ZyYWMlN0IrZl9pJTI4eCUyQ3klMjklN0QlN0JmJTVFJTJBJTI4eCUyQ3klMjklN0RleHAlMjglNUNkZWx0YV9pZiU1RSUyQSUyOHglMkN5JTI5JTI5.png)
于是(*15)可改写为
记上不等式右端为
于是得到
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1MJTI4dyUyQiU1Q2RlbHRhJTI5LUwlMjh3JTI5JTVDZ2VxK0IlMjglNUNkZWx0YSU3Q3clMjk=.png)
这里,
是对数似然函数改变量的一个新的(相对不紧的)下界。
求
对
的偏导数:
(*16)
在式(*16)里,除
外不含任何其他变量,令偏导数为0得到
(*17)
于是,依次对
求解方程(*17)可以求出
。
算法(改进的迭代尺度算法IIS)
输入:特征函数
;经验分布
,模型
输出:最优参数值
;最优模型
。
(1)对所有
,取初值
(2)对每一
:
(a)令
是方程
的解,这里,
(b)更新
值:
(3)如果不是所有
都收敛,重复步(2).
PART3 NLP应用
在网络搜索排名中用到的信息有上千种,如何能把它们结合在一起用好?更普遍的讲,在信息处理中,我们常常知道各种各样但不完全确定的信息,我们需要用一个统一模型将这些信息综合起来。如何综合好,是一门学问。
最大熵模型在形式上是最漂亮、最完美的统计模型,在自然语言处理和金融方面有很多有趣的应用。最大熵模型,就是要保留全部的不确定性,将风险降到最小。
早期,由于最大熵模型计算量大,研究人员一般采用一些类似最大熵模型的近似模型。这一近似,最大熵模型就从完美变得不完美了。于是,不少原来热衷于此的学者又放弃了这种方法。第一个在实际信息处理应用中验证了最大熵模型的优势是宾夕法尼亚大学马库斯教授的高徒拉纳帕提(Adwait Ratnaparkhi).拉纳帕提成功之处在于他没有对最大熵模型进行近似处理,而是找到了几个最适合最大熵模型而计算量相对不太大的自然语言处理问题,比如词性标注和句法分析。拉纳帕提成功地将上下文信息、词性(名词、动词和形容词)以及主谓宾等句子成分,通过最大熵模型结合起来,做出了当时世界上最好的词性标注系统和句法分析器。从拉纳帕提的成果中,科学家又看到了最大熵模型解决复杂文字信息处理问题的希望。
在2000年前后,由于计算机速度的提升以及训练算法的改进,很多复杂的问题,包括句法分析、语言模型和机器翻译都可以采用最大熵模型了。最大熵模型和一些简单组合了特征的模型相比,效果可以提升几个百分点。
