Maximum Entropy Model 最大熵模型

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. 例子及应用

posted @ 2022-03-05 15:42  veager  阅读(166)  评论(0)    收藏  举报