码迷,mamicode.com
首页 > 其他好文 > 详细

统计学习六:2.对数线性模型之最大熵模型

时间:2018-09-25 20:35:12      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:规范   mat   isp   mode   输入   partial   exp   学习过程   因此   

全文引用自《统计学习方法》(李航)

最大熵模型(maximum entropy model)同样是一类对数线性模型,主要由最大熵原理推导得出。本文主要介绍最大熵原理的基本概念、最大熵模型的推导过程以及模型的学习形式。

1.最大熵原理

最大熵原理是概率模型学习的一个准则。具体表现为,在给定多个约束条件之后,对于所有满足约束条件的概率模型所组成的集合,熵最大的模型一定是最好的模型,此时应选择该模型为最终模型。
假定离散随机变量X的概率分布为P(X),则其熵为:
\[ H(P)=-\sum_xP(x)\log P(x) \]
熵满足不等式:\(0\le H(P)\le \log|X|\),其中|X|为X的取值个数,当且仅当X的分布为均匀分布时,右侧等式成立,此时熵最大。
最大熵原理认为,要选择的概率模型必须首先满足给定的已有事实条件约束。在没有更多的信息的情况下,满足确定的约束条件后的那些不确定因素,应当都是等可能的。而等可能的概念在模型的选择中并不容易实现,但因为熵是一个可优化的数值指标,所以可以利用熵的最大化来表示等可能性。
例如,假定随机变量X有5个可能的取值{A,B,C,D,E},要估计各个取值的可能概率P(A),P(B),P(C),P(D),P(E)。
首先,这些概率的取值满足约束条件:
\[ P(A)+P(B)+P(C)+P(D)+P(E)=1 \]
由于满足此条件的概率分布为无穷多个,若没有其他约束条件,那么对概率分布进行估计的一个方法,就是认为每个取值的概率是相等的:
\[ P(A)=P(B)=P(C)=P(D)=P(E)=\frac{1}{5} \]
等概率表示了对事实的无知。 因为没有更多有用的信息,所以这种判断是合理的。
有时,若是能从一些先验知识中得到一些对概率值的约束条件,如:
\[ \begin{aligned} P(A)+P(B)=\frac{3}{10}\P(A)+P(B)+P(C)+P(D)+P(E)=1 \end{aligned} \]
那么,满足这两个约束条件的概率分布仍然有无穷多个。在没有其他信息的情况下,可以认为A和B是等概率的,C,D和E是等概论的,即:
\[ \begin{aligned} P(A)=P(B)=\frac{3}{10}\P(C)=P(D)=P(E)=\frac{7}{30} \end{aligned} \]

2.最大熵模型的定义

假设分类模型时一个条件概率分布\(P(Y|X),X\in R^n\)表示输入,Y表示输出,两者分别属于输入和输出空间。则这个模型表示的是对于给定的输入X,以条件概率P(Y|X)输出Y。
给定训练数据集:
\[ T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} \]
学习的最终目的为,利用最大熵原理选择最好的分类模型。
首先考虑模型应满足的条件。对于给定的训练数据集,可以确定其联合分布P(X,Y)的经验分布和边缘分布P(X)的经验分布,即:
\[ \begin{aligned} \tilde{P}(X=x,Y=y)=\frac{v(X=x,Y=y)}{N}\\tilde{P}(X=x)=\frac{v(X=x)}{N} \end{aligned} \]
其中,v(X=x,Y=y)表示训练数据样本中(x,y)出现的频数,v(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)=\sum_{x,y}\tilde{P}(x,y)f(x,y) \]
特征函数f(x,y)关于模型P(Y|X)与经验分布\(\tilde{P}(X)\)的期望值为:
\[ E_P(f)=\sum_{x,y}\tilde{P}(x)P(y|x)f(x,y) \]
若模型能够获取训练数据集中的信息,那么就可以假设这两个期望值相等,即:
\[ \sum_{x,y}\tilde{P}(x,y)f(x,y)=\sum_{x,y}\tilde{P}(x)P(y|x)f(x,y) \]
将上式作为模型学习的约束条件,假定有n个特征函数\(f_i(x,y),i=1,2,\cdots,n\),那么就具有n个约束条件。
最大熵模型的定义为:

  • 假设满足所有约束条件的模型集合为
    \[ C\equiv\{P|E_P(f_i)=E_{\tilde{P}}(f_i),i=1,2,\cdots,n\} \]
  • 定义在条件概率P(Y|X)上的条件熵为
    \[ H(P)=-\sum_{x,y}\tilde{P}(x)P(y|x)\log P(y|x) \]
    则模型集合C中条件熵H(P)最大的模型为最大熵模型。上式中的对数为自然对数。

3.最大熵模型的学习

最大熵模型的学习过程,实际上就是求解最大熵模型的过程。对于最大熵模型的学习,可以将其形式化为约束最优化问题。
对于给定的训练数据集\(T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\)和特征函数\(f_i(x,y),i=1,2,\cdots,n\),最大熵模型的学习等价于约束最优化问题:
\[ \begin{aligned} &\max_{P\in C}&H(P)&=-\sum_{x,y}\tilde{P}(x)P(y|x)\log P(y|x)\&s.t.&E_P(f_i)&=E_{\tilde{P}}(f_i),i=1,2,\cdots,n\& &\sum_yP(y|x)&=1 \end{aligned} \]
按照最优化问题的习惯,将求最大值问题改写为等价的求最小值问题:
\[ \begin{aligned} &\max_{P\in C}&-H(P)&=\sum_{x,y}\tilde{P}(x)P(y|x)\log P(y|x)\&s.t.&E_P(f_i)&-E_{\tilde{P}}(f_i)=0,i=1,2,\cdots,n\& &\sum_yP(y|x)&=1 \end{aligned} \]
求解上式约束最优化问题,所得出的解就是最大熵模型学习的解。具体的推导过程如下:

  • 首先,引入拉格朗日乘子\(w_0,w_1,w_2,\cdots,w_n\),定义拉格朗日函数L(P,w):
    \[ \begin{aligned} L(P,w)&\equiv -H(P)+w_0\left(1-\sum_yP(y|x)\right)+\sum_{i=1}^nw_i(E_{\tilde{P}}(f_i)-E_P(f_i))\&=\sum_{x,y}\tilde{P}(x)P(y|x)\log P(y|x)+w_0\left(1-\sum_yP(y|x)\right)\&\quad+\sum_{i=1}^nw_i\left(\sum_{x,y}\tilde{P}(x,y)f_i(x,y)-\sum_{x,y}\tilde{P}(x,y)P(y|x)f_i(x,y)\right) \end{aligned} \]
  • 那么最优化的原始问题为
    \[ \min_{P\in C}\max_wL(P,w) \]
  • 其对偶问题为:
    \[ \max_w\min_{P\in C}L(P,w) \]
    拉个朗日函数L(P,w)为P的凸函数,原始问题的解与对偶问题的解等价,因此,可以通过求解对偶问题来求解原始问题。
  • 首先,求解对偶问题内部的极小化问题\(\min_{_{P\in C}}L(P,w)\),则\(\min_{_{P\in C}}L(P,w)\)为w的函数,记为:
    \[ \Psi(w)=\min_{P\in C}L(P,w)=L(P_w,w) \]
  • 其中\(\Psi(w)\)称为对偶函数,其解记为:
    \[ P_w=\arg\min_{P\in C}L(P,w)=P_w(y|x) \]
  • 求L(P,w)对P(y|x)的偏导数:
    \[ \begin{aligned} \frac{\partial L(P,w)}{\partial P(y|x)}&=\sum_{x,y}\tilde{P}(x)(\log P(y|x)+1)-\sum_yw_0-\sum_{x,y}\left(\tilde{P}(x)\sum_{i=1}^nw_if_i(x,y)\right)\&=\sum_{x,y}\tilde{P}(x)\left(\log P(y|x)+1-w_0-\sum_{i=1}^nw_if_i(x,y)\right) \end{aligned} \]
    令偏导数为0,在\(\tilde{P}(x)>0\)的情况下,得
    \[ P(y|x)=\exp\left(\sum_{i=1}^nw_if_i(x,y)+w_0-1\right)=\frac{\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)}{\exp(1-w_0)} \]
  • 由于\(\sum_yP(y|x)=1\),得:
    \[ \begin{aligned} P_w(y|x)&=\frac{1}{Z_w(x)}\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)\Z_w(x)&=\sum_y\exp\left(\sum_{i=1}^nw_if_i(x,y)\right) \end{aligned} \]
    其中\(Z_w(x)\)称为规范化因子,\(f_i(x,y)\)是特征函数,\(w_i\)是特征的权值,则由上式表示的模型\(P_w=P_w(yy|x)\)就是最大熵模型,w是最大熵模型中的参数向量。
    之后,求得对偶问题外部的极大化问题\(\max_w\Psi(w)\),将其解记为\(w^*\),即:
    \[ w^*=\arg\max_w\Psi(w) \]
    此时,\(P^*=P_{w^*}=P_{w^*}(y|x)\)就是可以学习到的最优模型。所以,可以利用最优化算法求解对偶函数\(\Psi(w)\)的极大值,因此,最大熵模型的学习最终转化为对偶函数\(\Psi(w)\)的极大化。

4.极大似然估计

由上节可知,最大熵模型即为以下条件概率分布:
\[ \begin{aligned} P_w(y|x)&=\frac{1}{Z_w(x)}\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)\Z_w(x)&=\sum_y\exp\left(\sum_{i=1}^nw_if_i(x,y)\right) \end{aligned} \]
已知训练数据的经验概率分布\(\tilde{P}(X,Y)\),条件概率分布P(Y|X)的对数似然函数为:
\[ L_{\tilde{P}}(P_w)=\log\prod_{x,y}P(y|x)^{\tilde{P}(X,Y)}=\sum_{x,y}\tilde{P}(X,Y)\log P(y|x) \]
当条件概率分布P(Y|X)是最大熵模型时,对数似然函数\(L_{\tilde{P}}(P_w)\)为:
\[ \begin{aligned} L_{\tilde{P}}(P_w)&=\sum_{x,y}\tilde{P}(x,y)\log P(y|x)\&=\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y)-\sum_{x,y}\tilde{P}(x,y)\log Z_w(x)\&=\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y)-\sum_{x}\tilde{P}(x)\log Z_w(x) \end{aligned} \]
又有对偶问题\(\Psi(w)\)为:
\[ \begin{aligned} \Psi(w)&=\sum_{x,y}\tilde{P}(x)P_w(y|x)\log P_w(y|x)\&\quad+\sum_{i=1}^nw_i\left(\sum_{x,y}\tilde{P}(x,y)f_i(x,y)-\sum_{x,y}\tilde{P}(x)P_w(y|x)f_i(x,y)\right)\&=\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y)+\sum_{x,y}\tilde{P}(x,y)P_w(y|x)\left(\log P_w(y|x)-\sum_{i=1}^nw_if_i(x,y)\right)\&=\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y)-\sum_{x,y}\tilde{P}(x,y)P_w(y|x)\log Z_w(x)\&=\sum_{x,y}\tilde{P}(x,y)\sum_{i=1}^nw_if_i(x,y)-\sum_{x}\tilde{P}(x,y)\log Z_w(x) \end{aligned} \]
其中,最后一步由\(\sum_yP(y|x)=1\)可得。
比较上面的推导,可得对偶函数与对数似然函数等价,即最大熵模型的学习中对偶函数的极大化等价于最大熵模型中的极大似然估计。因此,可以将最大熵模型的学习问题转换为求解对数似然函数的极大化或对偶函数极大化的问题

统计学习六:2.对数线性模型之最大熵模型

标签:规范   mat   isp   mode   输入   partial   exp   学习过程   因此   

原文地址:https://www.cnblogs.com/zhiyuxuan/p/9703018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!