最大熵模型(maximum entropy model)是由最大熵原理推导实现的。最大熵原理是在满足约束条件的模型集合中给出最优模型选择的一个准则。
1 最大熵原理
最大熵原理是概率模型学习的一个准则。最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。通常用约束条件来确定概率模型的集合,所以,最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。
假设离散随机变量 \(X\) 的概率分布是 \(P(X)\),则其熵是
\[H(P) = - \sum \limits_{x} P(x) \log P(x)
\]
熵满足下列不等式:
\[0 \le H(P) \le \log |X|
\]
式中,\(|X|\) 是 \(X\) 的取值个数,当且仅当 \(X\) 的分布是均匀分布时右边的等号成立,这就是说,当 \(X\) 服从均匀分布时,熵最大。在信息熵、条件熵、信息增益与基尼指数有推导过。
直观地,最大熵原理认为要选择的概率模型首先必须满足已有的事实,即约束条件。在没有更多信息的情况下,那么不确定的部分都是“等可能的”。最大熵原理通过熵的最大化来表示等可能性,“等可能”不容易操作,而熵则是一个可优化的数值指标。
例子 \(\quad\) 假设随机变量 \(X\) 有 5 个取值 \({A, B, C, D, E}\) ,要估计取各个值的概率 \(P(A), P(B), P(C), P(D), P(E)\)。
解 这些概率值满足以下约束条件:
\[P(A) + P(B) + P(C) + P(D) + P(E) = 1
\]
(1)满足这个约束条件的概率分布有无穷多个。如果没有任何其它信息,仍要对概率分布进行估计,一个办法就是认为这个分布中取各个值的概率是相等的:
\[P(A) = P(B) = P(C) = P(D) = P(E) = \frac{1}{5}
\]
等概率表示了对事物的无知。因为没有更多的信息,这种判断是合理的。
(2)有时,能从一些先验知识中得到一些对概率值的约束条件,例如
\[\begin{aligned}
& P(A) + P(B) = \frac{3}{10} \\
& P(A) + P(B) + P(C) + P(D) + P(E) = 1
\end{aligned}
\]
满足这两个约束条件的概率分布仍然有无穷多个。在缺少其它信息的情况下,可以认为 \(A\) 与 \(B\) 是等概率的,\(C\),\(D\) 与 \(E\) 是等概率的,于是
\[\begin{aligned}
& P(A) = P(B) = \frac{3}{20} \\
& P(C) = P(D) = P(E) = \frac{7}{30}
\end{aligned}
\]
例子中概率模型学习的方法正是遵循了最大熵原理。
2 最大熵模型的定义
最大熵原理是统计学习的一般原理,将它应用到分类得到最大熵模型。
假设分类模型是一个条件概率分布 \(P(Y|X), X \in \mathcal{X} \subseteq \mathbb{R}^n\) 表示输入,\(Y \in \mathcal{Y}\) 表示输出, \(\mathcal{X}\) 和 \(\mathcal{Y}\) 分别是输入和输出的集合。这个模型表示的是对于给定输入 \(X\),以条件概率 \(P(Y|X)\) 输出 \(Y\)。
给定一个训练数据集
\[T = \{(x_1, y_1), (x_2, y_2), \cdots, (x_N, y_N)\}
\]
学习的目标是用最大熵原理选择最好的分类模型。
首先考虑模型应该满足的条件。给定训练数据集,可以确定联合分布 \(P(X, Y)\) 的经验分布和边缘分布 \(P(X)\) 的经验分布,分别以 \(\tilde{P}(X, Y)\) 和 \(\tilde{P}(X)\) 表示,这里
\[\begin{aligned}
& \tilde{P}(X=x, Y=y) = \frac{\nu(X=x, Y=y)}{N} \\
& \tilde{P}(X=x) = \frac{\nu(X=x)}{N}
\end{aligned}
\]
其中,\(\nu(X=x, Y=y)\) 表示训练数据中样本 \((x, y)\) 出现的频数,\(\nu(X=x)\) 表示训练数据中输入 \(x\) 出现的频数,\(N\) 表示训练样本容量。
用特征函数(feature function)\(f(x, y)\) 描述输入 \(x\) 和输出 \(y\) 之间的某一个事实,其定义是
\[\begin{equation}
f(x, y) = \left\{
\begin{aligned}
1, \quad & x 和 y 满足某一事实 \\
0, \quad & 否则
\end{aligned}
\right.
\end{equation}
\]
它是一个二值函数,当 \(x\) 和 \(y\) 满足这个事实时取值为 1,否则取值为 0。
特征函数 \(f(x, y)\) 关于经验分布 \(\tilde{P}(X, Y)\) 的期望值,用 \(E_{\tilde{P}} (f)\) 表示。
\[E_{\tilde{P}} (f) = \sum \limits_{x, y} \tilde{P}(x, y)f(x, y)
\]
特征函数 \(f(x, y)\) 关于模型 \(P(Y|X)\) 与经验分布 \(\tilde{P}(X)\) 的期望值,用 \(E_P(f)\) 表示
\[E_P (f) = \sum \limits_{x, y} \tilde{P}(x)P(y|x)f(x, y)
\]
如果模型 \(P(Y|X)\) 能够获取训练数据中的信息,那么就可以假设这两个期望值相等,即
\[E_{\tilde{P}} (f) = E_P (f)
\]
或
\[\sum \limits_{x, y} \tilde{P}(x)P(y|x)f(x, y) = \sum \limits_{x, y} \tilde{P}(x, y)f(x, y)
\]
我们将上式作为模型学习的约束条件。假如有 \(n\) 个特征函数 \(f_i(x, y), \ i=1, 2, \cdots, n\),那么就有 \(n\) 个约束条件。
定义(最大熵模型) \(\quad\) 假设满足所有约束条件的模型集合为
\[\mathcal{C} \equiv \{P \in \mathcal{P} | E_P(f_i) = E_{\tilde{P}}(f_i), \ i=1, 2, \cdots, n \}
\]
定义在条件概率分布 \(P(Y|X)\) 上的条件熵为
\[H(P) = -\sum \limits_{x, y} \tilde{P}(x)H(y|x) = -\sum \limits_{x, y} \tilde{P}(x)P(y|x) \log P(y|x)
\]
则模型集合 \(\mathcal{C}\) 中条件熵 \(H(P)\) 最大的模型称为最大熵模型。
3 最大熵模型的学习
最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题。
对于给定训练数据集 \(T = \{(x_1, y_1), (x_2, y_2), \cdots, (x_N, y_N)\}\) 以及特征函数 \(f_i(x, y), \ i=1, 2, \cdots, n\),最大熵模型的学习等价于约束最优化问题
\[\begin{aligned}
\max \limits_{P \in \mathcal{C}} \quad & H(P) = - \sum \limits_{x, y} \tilde{P}(x)P(y|x) \log P(y|x) \\
s.t. \quad & E_P(f_i) = E_{\tilde{P}}(f_i), \ i = 1, 2, \cdots, n \\
& \sum \limits_{y} P(y|x) = 1
\end{aligned}
\]
按照最优化问题的习惯,将求最大值问题改写为等价的求最小值问题
\[\begin{aligned}
\min \limits_{P \in \mathcal{C}} \quad & - H(P) = \sum \limits_{x, y} \tilde{P}(x)P(y|x) \log P(y|x) \\
s.t. \quad & E_P(f_i) - E_{\tilde{P}}(f_i) = 0, \ i = 1, 2, \cdots, n \\
& \sum \limits_{y} P(y|x) = 1
\end{aligned}
\]
求解上面约束最优化问题所得出的解,就是最大熵模型学习的解。这里将约束最优化的原始问题转换为无约束最优化的对偶问题。通过求解对偶问题求解原始问题。
\[\begin{aligned}
L(P, w) & \equiv - H(P) + w_0 \Big(1 - \sum \limits_{y} P(y|x) \Big) + \sum \limits_{i=1}^{n} w_i \Big(E_P(f_i) - E_{\tilde{P}}(f_i) \Big) \\
& = \sum \limits_{x, y} \tilde{P}(x) P(y|x) \log P(y|x) + w_0 \Big(1 - \sum \limits_{y} P(y|x) \Big) \\
& \ + \sum \limits_{i=1}^{n} w_i \Big( \sum \limits_{x, y} \tilde{P}(x, y)f_i(x, y) - \sum \limits_{x, y} \tilde{P}(x)P(y|x)f_i(x, y) \Big)
\end{aligned}
\]
最优化的原始问题是
\[\min \limits_{P \in \mathcal{C}} \max \limits_{w} L(P, w)
\]
对偶问题是
\[\max \limits_{w} \min \limits_{P \in \mathcal{C}} L(P, w)
\]
由于拉格朗日函数 \(L(P, w)\) 是 \(P\) 的凸函数,原始问题的解与对偶问题的解是等价的。可以通过求解对偶问题来求解原始问题。
首先,求解对偶问题内部的极小化问题 \(\min \limits_{P \in \mathcal{C}} L(P, w)\)。\(\min \limits_{P \in \mathcal{C}} L(P, w)\) 是 \(w\) 的函数,将其记作
\[\Psi(w) = \min \limits_{P \in \mathcal{C}} L(P, w) = L(P_w, w)
\]
\(\Psi(w)\) 称为对偶函数。同时,将其解记作
\[P_w = \arg \min \limits_{P \in \mathcal{C}} L(P, w) = P_w(y|x)
\]
具体的,求 \(L(P, w)\) 对 \(P(y|x)\) 的偏导
\[\begin{aligned}
\frac{\partial{L(P, w)}}{\partial{P(y|x)}} & = \sum \limits_{x, y} \tilde{P}(x)( \log P(y|x) + 1) - \sum \limits_y w_0 - \sum \limits_{x, y} \Big( \tilde{P}(x) \sum \limits_{i=1}^{n} w_if_i(x, y) \Big) \\
& = \sum \limits_{x, y} \tilde{P}(x) \Big( \log P(y|x) + 1 - w_0 - \sum \limits_{i=1}^{n} w_i f_i(x, y) \Big)
\end{aligned}
\]
令偏导数等于 0,在 \(\tilde{P}(x) > 0\) 的情况下,解得
\[P(y|x) = \exp \Big(\sum \limits_{i=1}^{n}w_i f_i(x, y) + w_0 -1 \Big) = \frac{\exp \Big(\sum \limits_{i=1}^{n}w_i f_i(x, y)\Big)}{\exp (1-w_0)}
\]
由于 \(\sum \limits_{y} P(y|x) = 1\),得
\[P_w(y|x) = \frac{1}{Z_w(x)} \exp \Big( \sum \limits_{i=1}^{n}w_i f_i(x, y) \Big)
\]
其中,
\[Z_w(x) = \sum \limits_y \exp \Big( \sum \limits_{i=1}^{n}w_i f_i(x, y) \Big)
\]
\(Z_w(x)\) 称为规范化因子,\(f_i(x, y)\) 是特征函数,\(w_i\) 是特征的权值。因此以上求出的模型 \(P_w = P_w(y|x)\) 就是最大熵模型。这里,\(w\) 是最大熵模型中的参数向量,求解最大熵模型就变成了求解参数为 \(w\) 的最优化问题。
之后,求解对偶问题外部的极大化问题
\[\max \limits_w \Psi(w)
\]
将其解记为 \(w^*\),即
\[w^* = \arg \max \limits_w \Psi(w)
\]
这就是说,可以应用最优化算法求对偶函数 \(\Psi(w)\) 的极大化,得到 \(w^*\),用来表示 \(P^* \in \mathcal{C}\)。这里,\(P^* = P_{w^*} = P_{w^*}(y|x) = \frac{1}{Z_{w^*}} \exp \Big( \sum \limits_{i=1}^{n}w^*_i f_i(x, y) \Big)\) 是学习到的最优模型(最大熵模型)。也就是说,最大熵模型的学习归结为为对偶函数 \(\Psi(w)\) 的极大化。
4 极大似然估计
对偶函数的极大化等价于最大熵模型的极大似然估计。
最大熵模型:求解对偶问题的中 \(\min \limits_{P \in \mathcal{C}}L(P, w)\) 得到的 \(P_w(y|x)\)
对偶函数:将求得的 \(P_w(y|x)\) 代入到对偶问题中 \(\min \limits_{P \in \mathcal{C}}L(P, w)\) 得到的函数
已知训练数据的经验概率分布 \(\tilde{P}(x, y)\),条件概率分布 \(P(Y|X)\) 的对数似然函数表示为
\[L_{\tilde{P}}(P_w) = \log \prod \limits_{x, y} P(y|x)^{\tilde{P}(x, y)} = \sum \limits_{x, y} \tilde{P}(x, y) \log P(y|x)
\]
当条件概率分布 \(P(Y|X)\) 是最大熵模型 \(P_w(Y|X)\) 时,对数似然函数 \(L_{\tilde{P}}(P_w)\) 为
\[\begin{aligned}
L_{\tilde{P}}(P_w) & = \sum \limits_{x, y} \tilde{P}(x, y) \log P(y|x) \\
& = \sum \limits_{x, y} \tilde{P}(x, y) \sum \limits_{i=1}^{n} w_i f_i(x, y) - \sum \limits_{x, y} \tilde{P}(x, y) \log Z_w(x) \\
& = \sum \limits_{x, y} \tilde{P}(x, y) \sum \limits_{i=1}^{n} w_i f_i(x, y) - \sum \limits_{x} \tilde{P}(x) \log Z_w(x)
\end{aligned}
\]
对于对偶函数 \(\Psi(w)\),即将 \(P_w(Y|X)\) 代入拉格朗日函数 \(L(P, w)\) 中,得
\[\begin{aligned}
\Psi(w) & = \sum \limits_{x, y} \tilde{P}(x) P_w(y|x) \log P(y|x) \\
& + \sum \limits_{i=1}^{n} w_i \Big( \sum \limits_{x, y} \tilde{P}(x, y)f_i(x, y) - \sum \limits_{x, y} \tilde{P}(x) P_w(y|x) f_i(x, y) \Big) \\
& = \sum \limits_{x, y} \tilde{P}(x, y) \sum \limits_{i=1}^{n} w_i f_i(x, y) + \sum \limits_{x, y} \tilde{P}(x) P_w(y|x) \Big( \log P_w(y|x) - \sum \limits_{i=1}^{n}w_i f_i(x, y) \Big) \\
& = \sum \limits_{x, y} \tilde{P}(x, y) \sum \limits_{i=1}^{n} w_i f_i(x, y) - \sum \limits_{x, y} \tilde{P}(x) P_w(y|x) \log Z_w(x) \\
& = \sum \limits_{x, y} \tilde{P}(x, y) \sum \limits_{i=1}^{n} w_i f_i(x, y) - \sum \limits_{x} \tilde{P}(x) \log Z_w(x) \\
\end{aligned}
\]
最后一步用到 \(\sum \limits_{y} P(y|x) = 1\)。
比较上面两个式子,可得
\[\Psi(w) = L_{\tilde{p}}(P_w)
\]
既然对偶函数 \(\Psi(w)\) 等价于对数似然函数 \(L_{\tilde{p}}(P_w)\),于是证明了最大熵模型学习中的对偶函数极大化等价于最大熵模型的极大似然估计这一事实。
这样,最大熵模型的学习问题,就转换为具体求解对数似然函数极大化或对偶函数极大化的问题。
5 最大熵模型与 Logistic 模型
理解最大熵模型和 Logistic 模型之间的关系,有利于进一步理解特征函数的定义。这里再写一遍:
定义(特征函数) \(\quad\) \(f(x, y)\) 描述输入 \(x\) 和输出 \(y\) 之间的某一个事实,其定义是
\[\begin{equation}
f(x, y) = \left\{
\begin{aligned}
1, \quad & x 和 y 满足某一事实 \\
0, \quad & 否则
\end{aligned}
\right.
\end{equation}
\]
它是一个二值函数,当 \(x\) 和 \(y\) 满足这个事实时取值为 1,否则取值为 0。
假设 \(x \in \mathcal{X} \subseteq \mathbb{R}^n\),并且假定 \(y \in \{0, 1\}\) 是二元变量,取特征函数
\[\begin{equation}
f_i(x, y) = \left\{
\begin{aligned}
x_i, \quad & y=1 \\
0, \quad & y=0, \quad i = 1, 2, \cdots, n
\end{aligned}
\right.
\end{equation}
\]
由本文上面求得的最大熵模型为
\[\begin{aligned}
P_w(y|x) = \frac{\exp \Big(\sum \limits_{i=1}^{n} w_i f_i(x, y)\Big)}{\sum \limits_{y} \exp \Big(\sum \limits_{i=1}^{n} w_i f_i(x, y)\Big) }
\end{aligned}
\]
将 \(y\) 为二元变量以及 \(y=1\) 代入得
\[\begin{aligned}
P(y=1|x, w) & = P_w(y=1|x) = \frac{\exp \Big(\sum \limits_{i=1}^{n} w_i f_i(x, 1)\Big)}{\exp \Big(\sum \limits_{i=1}^{n} w_i f_i(x, 1)\Big) + \exp \Big(\sum \limits_{i=1}^{n} w_i f_i(x, 0)\Big)} \\
& = \frac{\exp \Big(\sum \limits_{i=1}^{n} w_i f_i(x, 1)\Big)}{1 + \exp \Big(\sum \limits_{i=1}^{n} w_i f_i(x, 1)\Big)} \\
& = \frac{\exp \Big(\sum \limits_{i=1}^{n} w_i x_i\Big)}{1 + \exp \Big(\sum \limits_{i=1}^{n} w_i x_i\Big)} \\
& = \frac{1}{1 + \exp (-wx)}
\end{aligned}
\]
同理,当 \(y=0\) 时,得
\[P(y=0|x, w) = P_w(y=0|x) = \frac{1}{1 + \exp (wx)}
\]
推导结果刚好是 Logistic 模型,因此最大熵模型在特征函数满足某一种条件时,和 Logistic 回归模型等价。
6 小结
-
最大熵原理是在满足约束条件的模型集合中给出最优模型选择的一个准则,最大熵模型是一个分类模型。
-
最大熵模型学习中的对偶函数极大化等价于最大熵模型的极大似然估计。
参考
- 《统计学习方法》 李航
- 如何理解最大熵模型里面的特征?