Overview 算法
统计建模方法是用来modeling随机过程行为的。在构造模型时,一般供咱们使用的是随机过程的采样,也就是训练数据。这些样本所具备的知识(较少),事实上,不能完整地反映整个随机过程的状态。建模的目的,就是将这些不完整的知识转化成简洁但准确的模型。咱们能够用这个模型去预测随机过程将来的行为。 app
在统计建模这个领域,指数模型被证实是很是好用的。所以,自世纪之交以来,它成为每一个统计物理学家们手中不可或缺的工具。最大熵模型是百花齐放的指数模型的一种,它表示的这类分布有着有趣的数学和哲学性质。尽管最大熵的概念能够追溯到远古时代,但直到近年来计算机速度提高以后,才容许咱们将最大熵模型应用到统计评估和模式识别的诸多现实问题中(最大熵才在现实问题上大展身手)。 dom
下面几页讨论基于最大熵的统计建模方法,尤为是它在天然语言处理上的应用。咱们提供大量的结果和benchmarks, 以及一些实用的用来训练最大熵模型的算法。最后咱们介绍下条件最大熵模型(Conditional maxent model)和马尔科夫随机场(Markov random fields) (在计算机视觉领域普遍使用的模型)之间的联系。 ide
咱们下面要讨论的算法能从一组数据中自动抽取出数据之间的内在关系(规则),并组合这些规则生成准确而紧凑的数据模型。For instance, starting from a corpus of English text with no linguistic knowledge whatsoever, the algorithms can automatically induce a set of rules for determining the appropriate meaning of a word in context. Since this inductive learning procedure is computationally taxing, we are also obliged to provide a set of heuristics to ease the computational burden. 函数
尽管本篇讨论的主题是NLP,但我保证没有内容是只适应NLP的,最大熵模型已经成功应用到天体物理学和医学领域。工具
Motivating Example 优化
咱们经过一个简单的例子来介绍最大熵概念。假设咱们模拟一个翻译专家的决策过程,关于英文单词in到法语单词的翻译。咱们的翻译决策模型p给每个单词或短语分配一个估计值p(f),即专家选择f做为翻译的几率。为了帮助咱们开发模型p,咱们收集大量的专家翻译的样本。咱们的目标有两个,一是从样本中抽取一组决策过程的事实(规则),二是基于这些事实构建这一翻译过程的模型。 ui
咱们能从样本中获得的一个明显的线索是容许的翻译候选列表。例如,咱们可能发现翻译专家老是选择下面这5个法语词汇:{dans, en, à, au cours de, pendant}。一旦有了这些信息,咱们能够给模型p施加第一个约束条件:this
p(dans)+p(en)+ p(à)+p(au cours de)+p(pendant) = 1spa
这个等式表明了这一翻译过程的第一个统计信息,咱们如今能够进行寻找知足这一条件的模型了。显然,有无数知足这个条件的模型可供选择。其中一个模型是p(dans)=1,换句话说这个模型老是预测dans。另一个知足这一约束的模型是p(pendant)=1/2 and p(à)=1/2。 这两个模型都有违常理:只知道翻译专家老是选择这5个法语词汇,咱们哪知道哪一个几率分布是对的。两个模型每一个都在没有经验支持的状况下,作了大胆的假设。最符合直觉的模型是:
p(dans) = 1/5
p(en) = 1/5
p(à) = 1/5
p(au cours de) = 1/5
p(pendant) = 1/5
这个模型将几率均匀分配给5个可能的词汇,是与咱们已有知识最一致的模型。咱们可能但愿从样本中收集更多的关于翻译决策的线索。假设咱们发现到有30%时间in被翻译成dans 或者en. 咱们能够运用这些知识更新咱们的模型,让其知足两个约束条件:
p(dans) + p(en) = 3/10
p(dans)+p(en)+ p(à)+p(au cours de)+p(pendant) = 1
同样,仍是有不少几率分布知足这两个约束。在没有其余知识的状况下,最合理的模型p是最均匀的模型,也就是在知足约束的条件下,将几率尽量均匀的分配。
p(dans) = 3/20
p(en) = 3/20
p(à) = 7/30
p(au cours de) = 7/30
p(pendant) = 7/30
假设咱们又一次检查数据,此次发现了另一个有趣的事实:有通常的状况,专家会选择翻译成dans 或 à.咱们能够将这一信息列为第三个约束:
p(dans) + p(en) = 3/10
p(dans)+p(en)+ p(à)+p(au cours de)+p(pendant) = 1
p(dans)+ p(à)=1/2
我们能够再一次寻找知足这些约束的最均匀分配的模型p,但这一次的结果没有那么明显。因为咱们增长了问题的复杂度,咱们碰到了两个问题:首先,"uniform(均匀)"到底是什么意思?咱们如何度量一个模型的均匀度(uniformity)?第二,有了这些问题答案以后,咱们如何找到知足一组约束且最均匀的模型?就像前面咱们看到的模型。
最大熵的方法回答了这两个问题。直观上讲,很简单,即:对已知的知识建模,对未知的不过任何假设(model all that is known and assume nothing about that which is unknown)。换句话说,在给定一组事实(features+output)的条件下,选择符合全部事实,且在其余方面近可能均匀的模型,这偏偏是咱们在上面例子每一步选择模型p所采起的方法。
Maxent Modeling
咱们考虑一个随机过程,它产生一个输出y,y属于一个有穷集合。对于刚才讨论的翻译的例子,该过程输出单词in的翻译,输出值y能够是集合{dans, en, à, au cours de, pendant}中任何一个单词。在输出y时,该过程可能会被上下文信息x影响,x属于有穷的集合
。在目前的例子中,这信息可能包括英文句子中in周围的单词。
咱们的任务是构造一个统计模型,该模型可以准确表示随机过程的行为。该模型任务是预测在给定上下文x的状况下,输出y的几率:p(y|x).
Training Data
为了研究这一过程,咱们观察一段时间随机过程的行为,收集大量的样本:
。在咱们讨论的例子中,每个样本由包含in周围单词的词汇x,和in的翻译y组成。如今,咱们能够假设这些训练样本已经由一个专家搞定了,咱们提供大量包含in的随机的短语要求她选择一个合适的翻译。
咱们能够经过它的经验分布来总结训练样本的特性:
一般,对于一个特定的pair (x, y),它要么不出如今样本中,要么最多出现几回。
Features and constraints
咱们的目标是构造一个产生训练样本这一随机过程的统计模型。组成这个模型的模块将是一组训练样本的统计值。在目前的例子中,咱们已经采用了几个统计数据:(1)in被翻译成dans 或者en的频率是3/10;(2) in被翻译成dans 或 à的几率是1/2 ;…等。这些统计数据是上下文独立的,但咱们也能够考虑依赖上下文信息x的统计数据。例如,咱们可能注意到,在训练样本中,若是 April 是一个出如今in以后,那么in翻译成en的频率有9/10.
为了表示这个事件(event),即当Aprial出如今in以后,in被翻译成en,咱们引入了指示函数:
特征f 关于经验分布的指望值,正是咱们感兴趣的统计数据。咱们将这个指望值表示为:
(1)
咱们能够将任何样本的统计表示成一个适当的二值指示函数的指望值,咱们把这个函数叫作特征函数(feature function)或简称特征(feature)。
当咱们发现一个统计量,咱们以为有用时,咱们让模型去符合它(拟合),来利用这一重要性。拟合过程经过约束模型p分配给相应特征函数的指望值来实现。特征f关于模型p(y|x)的指望值是:
(2)
这里,是x在训练样本中的经验分布。咱们约束这一指望值和训练样本中f的指望值相同。那就要求:
(3)
组合(1),(2) 和(3),咱们获得等式:
咱们称(3)为约束等式(constraint equation)或者简称约束(constraint)。咱们只关注那么知足(3)的模型,再也不考虑那些和训练样本中特征f频率不一致的模型。
目前总结来看,咱们如今有办法表示样本数据中内在的统计现象(叫作),也有办法使咱们的模型继承这一现象(叫作
)。
最后,仍我关于特征和约束再罗嗦两句:单词 ``feature'' and ``constraint''在讨论最大熵时常常被混用,咱们但愿读者注意区分这二者的概念:特征(feature)是(x,y)的二值函数;约束是一个等式:即模型的特征函数指望值等于训练样本中特征函数的指望值。
The maxent prinple
假设给咱们n个特征函数fi,它们的指望值决定了在建模过程当中重要的统计数据。咱们想要咱们的模型符合这些统计,就是说,咱们想要模型p属于的子集
。
图1是这一限制的几何解释。这里,P是三点上全部可能的几率分布空间。若是咱们不施加任何约束(图a),全部几率模型都是容许的。施加一个线性约束C1后,模型被限制在C1定义的区域,如图b示。若是两个约束是可知足的, 施加第二个线性约束后能够准确肯定p,如图c所示。另外一种情形是,第二个线性约束与第一个不一致,例如,第一个约束可能须要第一个点的几率是1/3,第二个约束须要第三个点的几率是3/4,图d所示。在目前的设置中,线性约束是从训练数据集中抽取的,不可能手工构造,所以不可能不一致。进一步来讲,在咱们应用中的线性约束甚至不会接近惟一肯定的p,就象图c那样。相反,集合中的模型是无穷的。
属于集合C的全部模型p中,最大熵的理念决定咱们选择最均匀的分布。但如今,咱们面临一个前面遗留的问题:什么是"uniform(均匀)"?
数学上,条件分布p(y|x)的均匀度就是条件熵定义:
熵的下界是0, 这时模型没有任何不肯定性;熵的上界是log|Y|,即在全部可能(|Y|个)的y上均匀分布。有了这个定义,咱们准备提出最大熵原则。
当从容许的几率分布集合C中选择一个模型时,选择模型,使得熵H(p)最大。
(6)
能够证实是well-defined的,就是说,在任何的约束集合C中,老是存在惟一的模型
取得最大熵。
Exponential form
最大熵原理呈现给咱们的是一个约束优化问题:find the which maximizes H(p)。简单的状况,咱们能够分析求出问题的解。如翻译模型中咱们施加前两个约束时,容易求得p的分布。不幸的是,一般最大熵模型的解没法明显得出,咱们须要一个相对间接的方法。
为了解决这个问题,咱们采用约束优化理论中Lagrange multipliers的方法。这里仅概述相关步骤,请参考进一步阅读以更深刻了解约束优化理论如何应用到最大熵模型中的。
咱们的约束优化问题是:
咱们将这个称为原始问题(primal)。简单的讲,咱们目标是在知足如下约束的状况下,最大化H(p)。
为了解决这个优化问题,引入Lagrangian 乘子。
实值参数和
对应施加在解上的n+1个约束。
下面的策略能够求出p的最优解(),但咱们不打算证实它。
首先,将和
当作常量,寻找p最大化公式(8)。这会产生以
和
为参数的表示式p,(参数没有解决)。接着,将该表达式代回(8)中,此次求
和
的最优解(
and
, respectively)。
按照这一方式,咱们保证和
不变,计算在全部
空间下,计算
的无约束的最大值。
令该式等于0, 求解 p(y|x):
能够看出公式(10)的第二个因子对应第二个约束:
将上式带入公式(10)获得:
将公式(11)带入(10),咱们获得:
所以,
Z(x)是正则化因子。
如今咱们要求解最优值,
。显然,咱们已经知道了
,还不知道
。
为此,咱们介绍新的符号,定义对偶函数:
对偶优化问题是:
由于p*和是固定的,公式(15)的右边只有自由变量
。
参数值等于的p*就是一开始约束优化问题的最优解。这办法不明显看出为何,但这的确是Lagrange multipliers理论的基本原理,一般叫作Kuhn-Tucker theorem(KTT)。详细的解释已经超出本文讨论的范围。咱们简单地陈述最后结论:
知足约束C最大熵模型具备(13)参数化形式,最优参数能够经过最小化对偶函数
求得。
补充说明:
到底是什么样呢? (记住咱们要求
的最小值, 这是Lagrange multipliers理论的基本原理)
Maximum likelihood
最大似然率:找出与样本的分布最接近的几率分布模型。
好比:10次抛硬币的结果是:
画画字画画画字字画画
假设p是每次抛硬币结果为"画"的几率。
获得这样试验结果的几率是:
P = pp(1-p)ppp(1-p)(1-p)pp=p7(1-p)3
最大化似然率的方法就是:
最优解是:p=0.7
似然率的通常定义为:
p(x)是模型估计的几率分布,是结果样本的几率分布。
在咱们的问题里,要估计的是p(y|x),最大似然率为:
(15)
所以,有:
这里的p具备公式(13)的形式,咱们的结果进一步能够表述为:
最大熵模型是具备公式(13)形式,且最大化样本似然率的模型。最大熵模型与最大似然率模型一致。
Computing the Parameters
要算λ,解析解确定是行不通的。对于最大熵模型对应的最优化问题,GIS,lbfgs,sgd等等最优化算法都能解。相比之下,GIS大概是最好实现的。这里只介绍GIS算法。
具体步骤以下:
(1)set 等于任意值, 好比等于0.
(2) 重复直到收敛:
这里,(t)是迭代下标,常数C定义为:
, 实践中C是训练样本里最大的特征个数。尽管C再大些也不要紧,可是它决定了收敛速度,仍是取最小的好。
实际上,GIS算法用第N次迭代的模型来估算每一个特征在训练数据中的分布。若是超过了实际的,就把相应参数变小。不然,将它们变大。当训练样本的特征分布和模型的特征分布相同时,就求得了最优参数。