最大熵模型
Logistic Regression
Logistic Distribution
设$X$是连续随机变量,$X$服从 logistic distribution 是指$X$具有下列分布函数和密度函数:
Binomial Logistic Regression Model
这是一种二分类模型,这里规定模型输出 $Y \in \{0, 1\}$, 也就是 $y_i \in \{0, 1\}$
其中,$x \in \mathbb{R}^n$ 是输入,$w \in \mathbb{R}^n$ 和 $ b \in \mathbb{R}$ 分别是权值向量和偏置,$\vec{w} \cdot \vec{x}$ 是向量内积运算。
Evaluation of Model Parameters
采用极大似然估计法估计模型参数,从而得到 logistics regression model。
我们设
则得到似然函数为
经过计算,对数似然函数为
对 $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)$ 的经验分布和边缘分布。
其中 $\nu(X = x, Y = y)$ 是样本 $(x, y)$ 出现的频数。
接下来介绍特征函数 feature function $f(x,y)$,$f()$ 描述输入 $x$ 与输出 $y$ 之间的某一个事实。
特征函数关于经验分布的期望值
特征函数关于模型与经验分布的期望值
如果模型能够获得训练数据中的信息,则可以认为上述两个期望值相等,即
综上,我们引出最大熵模型。
假设满足所有约束条件的模型集合为
定义在条件概率分布 $P(Y|X)$ 上的条件熵为
则模型集合 $\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$,最大熵模型的学习等价于约束最优化问题:
将其换为等价的最小化问题
将约束最优化问题转换为无约束最优化的对偶问题。引入拉格朗日乘子 $w_0, w_1, \dots, w_n$,定义拉格朗日函数 $L(P, w)$:
最优化的原始问题是
对偶问题是
先解决极小化问题, 记
求 $L(P, w)$ 对 $P(y | x)$ 的偏导数
令偏导数等于 $0$, 在 $\tilde{P} > 0$ 的情况下,解得
其中
称 $Z_w(x)$ 为归一化因子。
最后求解对偶问题外部的极大化问题
Improved Iterative Scaling
已知最大熵模型
其中
对数似然函数为
改进迭代算法的思路是,假设最大熵模型当前的参数向量是 $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$ 为下列方程的解:
其中,$f^{\Sigma}(x, y)$ 定义为:
然后,更新 $w_i$ 的值:
步骤3:如果不是所有 $w_i$ 都收敛,则重复步骤2。
Quasi-Newton Method : BFGS
对最大熵模型而言,
目标函数:
相应 $i$ 的梯度有,
定义 $g()$
算法步骤
输入:特征函数 $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}}$
- 选定初始点 $w^{(0)}$,取 $B_0$ 为正定对称矩阵,置 $k = 0$。
- 计算 $g_k = g(w^{(k)})$。
若 $\lVert g_k \rVert < \epsilon$,则停止计算,得 $w^{*} = w^{(k)}$;否则转第 3 步。 - 由 $B_k p_k = -g_k$ 求出 $p_k$。
- 一维搜索,求 $\lambda_k$ 使得
- 置 $w^{(k + 1)} = w^{(k)} + \lambda_k p_k$。
- 计算 $g_{k + 1} = g(w^{(k + 1)})$。
若 $\lVert g_{k + 1} \rVert < \epsilon$,则停止计算,得 $w^{*} = w^{(k + 1)}$;否则,按下式求出 $B_{k + 1}$: 其中, - 置 $k = k + 1$,转第 3 步。
补充说明
在 BFGS 算法中,$B_k$ 是对目标函数 Hessian 矩阵的近似。初始时 $B_0$ 通常取为单位矩阵或其他对称正定矩阵。每次迭代后,$B_k$ 按如下公式更新:
其中,
- $\delta_k = w^{(k + 1)} - w^{(k)}$ 表示参数的变化,
- $y_k = g_{k + 1} - g_k$ 表示梯度的变化。
$B_k$ 的更新保证了其对称正定性,并逐步逼近真实的 Hessian 矩阵,从而提升搜索方向的准确性和收敛速度。