最大熵(一)| 最大熵原理+模型 | 《统计学习方法》学习笔记(二十三)

最大熵模型(maximum entropy model )由最大熵原理推导出来。

1. 最大熵原理

最大熵原理是概率模型学习的一个准则。最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。通常用约束条件来确定概率模型的集合,所以,最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。

假设离散随机变量X的概率分布是 P ( X ) P(X) P(X),则其熵是
H ( P ) = − ∑ x P ( x ) l o g P ( x ) H(P)=-\sum_xP(x)logP(x) H(P)=xP(x)logP(x)
熵满足下列不等式:
0 ≤ H ( P ) ≤ l o g ∣ X ∣ 0\leq H(P)\leq log|X| 0H(P)logX
式中, ∣ X ∣ |X| X是X的取值个数,当且仅当X的分布是均匀分布时右边的等号成立。这就是说,当X服从均匀分布时,熵最大。

直观地说,最大熵原理认为要选择的概率模型首先必须满足已有的事实,即约束条件。在没有更多信息的条件下,那些不确定的部分都是“等可能的”。最大熵原理通过熵的最大化来表示等可能性。“等可能性”不容易操作,而熵则是一个可优化的数值指标。

简单例子介绍最大熵原理:

:假设随机变量X有5个取值 { A , B , C , D , E } \{A,B,C,D,E\} {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) 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)=1 P(A)+P(B)+P(C)+P(D)+P(E)=1
满足这个约束条件的概率分布有无穷多个。如果没有任何其他信息,仍要对概率分布进行估计,一个办法就是认为这个分布中取各个值的概率是相等的:
P ( A ) = P ( B ) = P ( C ) = P ( D ) = P ( E ) = 1 5 P(A)=P(B)=P(C)=P(D)=P(E)=\frac{1}{5} P(A)=P(B)=P(C)=P(D)=P(E)=51
等概率表示了对事实的无知。因为没有更多的信息,这种判断是合理的。

有时,能从一些先验知识中得到一些对概率值的约束条件,例如:
P ( A ) + P ( B ) = 3 10 P ( A ) + P ( B ) + P ( C ) + P ( D ) + P ( E ) = 1 P(A)+P(B)=\frac{3}{10} \\ P(A)+P(B)+P(C)+P(D)+P(E)=1 P(A)+P(B)=103P(A)+P(B)+P(C)+P(D)+P(E)=1
满足这两个约束条件的概率分布仍然有无穷多个。在缺少其他信息的情况下,可以认为A与B是等概率的,C,D与E是等概率的,于是,
P ( A ) = P ( B ) = 3 20 P ( C ) = P ( D ) = P ( E ) = 7 30 P(A)=P(B)=\frac{3}{20} \\ P(C)=P(D)=P(E) = \frac{7}{30} P(A)=P(B)=203P(C)=P(D)=P(E)=307
如果还有第3个约束条件:
P ( A ) + P ( C ) = 1 2 P ( A ) + P ( B ) = 3 10 P ( A ) + P ( B ) + P ( C ) + P ( D ) + P ( E ) = 1 P(A)+P(C)=\frac{1}{2} \\ P(A)+P(B)=\frac{3}{10} \\ P(A)+P(B)+P(C)+P(D)+P(E)=1 P(A)+P(C)=21P(A)+P(B)=103P(A)+P(B)+P(C)+P(D)+P(E)=1
可以继续按照满足约束条件下求等概率的方法估计概率分布。这里不再继续讨论。以上概率模型学习的方法正式遵循了最大熵原理。

下图提供了用最大熵原理进行概率模型选择的几何解释。概率模型集合P可由欧式空间中的单纯形表示,如左图的三角形(2-单纯性)。一个点代表一个模型,整个单存形代表模型集合。一般地,这样的模型仍有无穷多个。学习的目的是在可能的模型集合中选择最优模型,而最大熵原理则给出最优模型选择的一个准则。

在这里插入图片描述

2. 最大熵模型的定义

最大熵原理是统计学习的一般原理,将它应用到分类得到最大熵模型。

假设分类模型是一个条件概率分布 P ( Y ∣ X ) , X ∈ χ ⊂ R n P(Y|X),X\in \chi \subset \bold R^n P(YX),XχRn表示输入, Y ∈ γ Y\in \gamma Yγ表示输出, χ \chi χ γ \gamma γ分别是输入和输出的集合。这个模型表示的是对于给定的输入 X X X,以条件概率 P ( Y ∣ X ) P(Y|X) P(YX)输出Y。

给定一个训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋅ ⋅ ⋅ , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),···,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
学习的目标是用最大熵原理选择最好的分类模型。

首先考虑模型应该满足的条件。给定训练数据集,可以确定联合分布 P ( X , Y ) P(X,Y) P(X,Y)的经验分布和边缘分布 P ( X ) P(X) P(X)的经验分布,分别以 P ^ ( X , Y ) \hat P(X,Y) P^(X,Y) P ^ ( X ) \hat P(X) P^(X)表示。这里,
P ^ ( X = x , Y = y ) = v ( X = x , Y = y ) N P ^ ( X = x ) = v ( X = x ) N \hat P(X=x,Y=y)=\frac{v(X=x,Y=y)}{N} \\ \hat P(X=x)=\frac{v(X=x)}{N} P^(X=x,Y=y)=Nv(X=x,Y=y)P^(X=x)=Nv(X=x)
其中, v ( X = x , Y = y ) v(X=x,Y=y) v(X=x,Y=y)表示训练数据中样本 ( x , y ) (x,y) (x,y)出现的频数, v ( X = x ) v(X=x) v(X=x)表示训练数据中输入x出现的频数,N表示训练样本容量。

用特征函数(feature function,可以是任何实值函数) f ( x , y ) f(x,y) f(x,y)描述输入x和输出y之间的某一个事实。其定义是
f ( x , y ) = { 1 , x 与 y 满 足 某 一 事 实 0 , 否 则 f(x,y)=\begin{cases} 1, & x与y满足某一事实 \\ 0, & 否则 \end{cases} f(x,y)={1,0,xy
它是一个二值函数,当x和y满足这个事实时取值为1,否则取值为0.

特征函数 f ( x , y ) f(x,y) f(x,y)关于经验分布 P ^ ( X , Y ) \hat P(X,Y) P^(X,Y)的期望值,用 E P ^ ( f ) E_{\hat P}(f) EP^(f)表示。
E p ^ ( f ) = ∑ x , y P ^ ( x , y ) f ( x , y ) E_{\hat p}(f)=\sum_{x,y}\hat P(x,y)f(x,y) Ep^(f)=x,yP^(x,y)f(x,y)
特征函数 f ( x , y ) f(x,y) f(x,y)关于模型 P ( Y ∣ X ) P(Y|X) P(YX)与经验分布 P ^ ( X ) \hat P(X) P^(X)的期望值,用 E p ( f ) E_p(f) Ep(f)表示。
E p ( f ) = ∑ x , y P ^ ( x ) P ( y ∣ x ) f ( x , y ) E_p(f)=\sum_{x,y}\hat P(x)P(y|x)f(x,y) Ep(f)=x,yP^(x)P(yx)f(x,y)
如果模型能够获取训练数据中的信息,那么就可以假设这两个期望值相等,即
E p ( f ) = E p ^ ( f ) (5) E_p(f)=E_{\hat p}(f) \tag{5} Ep(f)=Ep^(f)(5)

∑ x , y P ^ ( x ) P ( y ∣ x ) f ( x , y ) = ∑ x , y P ^ ( x , y ) f ( x , y ) (6) \sum_{x,y}\hat P(x)P(y|x)f(x,y)=\sum_{x,y}\hat P(x,y)f(x,y) \tag{6} x,yP^(x)P(yx)f(x,y)=x,yP^(x,y)f(x,y)(6)
将式(5)或式(6)作为模型学习的约束条件。假如有n个特征函数 f i ( x , y ) , i = 1 , 2 , ⋅ ⋅ ⋅ , n f_i(x,y),\quad i=1,2,···,n fi(x,y),i=1,2,n,那么就有n个约束条件。

定义:(最大熵模型)假设满足所有约束条件的模型集合为
C ≡ { P ∈ P ∣ E p ( f i ) = E P ^ ( f i ) , i = 1 , 2 , ⋅ ⋅ ⋅ , n } C\equiv \{P\in \Rho|E_p(f_i)=E_{\hat P}(f_i),\quad i=1,2,···,n\} C{PPEp(fi)=EP^(fi),i=1,2,,n}
定义在条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)上的条件熵为
H ( P ) = − ∑ x , y P ^ ( x ) P ( y ∣ x ) l o g P ( y ∣ x ) H(P)=-\sum_{x,y}\hat P(x)P(y|x)logP(y|x) H(P)=x,yP^(x)P(yx)logP(yx)
则模型集合C中条件熵 H ( P ) H(P) H(P)最大的模型称为最大熵模型。式中的对数为自然对数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最大原理是一种概率模型,可以用于处理分类、回归、文本分类等问题。下面是一个使用 MATLAB 实现最大原理模型代码示例。 首先,我们需要导入数据集并进行预处理。假设我们有一个二元分类问题,数据集包含两个特征和一个二元标签。我们可以使用以下代码加载数据集: ```matlab load data.mat X = [ones(size(data,1),1) data(:,1:2)]; Y = data(:,3); ``` 其中,`data.mat` 是包含数据集的 .mat 文件,`X` 是输入特征矩阵, `Y` 是标签向量。 接下来,我们需要定义最大模型的特征函数。特征函数是一个将输入特征映射到实数值的函数,用于表示样本在特征上的取值情况。在最大模型中,特征函数的形式可以为: $$f(x,y) = \begin{cases}1 & \text{if } x \text{ and } y \text{ satisfy some condition} \\ 0 & \text{otherwise}\end{cases}$$ 这里我们可以使用一个简单的特征函数,即当特征 1 和特征 2 都为 1 时,输出 1;否则输出 0。定义特征函数的代码如下: ```matlab function f = feature_function(x, y) if x(2) == 1 && y == 1 f = 1; else f = 0; end end ``` 接下来,我们需要定义最大模型的对数似然函数。最大模型的对数似然函数可以表示为: $$L(\theta) = \sum_{i=1}^{m} \log p(y_i|x_i,\theta) - \frac{1}{C}\sum_{i=1}^{m}\sum_{j=1}^{n} \theta_j f_j(x_i,y_i)$$ 其中,$m$ 是样本数,$n$ 是特征数,$C$ 是正则化系数,$\theta$ 是特征权重向量,$p(y|x,\theta)$ 是条件概率分布。在最大模型中,条件概率分布可以使用 softmax 函数表示: $$p(y|x,\theta) = \frac{e^{\theta^T f(x,y)}}{\sum_{y'} e^{\theta^T f(x,y')}}$$ 定义对数似然函数的代码如下: ```matlab function [L, grad] = log_likelihood(theta, X, Y, C, feature_function) m = size(X,1); n = length(theta); F = zeros(m,n); for i = 1:m for j = 1:n F(i,j) = feature_function(X(i,:), j); end end P = exp(F*theta)./sum(exp(F*theta),2); L = sum(log(P(Y==1))) + sum(log(P(Y==-1))); g = sum(F.*repmat(Y-P,1,n),1)'; grad = g - theta./C; end ``` 其中,`theta` 是特征权重向量,`C` 是正则化系数,`feature_function` 是特征函数。`log_likelihood` 函数返回对数似然函数的值 `L` 和梯度 `grad`。 最后,我们可以使用 MATLAB 自带的优化函数 `fminunc` 来求解最大模型的参数。代码如下: ```matlab C = 1.0; theta0 = zeros(size(X,2),1); options = optimoptions('fminunc','GradObj','on','Display','iter'); [theta, L] = fminunc(@(t) log_likelihood(t, X, Y, C, @feature_function), theta0, options); ``` 其中,`C` 是正则化系数,`theta0` 是特征权重向量的初始值,`options` 是优化选项。`fminunc` 函数使用对数似然函数和 `feature_function` 函数来求解最优的特征权重向量 `theta`。 参考文献: [1] Berger, A. L., Pietra, S. A. D., & Pietra, V. J. D. (1996). A maximum entropy approach to natural language processing. Computational linguistics, 22(1), 39-71.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值