最大熵算法笔记

最大熵算法笔记

 

      最大熵,就是要保留全部的不确定性,将风险降到最小,从信息论的角度讲,就是保留了最大的不确定性。

      最大熵原理指出,当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以人们称这种模型叫"最大熵模型"。

      匈牙利著名数学家、信息论最高奖香农奖得主希萨(Csiszar)证明,对任何一组不 自相矛盾的信息,这个最大熵模型不仅存在,而且是唯一的。而且它们都有同一个非常简单的形式 -- 指数函数。

      我们已经知道所有的最大熵模型都是指数函数的形式,现在只需要确定指数函数的参数就可以了,这个过程称为模型的训练。

      最原始的最大熵模型的训练方法是一种称为通用迭代算法GIS (generalized iterativescaling) 的迭代算法。GIS 的原理并不复杂,大致可以概括为以下几个步骤:

1. 假定第零次迭代的初始模型为等概率的均匀分布。

2. 用第 N 次迭代的模型来估算每种信息特征在训练数据中的分布,如果超过了实际的,就把相应的模型参数变小;否则,将它们便大。

3. 重复步骤 2 直到收敛。

      GIS 最早是由 Darroch 和 Ratcliff 在七十年代提出的。但是,这两人没有能对这种算法的物理含义进行很好地解释。后来是由数学家希萨(Csiszar) 解释清楚的,因此,人们在谈到这个算法 时,总是同时引用 Darroch 和Ratcliff 以及希萨的两篇论文。GIS 算法每次迭代的时间都很长,需要迭代很多次才能收敛,而且不太稳定,即使在 64 位计算机上都会出现溢出。因此,在实际应用中很少有人真正使用 GIS。大家只是通过它来了解最大熵模型的算法。

      八十年代,很有天才的孪生兄弟的达拉皮垂 (Della Pietra) 在 IBM 对 GIS 算法进行了两方面的改进,提出了改进迭代算法 IIS(improved iterative scaling)。这使得最大熵模型的训练时间缩短了一到两个数量级。这样最大熵模型才有可能变得实用。即使如此,在当时也只有 IBM 有条件是用最大熵模型。

      由于最大熵模型在数学上十分完美,对科学家们有很大的诱惑力,因此不少研究者试图把自 己的问题用一个类似最大熵的 近似模型去套。谁知这一近似,最大熵模型就变得不完美了,结果可想而知,比打补丁的凑合的方法也好不了多少。于是,不少热心人又放弃了这种方法。第一个在 实际信息处理应用中验证了最大熵模型的优势的,是宾夕法尼亚大学马库斯的另一个高徒原 IBM 现微软的研究员拉纳帕提(Adwait Ratnaparkhi)。拉纳帕提的聪明之处在于他没有对最大熵模型进行近似,而是找到了几个最适合用最大熵模型、而计算量相对不太大的自然语言处理问 题,比如词性标注和句法分析。拉纳帕提成功地将上下文信息、词性(名词、动词和形容词等)、句子成分(主谓宾)通过最大熵模型结合起来,做出了当时世界上 最好的词性标识系统和句法分析器。拉纳帕提的论文发表后让人们耳目一新。拉纳帕提的词性标注系统,至今仍然是使用单一方法最好的系统。科学家们从拉纳帕提 的成就中,又看到了用最大熵模型解决复杂的文字信息处理的希望。

      但是,最大熵模型的计算量仍然是个拦路虎。我在学校时花了很长时间考虑如 何简化最大熵模型的计算量。终于有一天,我对我的导师说,我发现一种数学变换,可以将大部分最大熵模型的训练时间在 IIS 的基础上减少两个数量级。我在黑板上推导了一个多小时,他没有找出我的推导中的任何破绽,接着他又回去想了两天,然后告诉我我的算法是对的。从此,我们就 建造了一些很大的最大熵模型。这些模型比修修补补的凑合的方法好不少。即使在我找到了快速训练算法以后,为了训练一个包含上下文信息,主题信息和语法信息 的文法模型(language model),我并行使用了 20 台当时最快的 SUN 工作站,仍然计算了三个月。由此可见最大熵模型的复杂的一面。最大熵模型快速算法的实现很复杂,到今天为止,世界上能有效实现这些算法的人也不到一百人。 有兴趣实现一个最大熵模型的读者可以阅读我的论文。

最大熵模型,可以说是集简与繁于一体,形式简单,实现复杂。值得一提的是,在Google的很多产品中,比如机器翻译,都直接或间接地用到了最大熵模型。

      讲到这里,读者也许会问,当年最早改进最大熵模型算法的达拉皮垂兄弟这些年难道没有做任何事吗?他们在九十年代初贾里尼克离开 IBM 后,也退出了学术界,而到在金融界大显身手。他们两人和很多 IBM 语音识别的同事一同到了一家当时还不大,但现在是世界上最成功对冲基金(hedge fund)公司----文艺复兴技术公司 (Renaissance Technologies)。我们知道,决定股票涨落的因素可能有几十甚至上百种,而最大熵方法恰恰能找到一个同时满足成千上万种不同条件的模型。达拉皮 垂兄弟等科学家在那里,用于最大熵模型和其他一些先进的数学工具对股票预测,获得了巨大的成功。从该基金 1988 年创立至今,它的净回报率高达平均每年 34%。也就是说,如果 1988 年你在该基金投入一块钱,今天你能得到 200 块钱。这个业绩,远远超过股神巴菲特的旗舰公司伯克夏哈撒韦(Berkshire Hathaway)。同期,伯克夏哈撒韦的总回报是 16 倍。

 

最大熵训练算法的比较

最大熵模型做为一个数学模型有一些特殊的或者通用的训练算法,比较常见的有GIS,SCGIS,IIS,LBFGS等,这里我根据自己的经验对他们做一番比较,仅供参考。

收敛速度:
既然是最优化算法,那么收敛速度是重要的性能衡量标准之一。
GIS算法在这方面的表现不敢令人恭维,在大的数据模型上大家可能只能用最大迭代次数来限制训练时间了。
SCGIS是在GIS算法的基础上做了优化,使减速因子变小,从而收敛速度能提高几十倍左右。
LBFGS算法是一种通用的最优化方法,其基于牛顿算法的思想,收敛速度自也不慢,比SCGIS稍快一些。

单次迭代速度:
单次迭代速度也是影响训练算法性能的重要因素之一,否则一次迭代就耗上半日,任你收敛再快,也是无用
GIS算法单次迭代是最快的,时间复杂度和特征数量成线性关系,但其实就时间复杂度来说三种算法都差不多
SCGIS算法单次迭代速度比GIS慢,在我们的系统中大概是3倍左右,主要由于SCGIS算法中数学运算比较多,所以其实现起来要特别注意针对数学运算的优化,不过终究是比GIS要慢的
LBFGS算法单次迭代速度比GIS算法稍慢,因为在算法内部除了和GIS算法类似的求模型期望外还多了一些线扫描之类的东西,但通常情况下这些操作都是很快的

稳定性:
这个纯粹是我们根据对特定数据上结果的观测总结出来的经验结果,无任何理论根据
GIS算法由于训练过慢故在实验中放弃掉了
SCGIS算法在用不同的参数进行训练的时候表现诡异,罕有规律可循
LBFGS算法在进行各种实验的时候表现相对稳定,在一定的误差下有一些规律

IIS算法在我们的系统中没有实现,故不可妄加评论,只在一些论文中看到过其一些表现,大致为收敛较快,单次迭代慢,故总体类同于GIS算法,也属iterative scaling流派。

 

 

你可能感兴趣的:(最大熵算法笔记)