> For the complete documentation index, see [llms.txt](https://chenjunren.gitbook.io/read-the-beauty-of-mathematics/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chenjunren.gitbook.io/read-the-beauty-of-mathematics/di-20-zhang-tan-tan-zui-da-mo-xing.md).

# 第 20 章 谈谈最大熵模型

我们在投资的时候常常讲不要把所有的鸡蛋放在一个篮子里，这样可以降低风险。

最大熵，说白了，就是要保留全部的不确定性，将风险降到最小。

## 最大嫡原理

最大熵原理指出，需要对一个随机事件分布进行预测时，我们的预测应当满足全部已知的条件，而对未知的情况不要做任何主观假设。在这种情况下，概率分布最均匀，预测风险最小。因为这时，概率分布的信息嫡最大，所以叫“最大嫡模型”。 通俗理解就是当我们遇到不确定性时，就要保留各种可能性。

> &#x20;匈牙利著名数学家、信息论最高奖香农奖得主希萨（I.Csiszar）证明：对任何一组不自相矛盾的信息，最大熵模型不仅存在而且是唯一的。并且都有同一个非常简单的形式--**指数函数**。最大熵模型计算量很大，宾夕法尼亚大学马库斯教授的高徒拉纳帕提（Adwait Ratnaparkhi）找到几个最适合用最大熵模型且计算量相对不太大的自然语言处理问题，比如词性标注、句法分析。他成功将上下文信息、词性（名词、动词、形容词）以及主谓宾等句子成分，通过最大熵模型结合起来，做出当时世界上最好的词性标注系统和句法分析器。

## 最大熵模型的训练

最大熵模型实际上非常复杂，计算量非常大。

假定搜索的排序需要考虑 20 种特征![\\{x\_1,\ x\_2,\ \cdots ,\ x\_{20}\\}](https://www.zhihu.com/equation?tex=%5C%7Bx_1%2C%5C%20x_2%2C%5C%20%5Ccdots%20%2C%5C%20x_%7B20%7D%5C%7D)，需要排序的网页是![d](https://www.zhihu.com/equation?tex=d)，那么即使这些特征相互独立，对应的最大熵模型也是“很长”的：

![（20.1）](https://www.zhihu.com/equation?tex=P%5Cleft\(%20d%5Cmid%20x_1%2C%5C%2C%5C%2Cx_2%2C%5C%2C%5C%2C%5Ccdots%20%2C%5C%2C%5C%2Cx_%7B20%7D%20%5Cright\)%20%3D%5Cfrac%7B1%7D%7BZ%5Cleft\(%20x_1%2C%5C%2C%5C%2Cx_2%2C%5C%2C%5C%2C%5Ccdots%20%2C%5C%2C%5C%2Cx_%7B20%7D%20%5Cright\)%7De%5E%7B%5Clambda%20_1%5Cleft\(%20x_1%2C%5C%20d%20%5Cright\)%20%2B%5Clambda%20_2%5Cleft\(%20x_2%2C%5C%20d%20%5Cright\)%20%2B%5Ccdots%20%2B%5Clambda%20_%7B20%7D%5Cleft\(%20x_%7B20%7D%2C%5C%20d%20%5Cright\)%7D)

其中归一化因子

![（20.2）](https://www.zhihu.com/equation?tex=Z%5Cleft\(%20x_1%2C%5C%2C%5C%2Cx_2%2C%5C%2C%5C%2C%5Ccdots%20%2C%5C%2C%5C%2Cx_%7B20%7D%20%5Cright\)%20%3D%5Csum_d%7Be%5E%7B%5Clambda%20_1%5Cleft\(%20x_1%2C%5C%2C%5C%2Cd%20%5Cright\)%20%2B%5Clambda%20_2%5Cleft\(%20x_2%2C%5C%2C%5C%2Cd%20%5Cright\)%20%2B%5Ccdots%20%2B%5Clambda%20_%7B20%7D%5Cleft\(%20x_%7B20%7D%2C%5C%2C%5C%2Cd%20%5Cright\)%7D%7D)

其中归一化因子![Z](https://www.zhihu.com/equation?tex=Z)保证概率加起来等于1，参数![\lambda ](https://www.zhihu.com/equation?tex=%5Clambda%20)需要通过模型训练获得。

最原始的最大熵模型训练方法为通用迭代算法GIS（Generalized Iterative Scaling），其原理大致为：

1. 假定第零次迭代的初始模型为等概率的均匀分布。
2. 用第N次迭代的模型来估算每种信息特征在训练数据中的分布，如果超过了实际的，就把相应的模型参数变小，否则变大。
3. 重复步骤 2 直到收敛。

这种训练方法为典型的期望值最大化算法（Expectation Maximization,简称EM），由希萨解释清楚这种算法的物理含义。由于GIS算法每次迭代时间很长，需要迭代很多次才收敛，且不太稳定，因此很少实际使用，只通过其来了解最大熵模型的算法。之后达拉.皮垂兄弟对其改进，提出了改进迭代算法IIS（Improved Iterative Scaling），使最大熵模型训练时间缩短一两个数量级，吴军在约翰.霍普金斯大学读博士时发现一种数学变换，又将训练时间在IIS基础上减少两个数量级。

## 小结

最大熵模型形式简单，从效果上看是唯一一种既能满足各种信息源的限制条件又能保证平滑性的模型，但实现复杂，计算量巨大。
