最大熵模型

Logistic Regression

Logistic Distribution

\(X\)是连续随机变量,\(X\)服从 logistic distribution 是指\(X\)具有下列分布函数和密度函数:

\[ \begin{align} F(x) &= P(X \leq x) = \frac{1}{1 + e^{-(x-\mu)/\gamma}} \tag{1} \\ f(x) &= F'(x) = \frac{e^{-(x-\mu)/\gamma}}{\gamma\left(1 + e^{-(x-\mu)/\gamma}\right)^2} \tag{2} \end{align} \]

Binomial Logistic Regression Model

这是一种二分类模型,这里规定模型输出 \(Y \in \{0, 1\}\), 也就是 \(y_i \in \{0, 1\}\)

\[ \begin{align} P(Y = 0 | \mathbf{x}) &= \frac{1}{1 + \exp (\mathbf{w} \cdot \mathbf{x} + b)} \tag{3} \\ P(Y = 1 | \mathbf{x}) &= \frac{\exp (\mathbf{w} \cdot \mathbf{x} + b)}{1 + \exp (\mathbf{w} \cdot \mathbf{x} + b)} \tag{4} \end{align} \]

其中,\(\mathbf{x} \in \mathbb{R}^n\) 是输入,\(\mathbf{w} \in \mathbb{R}^n\) 和 $ b $ 分别是权值向量和偏置,\(\mathbf{w} \cdot \mathbf{x}\) 是向量内积运算。

Evaluation of Model Parameters

采用极大似然估计法估计模型参数,从而得到 logistics regression model

我们设

\[ P(Y = 1 | x) = \pi(x) \tag{5} \]

则得到似然函数为

\[ \prod_{i=1}^{N}[\pi(x_i)]^{y_i}[1 - \pi(x_i)]^{1 - y_i} \tag{6} \]

经过计算,对数似然函数为

\[ L(w) = \sum_{i=1}^{N} [y_i(\vec{w} \cdot \vec{x_i}) - \ln (1 + \exp (\vec{w} \cdot \vec{x_i}))] \tag{7} \]

\(L(w)\) 求极大值,得到 \(w\) 的估计值 \(\hat{w}\)


Maximum Entropy Model

The Principle of Maximum Entropy

最大熵原理的核心在于,使得整个概率模型的熵最大。

MaxEntropy Model

模型输入 \(X \in \mathcal{X} \subseteq \mathbb{R}^n\),输出 \(Y \in \mathcal{Y}\),条件概率分布 \(P(Y | X)\) 表示对于给定输入 \(X\) 以该条件概率输出 \(Y\)

给定训练数据集,可以确定联合分布 \(P(X, Y)\) 的经验分布和边缘分布。

\[ \begin{align} \tilde{P}(X = x, Y = y) &= \frac{\nu(X = x, Y = y)}{N} \tag{8} \\ \tilde{P}(X = x) &= \frac{\nu(X = x)}{N} \tag{9} \end{align} \]

其中 \(\nu(X = x, Y = y)\) 是样本 \((x, y)\) 出现的频数。

接下来介绍特征函数 feature function \(f(x,y)\)\(f()\) 描述输入 \(x\) 与输出 \(y\) 之间的某一个事实。

\[ f(x, y) = \begin{cases} 1, &\text{satisfying} \\ 0, &\text{otherwise} \tag{10} \end{cases} \]

特征函数关于经验分布的期望值

\[ E_{\tilde{P}}(f) = \sum_{x,y} \tilde{P}(x,y) f(x,y) \tag{11} \]

特征函数关于模型与经验分布的期望值

\[ E_P(f) = \sum_{x,y} \tilde{P}(x) P(y|x) f(x,y) \tag{12} \]

如果模型能够获得训练数据中的信息,则可以认为上述两个期望值相等,即

\[ E_{\tilde{P}}(f) = E_P(f) \tag{13} \]

综上,我们引出最大熵模型。

假设满足所有约束条件的模型集合为

\[ \mathcal{C} \equiv \{P \in \mathcal{P} \mid E_{\tilde{P}}(f_i) = E_P(f_i), \quad i=1,2,\dots,n\} \tag{14} \]

定义在条件概率分布 \(P(Y|X)\) 上的条件熵为

\[ H(P) = -\sum_{x,y} \tilde{P}(x) P(y|x) \ln P(y|x) \tag{15} \]

则模型集合 \(\mathcal{C}\) 中条件熵 \(H(P)\) 最大的模型称为最大熵模型。

Training a Maximum Entropy Model

类似 SVM 的学习过程。给定训练数据集 \(T = \{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\}\) 以及特征函数 \(f_i(x,y), \quad i = 1, 2, \dots, n\),最大熵模型的学习等价于约束最优化问题:

\[ \begin{align*} \max_{P \in \mathcal{C}} \quad & H(P) = -\sum_{x, y} \tilde{P}(x) P(y \mid x) \ln P(y \mid x) \\ \text{subject to} \quad & E_{\tilde{P}}[f_i] = E_P[f_i], \quad i = 1, 2, \dots, n \\ & \sum_{y} P(y \mid x) = 1 \end{align*} \]

将其换为等价的最小化问题

\[ \begin{align*} \min_{P \in \mathcal{C}} \quad -&H(P) = \sum_{x, y} \tilde{P}(x) P(y \mid x) \ln P(y \mid x) \tag{16} \\ \text{subject to} \quad & E_{\tilde{P}}[f_i] - E_P[f_i]= 0, \quad i = 1, 2, \dots, n \tag{17} \\ & \sum_{y} P(y \mid x) = 1 \tag{18} \end{align*} \]

将约束最优化问题转换为无约束最优化的对偶问题。引入拉格朗日乘子 \(w_0, w_1, \dots, w_n\),定义拉格朗日函数 \(L(P, w)\)

\[ \begin{align*} L(P, w) &\equiv -H(P) + w_0 \left(1 - \sum_{y} P(y | x)\right) + \sum_{i = 1}^{n} w_i (E_{\tilde{P}}(f_i) - E_{P}(f_i)) \tag{19} \\ &= \sum_{x,y} \tilde{P}(x) P(y | x) \ln P(y | x) + w_0\left(1 - \sum_{y} P(y | x)\right) + \\ &\sum_{i = 1}^{n} w_i\left(\sum_{x, y} \tilde{P}(x, y) f_i(x, y) - \sum_{x, y} \tilde{P}(x) P(y | x) f_i(x, y) \right) \end{align*} \]

最优化的原始问题是

\[ \min_{P \in \mathcal{C}} \max_{w} L(P, w) \tag{20} \]

对偶问题是

\[ \max_{w} \min_{P \in \mathcal{C}} L(P, w) \tag{21} \]

先解决极小化问题, 记

\[ \Psi(w) = \min_{P \in \mathcal{C}} L(P, w) = L(P_w, w) \tag{22} \]

\(L(P, w)\)\(P(y | x)\) 的偏导数

\[ \begin{align*} \frac{\partial L(P, w)}{\partial P(y | x)} &= \sum_{x, y} \tilde{P}(x)(\ln P(y | x) + 1) - \sum_{y}w_0 - \sum_{x, y} \left(\tilde{P}(x) \sum_{i = 1}^{n} w_i f_i(x, y) \right) \\ &= \sum_{x, y} \tilde{P}(x) \left(\ln P(y | x) + 1 - w_0 - \sum_{i = 1}^{n} w_i f_i(x, y) \right) \end{align*} \]

令偏导数等于 \(0\), 在 \(\tilde{P} > 0\) 的情况下,解得

\[ P_w(y | x) = \frac{1}{Z_w(x)} \exp \left(\sum_{i = 1}^{n} w_i f_i(x, y) \right) \tag{23} \]

其中

\[ Z_w(x) = \sum_{y} \exp \left(\sum_{i = 1}^{n} w_i f_i(x, y) \right) \tag{24} \]

\(Z_w(x)\) 为归一化因子。

最后求解对偶问题外部的极大化问题

\[ \max_{w} \Psi(w) \tag{25} \]

Improved Iterative Scaling

已知最大熵模型

\[ P_w(y | x) = \frac{1}{Z_w(x)} \exp \left(\sum_{i = 1}^{n} w_i f_i(x, y) \right) \]

其中

\[ Z_w(x) = \sum_{y} \exp \left(\sum_{i = 1}^{n} w_i f_i(x, y) \right) \]

对数似然函数为

\[ L(w) = \sum_{x, y} \tilde{P}(x, y) \sum_{i = 1}^{n} w_i f_i(x, y) - \sum_{x} \tilde{P}(x) \ln Z_w(x) \]

改进迭代算法的思路是,假设最大熵模型当前的参数向量是 \(w = (w_1, w_2, \dots, w_n)^{T}\),我们希望找到一个新的参数向量 \(w + \delta = (w_1 + \delta_1, \dots, w_n + \delta_n)^{T}\),使得模型的对数似然函数增值。

算法步骤

输入:特征函数 \(f_1, f_2, \dots, f_n\);经验分布 \(\tilde{P}(X, Y)\);模型 \(P_w(y | x)\)

输出:最优参数值 \(w_i^{\ast}\);最优模型 \(P_{w^{\ast}}\)

步骤1:对所有 \(i \in \{1, 2, \dots, n\}\),取初值 \(w_i = 0\)

步骤2:对每一 \(i \in \{1, 2, \dots, n\}\),执行以下操作:

首先,令 \(\delta_i\) 为下列方程的解:

\[ \sum_{x, y} \tilde{P}(x) P(y | x) f_i(x, y) \exp \left(\delta_i f^{\Sigma}(x, y) \right) = E_{\tilde{P}}(f_i) \]

其中,\(f^{\Sigma}(x, y)\) 定义为:

\[ f^{\Sigma}(x, y) = \sum_{i = 1}^{n} f_i(x, y) \]

然后,更新 \(w_i\) 的值:

\[ w_i \leftarrow w_i + \delta_i \]

步骤3:如果不是所有 \(w_i\) 都收敛,则重复步骤2。

Quasi-Newton Method : BFGS

对最大熵模型而言,

\[ P_w(y | x) = \frac{\exp \left(\sum_{i = 1}^{n} w_i f_i(x, y) \right)}{\sum_{y} \exp \left(\sum_{i = 1}^{n} w_i f_i(x, y) \right)} \]

目标函数:

\[ \min_{w \in \mathbb{R}^n} f(w) = \sum_{x} \tilde{P}(x) \ln \sum_{y} \exp \left(\sum_{i = 1}^{n} w_i f_i(x, y) \right) - \sum_{x, y} \tilde{P}(x, y) \sum_{i = 1}^{n} w_i f_i(x, y) \]

相应 \(i\) 的梯度有,

\[ \frac{\partial f(w)}{\partial w_i} = \sum_{x, y} \tilde{P}(x) P_w(y | x) f_i(x, y) - E_{\tilde{p}}(f_i) \]

定义 \(g()\)

\[ g(w) = \left(\frac{\partial f(x)}{\partial w_1}, \frac{\partial f(x)}{\partial w_2}, \dots,\frac{\partial f(x)}{\partial w_n} \right)^T \]

算法步骤

输入:特征函数 \(f_1, f_2, \dots, f_n\);经验分布 \(\tilde{P}(X, Y)\);目标函数 \(f(w)\);梯度 \(g(w) = \nabla f(w)\);精度要求 \(\epsilon\)输出:最优参数值 \(w_i^{\ast}\);最优模型 \(P_{w^{\ast}}\)

  1. 选定初始点 \(w^{(0)}\),取 \(B_0\) 为正定对称矩阵,置 \(k = 0\)
  2. 计算 \(g_k = g(w^{(k)})\)
    \(\lVert g_k \rVert < \epsilon\),则停止计算,得 \(w^{*} = w^{(k)}\);否则转第 3 步。
  3. \(B_k p_k = -g_k\) 求出 \(p_k\)
  4. 一维搜索,求 \(\lambda_k\) 使得 \[ f(w^{(k)} + \lambda_k p_k) = \min_{\lambda \geq 0} f(w^{(k)} + \lambda p_k) \]
  5. \(w^{(k + 1)} = w^{(k)} + \lambda_k p_k\)
  6. 计算 \(g_{k + 1} = g(w^{(k + 1)})\)
    \(\lVert g_{k + 1} \rVert < \epsilon\),则停止计算,得 \(w^{*} = w^{(k + 1)}\);否则,按下式求出 \(B_{k + 1}\)\[ B_{k + 1} = B_k + \frac{y_k y_k^T}{y_k^T \delta_k} - \frac{B_k \delta_k \delta_k^T B_k}{\delta_k^T B_k \delta_k} \] 其中, \[ y_k = g_{k + 1} - g_k, \quad \delta_k = w^{(k + 1)} - w^{(k)} \]
  7. \(k = k + 1\),转第 3 步。

补充说明

在 BFGS 算法中,\(B_k\) 是对目标函数 Hessian 矩阵的近似。初始时 \(B_0\) 通常取为单位矩阵或其他对称正定矩阵。每次迭代后,\(B_k\) 按如下公式更新:

\[ B_{k + 1} = B_k + \frac{y_k y_k^T}{y_k^T \delta_k} - \frac{B_k \delta_k \delta_k^T B_k}{\delta_k^T B_k \delta_k} \]

其中, - \(\delta_k = w^{(k + 1)} - w^{(k)}\) 表示参数的变化, - \(y_k = g_{k + 1} - g_k\) 表示梯度的变化。

\(B_k\) 的更新保证了其对称正定性,并逐步逼近真实的 Hessian 矩阵,从而提升搜索方向的准确性和收敛速度。


最大熵模型
https://ddccffq.github.io/2025/06/02/机器学习方法/最大熵模型/
作者
ddccffq
发布于
2025年6月2日
许可协议