最大熵模型(一)
最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。通常用约束条件来确定概率模型的集合,所以最大熵原理也可以表述为在满足约束条件的模型集合中选择熵最大的模型。
设离散变量X的概率分布为P(X),那么熵为
\begin{equation} H(P)=-\sum\limits_{x}P(x)logP(x)\end{equation}
熵满足下列不等式:
$$ 0\leq H(P)\leq log|X| $$
其中,|X|表示X的取值个数,当且仅当X是均匀分布时,右边等号成立,此时熵最大。
直观地,最大熵原理认为要选择的概率模型首先必须满足已有的事实,即约束条件,然后对于不确定的部分是“等可能的”。
假设分类模型是一个条件概率分布$P(Y|X)$,$X\in\cal X \subseteq \bf R^n $表示输入,$Y \in \cal Y $表述输出,此分类模型表示,给定输入X,以条件概率$P(Y|X)$输出Y。
给定一个训练数据集
$$T={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}$$
学习的目的是使用最大熵原理选择最好的分类模型
首先考虑给定的训练数据集,联合分布$P(X,Y)$的经验分布和边缘分布$P(X)$的经验分布,以$\tilde{P}(X,Y), \tilde{P}(X)$表示,则
\begin{equation} \tilde{P}(X=x,Y=y)=\frac {\mit v(X=x,Y=y)} {N}\end{equation}
\begin{equation} \tilde{P}(X=x)=\frac {\mit v(X=x)} N\end{equation}
其中,$\mit v(X=x,Y=y)$表示训练数据中样本 (x,y)出现的频数,$\mit(X=x)$表示训练数据中输入 x 出现的频数,N 表示训练样本容量。
用特征函数(feature function)f(x,y) 描述输入x 与输出 y 之间的某一个事实,
$$f(x,y)=\begin{cases} 1, & \text {x与y满足某一事实} \\ 0, & \text {否则} \end{cases} $$
其实,特征函数不一定是上面这个简单的二值函数,有可能是更加复杂的,这里只考虑使用简单的二值函数。
特征函数 f(x,y) 关于经验分布 $\tilde{P}(x,y)$的期望值,用$E_{\tilde{P}}(f)$表示
\begin{equation} E_{\tilde{P}}(f)=\sum\limits_{x,y}\tilde{P}(x,y)f(x,y)\end{equation}
特征函数 f(x,y)关于模型 P(Y|X)与经验分布 $\tilde{P}(x)$的期望值用 $E_{P}(f)$表示,
\begin{equation} E_{P}(f)=\sum\limits_{x,y}\tilde{P}(x)P(y|x)f(x,y)\end{equation}
其实本来是$E_{P}(f)=\sum\limits_{x,y}P(x,y)f(x,y)=\sum\limits_{x,y}P(x)P(y|x)f(x,y)$,然而P(x)未知,只好用$\tilde{P}(x)$ 进行估计,就得到上面那个公式了。
如果模型能够获取训练数据中的信息,那么$\tilde{P}(x)P(y|x)=\tilde{P}(x,y)$,于是
\begin{equation} E_{P}(f)=E_{\tilde P}(f)\end{equation}
将上面的$E_{P}(f)$和$E_{\tilde{P}}(f)$定义式代入得,
\begin{equation}\sum\limits_{x,y}\tilde{P}(x)P(y|x)f(x,y)=\sum\limits_{x,y}\tilde{P}(x,y)f(x,y)\end{equation}
(6)或(7)就是模型学习的约束条件,如果有n个特征函数$f_{i}(x,y), i=1,2,...,n$,即,从训练数据中抽取了n个特征,那么就有n个约束条件。注意这里$f_{i}(x,y)$不是针对某个数据点而言的,而是对所有数据样本,下标 i 与数据点编号无关。
最大熵模型
假设满足所有约束条件的模型集合为
\begin{equation} {\cal C} \equiv \lbrace P \in {\cal P}|E_{P} (f_{i})=E_{\tilde{P}}(f_{i}), i=1,2,...,n\rbrace \end{equation}
定义在条件概率分布P(Y|X)上的条件熵为
\begin{equation}H(P)=\sum\limits_{x}\tilde{P}(x)H(Y|X=x)=-\sum\limits_{x,y}\tilde{P}(x)P(y|x)logP(y|x)\end{equation}
则模型集合中$\cal C$中条件熵H(P)最大的模型称为最大熵模型。
上式计算的是系统的熵,所以有求和符号,其中依然是用$\tilde{P}(x)$来对$P(x)$近似估计,
模型学习
最大熵模型的学习等价于约束最优化问题:
\begin{equation}\max_{P \in \cal C} H(P)=-\sum_{x,y}\tilde{P}(x)P(y|x)logP(y|x) \end{equation}
\begin{equation}s.t. \begin{cases} E_{P}(f_i)=E_{\tilde P}(f_i), i=1,2,...,n \\ \sum_{y}P(y|x)=1\end{cases}\end{equation}
将上两式变换得,
\begin{equation}\min_{P \in \cal C} -H(P)=\sum_{x,y}\tilde{P}(x)P(y|x)logP(y|x) \end{equation}
\begin{equation}s.t. \begin{cases} E_{P}(f_i)-E_{\tilde P}(f_i)=0, i=1,2,...,n \\ \sum_{y}P(y|x)=1\end{cases}\end{equation}
求解上两式约束最优化问题,采用拉格朗日乘子法,拉格朗日函数为
\begin{aligned} L(P,w) & \equiv -H(P)+w_{0}(1- \sum_{y}P(y|x))+ \sum_{i=1}^n w_{i}(E_{\tilde P}(f_i)-E_{P}(f_i)) \\ & = {\sum_{x,y} \tilde{P} (x)P(y|x)logP(y|x)+w_{0}(1- \sum_{y}P(y|x)) + \sum_{i=1}^n w_{i}(\sum_{x,y} \tilde{P}(x,y)f_{i}(x,y)-\sum_{x,y} \tilde{P}(x)P(y|x)f_{i}(x,y))} \end{aligned}
最优化原始问题为
\begin{equation} \min_{P \in \cal C} \max_{w} L(P, w) \end{equation}
对偶问题为
\begin{equation} \max_{w} \min_{P \in \cal C} L(P, w) \end{equation}
由于拉格朗日函数L(P,w)是P的凸函数,所以上面两个互为对偶的问题是等价的,所以我们可以求解对偶问题。
对偶问题(14)内部的极小化问题 $\min_{P \in \cal C} L(P, w)$,对P(y|x)求偏导,得
$$ \frac {\partial L(P,w)} {\partial P(y|x)}=\sum\limits_{x,y} \tilde {P}(x) (logP(y|x) + 1) - \sum\limits_{y}w_{0} - \sum\limits_{x,y}\left(\tilde {P}(x) \sum\limits_{i=1}^n w_{i}f_{i}(x,y)\right) $$
上式计算中,将$\tilde{P}(x,y), w_{0}, w_{i}, f_{i}(x,y)$ 看作常数,化简上式得
$$ \frac {\partial L(P,w)} {\partial P(y|x)}=\sum\limits_{x,y} \tilde {P}(x)\left(logP(y|x) + 1-w_{0}- \sum\limits_{i=1}^n w_{i}f_{i}(x,y)\right) $$
令这个偏导为0,求得
\begin{equation} P(y|x)=\exp{\left(\sum\limits_{i=1}^n w_{i} f_{i}(x,y) + w_{0} -1\right)}=\frac{\exp{\left(\sum\limits_{i=1}^n w_{i} f_{i}(x,y) \right)}} {\exp(1-w_0)} \end{equation}
由于$\sum\limits_{y}P(y|x)=1$,所以
$$\sum\limits_{y}P(y|x)=\frac{\sum\limits_{y}\exp{\left(\sum\limits_{i=1}^n w_{i} f_{i}(x,y) \right)}} {\exp(1-w_0)}=1$$
将上式代入(16)式得,
\begin{equation} P_{w}(y|x)=\frac 1 {Z_{w}(x)} \exp\left(\sum\limits_{i=1}^n w_{i} f_{i}(x,y)\right) \end{equation}
其中,
\begin{equation} Z_{w}(x)=\sum\limits_{y}\exp{\left(\sum\limits_{i=1}^n w_{i} f_{i}(x,y) \right)} \end{equation}
$Z_{w}(x)$称为规范化因子, $f_{i}(x,y)$是特征函数,$w_{i}$是特征权值。由(17)和(18)表示的模型就是最大熵模型,然后求解对偶问题外部的极大化问题,记
$$\Psi(w)=L(P_{w},w)$$
$\Psi(w)$称为对偶函数,那么问题变为,
\begin{equation} \max_{w} \Psi(w) \end{equation}
其解为
\begin{equation} w^*=arg \max_{w} \Psi(w) \end{equation}
(求得$\Psi(w)$后对w求偏导并令其等于0求得w)
带入(17)式求得最大熵模型$P^*=P_{w^*}=P_{w^*}(y|x)$
最大熵求解的公式推导一下子就结束了,但似乎我们仍然意犹未尽,不妨回过头来再整理一下思路。
首先我们要求的是模型P(Y|X),即给定输入X=x的条件下,Y=y的条件概率,假设输出y的所有可能值有 k 个(这里只考虑离散情况,连续情况不考虑),输入x的所有可能值为 j 个,训练数据集中样本数量为N,那么要求的条件概率P(y|x)则有 j *k 个,上面的拉格朗日函数对P(y|x)求偏导,也就有 j * k个偏导,令各偏导为0,得到 j * k 个方程,解得所有的条件概率P(y|x),然而其中有w这个未知向量,将解的各条件概率P(y|x)带入拉格朗日函数,然后再求对w的偏导,假设有n 个特征,那么加上条件概率和为1这个约束条件,w 向量有 n+1 个分量,对w的各个分量求偏导并令其为0,解的w的各分量值,从而各条件概率P(y|x)也求得。
ref
统计学习方法,李航