Maximum Entropy Model 最大熵模型
1. 预备知识
1.1 熵
熵(Entropy)
条件熵(Conditional Entropy)
1.2 最大熵模型
1.2.1 符号
-
输入:\(X \in \mathcal{X} \subseteq \mathbb{R}^P\)
-
输出:\(Y \in \mathcal{Y} \subseteq \mathbb{R}\)
-
训练数据集:\(T = \left\{(x_1,y_1), (x_2,y_2), \cdots, (x_N,y_N) \right\}\)
-
\(\Pr(X,Y)\):\(X\) 和 \(Y\) 的联合分布 (joint distribution)
-
\(\Pr(X)\):\(X\) 的边际分布(marginal distribution)(也被称为 \(X\) 的先验分布)
\[\Pr(X) = \sum_{Y} \Pr(X,Y)
\]
-
\(\Pr(Y|X)\):\(Y\) 在 \(X\) 下的条件分布(conditional distribution)(也被称为 \(Y\) 的后验分布),表示实际的模型。
根据贝叶斯公式有:
\[\Pr(Y|X) = \frac{\Pr(X,Y)}{\Pr(X)}
\]
-
\(\tilde{\Pr}(X,Y)\),\(\tilde{\Pr}(X)\),\(\tilde{\Pr}(Y|X)\):在数据集 \(\mathcal{D}\) 下相应的经验分布,即:
\[\tilde{\Pr}(X=x,Y=y) = \frac{\nu(X=x,Y=y)}{N},
\quad
\tilde{\Pr}(X=x) = \frac{\nu(X=x)}{N}
\]
其中,\(\nu(X=x,Y=y)\) 表示数据集 \(\mathcal{D}\) 中样本 \((x,y)\) 出现的个数;\(\nu(X=x)\) 表示数据集 \(\mathcal{D}\) 中样本 \((x,\cdot)\) 出现的个数。
-
\(f(x,y)\):为某一特征函数
-
\(\mathbb{E}_{\tilde{\mathbb{P}}}(f)\):特征函数关于经验分布 \(\tilde{\Pr}(X,Y)\) 的期望:
\[\mathbb{E}_{\tilde{\mathbb{P}}}(f) = \sum_{(x,y) \in \mathcal{D}} \tilde{\Pr}(x,y) f(x,y)
\]
-
\(\mathbb{E}_{\mathbb{P}}(f)\):特征函数关于模型 \(\Pr(Y|X)\) 与经验分布 \(\tilde{\Pr}(X)\) 的期望:
\[\mathbb{E}_{\tilde{\mathbb{P}}}(f) = \sum_{(x,y) \in \mathcal{D}} \tilde{\Pr}(x) \Pr(y|x) f(x,y)
\]
其中,这里假设 \(\tilde{\Pr}(X)=\Pr(X)\)
1.2.2 原理
如果模型能够获取训练数据中的信息,那么就可以假设这两个期望值相等,即:
\[\mathbb{E}_{\mathbb{P}}(f) = \mathbb{E}_{\tilde{\mathbb{P}}}(f)
\]
上述等式作为最大熵模型学习的约束条件。
定义(最大熵模型):定义在条件概率分布 \(\Pr(Y|X)\) 上的条件熵为:
\[H(P) = -\sum_{(x,y) \in \mathcal{D}} \tilde{\Pr}(x) \Pr(y|x) \ln \Pr(y|x)
\]
需要满足约束条件:
\[\mathcal{C} \triangleq
\left\{\Pr \in \mathcal{P} \ | \ \mathbb{E}_{\mathbb{P}}(f_i) = \mathbb{E}_{\tilde{\mathbb{P}}}(f_i), \ i=1,2,\cdots,M \right\}
\]
2. 最大熵模型推导
2.1 公式
最大熵模型的学习等价于约束最优化问题:
\[\begin{array}{rl}
\max \limits_{P} H(P) = & -\sum \limits_{(x,y) \in \mathcal{D}} \tilde{P}(x) P(y|x) \ln P(y|x) \\
\text{s.t.} \quad & \mathbb{E}_{\mathbb{P}}(f_i) = \mathbb{E}_{\tilde{\mathbb{P}}}(f_i), \quad i=1,2,\cdots,M \\
& \sum \limits_{y \in \mathcal{Y}} P(y|x) = 1
\end{array}
\]
等价的写作最小化问题
\[\begin{array}{rl}
\min \limits_{P} - H(P) = & \sum \limits_{(x,y) \in \mathcal{D}} \tilde{P}(x) P(y|x) \ln P(y|x) \\
\text{s.t.} \quad & \mathbb{E}_{\mathbb{P}}(f_i) = \mathbb{E}_{\tilde{\mathbb{P}}}(f_i), \quad i=1,2,\cdots,M \\
& \sum \limits_{y \in \mathcal{Y}} P(y|x) = 1
\end{array}
\]
上式中,变量为 \(P(y|x)\),简写为 \(P\);其他符号,如 \(f_i(x,y)\) 等,均为已知参数。
2.2 拉格朗日乘子法
引入拉格朗日乘子(Lagrangian Multiplier) \(w_0\), \(w_1\), \(w_2\), \(\cdots\), \(w_M\),则拉格朗日函数 \(L(P, \boldsymbol{w})\) 为:
\[\begin{split}
L(P, \boldsymbol{w}) = & - H(P)
+ w_0 \left[1 - \sum_{y \in \mathcal{Y}} P(y|x) \right]
+ \sum_{i=1}^{M} w_i \left[ \mathbb{E}_{\tilde{\mathbb{P}}}(f_i) - \mathbb{E}_{\mathbb{P}}(f_i) \right] \\
= & \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x) P(y|x) \ln P(y|x)
+ w_0 \left[1 - \sum_{y \in \mathcal{Y}} P(y|x) \right]
+ \sum_{i=1}^{M} w_i \left[\sum_{(x,y) \in \mathcal{D}} \tilde{P}(x,y) f_i(x,y) - \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x) P(y|x) f_i(x,y) \right]
\end{split}
\]
求 \(L(P, \boldsymbol{w})\) 对 \(P(y|x)\) 的偏导数,并令片偏导数等于 0,有:
\[\begin{split}
\frac{\partial L(P, \boldsymbol{w})}{\partial P(y|x)} &= \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x) \left[\ln P(y|x) + 1 \right] - \sum_{y \in \mathcal{Y}} w_0 - \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x) \left[ \sum_{i=1}^{M} w_i f_i(x,y) \right] \\
&= \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x) \left[ \ln P(y|x) + 1 - w_0 - \sum_{i=1}^{M} w_i f_i(x,y) \right]
\end{split}
\]
注意,在上式中,
\[\sum_{y \in \mathcal{Y}} w_0 = \sum_{x \in \mathcal{X}} \tilde{P}(x) \sum_{y \in \mathcal{Y}} w_0 = \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x) w_0
\]
在 \(\tilde{P}(x) > 0\) 的情况下:
\[P(y|x) = \exp \left[ \sum_{i=1}^{M} w_i f_i(x,y) + w_0 - 1 \right]
= \frac{ \exp \left[\sum \limits_{i=1}^{M} w_i f_i(x,y) \right]}{\exp(1-w_0)}
\]
由于 \(\sum \limits_{y \in \mathcal{Y}} P(y|x)=1\),得到:
\[\sum_{y \in \mathcal{Y}} P(y|x)
= \sum_{y \in \mathcal{Y}} \frac{ \exp \left[\sum \limits_{i=1}^{M} w_i f_i(x,y) \right]}{\exp(1-w_0)}
= \frac{1}{\exp(1-w_0)} \sum_{y \in \mathcal{Y}} \exp \left[\sum \limits_{i=1}^{M} w_i f_i(x,y) \right] = 1
\]
定义规范因子 \(Z_w(x)\)
\[Z_w(x) = \exp(1-w_0) = \sum_{y \in \mathcal{Y}} \exp \left[\sum \limits_{i=1}^{M} w_i f_i(x,y) \right]
\]
因此可以得到 \(P(y|x)\) 的最终表达式为:
\[P_w(y|x) = \frac{1}{Z_w(x)} \exp \left[\sum_{i=1}^{M} w_i f_i(x,y) \right]
\]
其中,\(\boldsymbol{w} = [w_1,w_2,\cdots,w_M]^{\top}\) 为最大熵模型的需要学习的参数。
3. 参数估计
3.1 极大似然估计
在联合经验概率分布 \(\tilde{P}(X,Y)\) 下,条件概率分布 \(P(Y|X)\) 的对数似然函数为:
\[LL_{\tilde{P}}(P_w)
= \ln \prod_{(x,y) \in \mathcal{D}} P(y|x)^{\tilde{P}(x,y)}
= \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x,y) \ln P(y|x)
\]
当条件概率分布 \(P(Y|X)\) 为最大熵模型时,则有
\[\begin{split}
LL_{\tilde{P}}(P_w)
&= \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x,y) \ln P(y|x) \\
&= \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x,y) \sum_{i=1}^{M} w_i f_i(x,y) - \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x,y) \ln Z_w(x) \\
&= \sum_{(x,y) \in \mathcal{D}} \tilde{P}(x,y) \sum_{i=1}^{M} w_i f_i(x,y) - \sum_{x \in \mathcal{X}} \tilde{P}(x) \ln Z_w(x)
\end{split}
\]
3.2 改进的迭代尺度法(Improved iterative scaling,IIS)
算法: IIS
输入: 特征函数 \(f_1,f_2,\cdots,f_M\);训练样本 \(\mathcal{D}\) 的联合经验分布 \(\tilde{P}(X,Y)\);模型 \(P_w (y|x)\)
输出: 最优参数 \(w_i^*\);最优模型 \(P_w^*\)
步骤 1: 初始化参数。 令\(w_i^{(0)}=0, \forall i = 1,2,\cdots,M\)
步骤 2: 更新参数。 对于 \(i = 1,2,\cdots,M\):
(a)求下述方程关于 \(\delta_i^{(t)}\) 的解
\[\sum_{x,y} \tilde{P}(x) \, P_{w^{(t)}}(y|x) \, f_i (x,y) \, \exp[\delta_i^{(t)} \, F(x,y)] = \mathbb{E}_{\tilde{\mathbb{P}}}(f_i)
\]
其中:
\[F(x,y) = \sum_{i=1}^{M} f_i(x,y)
\]
(b) 更新 \(w_i\)
\[w_i^{(t+1)} = w_i^{(t)} + \delta_i,
\quad i = 1,2,\cdots,M
\]
步骤 3: 收敛判断。 若 \(w_i^{(t+1)}\) 均收敛,则停止循环;否则,继续执行步骤 2。
在步骤 2 (a) 求解 \(\delta_i\) 的过程中,
- 如果 \(F(x,y)\) 为常数,即 \(F(x,y)=C, \, \forall x, y\),则 \(\delta_i\) 可以显式地表示为:
\[\delta_i = \frac{1}{A} \ln \left[ \frac{\mathbb{E}_{\tilde{\mathbb{P}}}(f_i)}{\mathbb{E}_{\mathbb{P}_{w^{(t)}}}(f_i)} \right]
\]
- 如果 \(F(x,y)\) 不是常数,则需要通过数值计算 \(\delta_i\),如牛顿法等。
3.2 其他数值方法
其他数值方法,如牛顿法,逆牛顿法等,也可以通过最大化对数似然函数 \(LL_{\tilde{P}}(P_w)\) 来得到最优的 \(w_i^*\)
4. 例子及应用