最大熵模型简介
学习概率模型时,在所有可能的概率模型(即概率分布)中,熵最大的模型是最好的模型。
- 通常还有其他已知条件来确定概率模型的集合,因此最大熵原理为:在满足已知条件的情况下,选取熵最大的模型。
- 在满足已知条件前提下,如果没有更多的信息,则那些不确定部分都是“等可能的”。而
等可能性
通过熵最大化来刻画。
最大熵原理选取熵最大的模型,而决策树的划分目标选取熵最小的划分。原因在于:
- 最大熵原理认为在满足已知条件之后,选择不确定性最大(即:不确定的部分是等可能的)的模型。也就是不应该再施加任何额外的约束。因此这是一个求最大不确定性的过程,所以选择熵最大的模型。
- 决策树的划分目标是为了通过不断的划分从而不断的降低实例所属的类的不确定性,最终给实例一个合适的分类。因此这是一个不确定性不断减小的过程,所以选取熵最小的划分。
信息熵
事件的概率越小则事件的不确定性就高,即信息量越高。因此信息量函数
f
f
f关于概率
P
P
P 是减函数;两个独立事件所产生的信息量应等于各自的信息量之和,即
f
(
P
1
,
P
2
)
=
f
(
P
1
)
+
F
(
p
2
)
f(P_1,P_2)=f(P_1)+F(p_2)
f(P1,P2)=f(P1)+F(p2)
同时满足这两个条件的函数
f
f
f是对数函数
l
o
g
log
log,即
f
(
P
)
=
l
o
g
1
p
=
−
l
o
g
(
P
)
f(P)=log\frac{1}{p}=-log(P)
f(P)=logp1=−log(P)
信息熵则为信息量的期望:
H
(
P
)
=
∑
[
−
l
o
g
(
P
)
]
=
H
(
P
)
=
−
∑
X
P
(
C
)
l
o
g
P
(
X
)
H(P)=\sum[-log(P)]=H(P)=-\sum_X P(C)logP(X)
H(P)=∑[−log(P)]=H(P)=−X∑P(C)logP(X)
可以证明:
0
≤
H
(
P
)
≤
l
o
g
∣
X
∣
0\leq H(P) \leq log|X|
0≤H(P)≤log∣X∣,其中
∣
X
∣
|X|
∣X∣为
X
X
X的取值的个数。
当且仅当 X X X的分布为均匀分布时有 H ( P ) = l o g ∣ X ∣ H(P)=log|X| H(P)=log∣X∣。即 P ( X ) = 1 ∣ X ∣ P(X)=\frac{1}{|X|} P(X)=∣X∣1时熵最大。
最大熵模型的定义
用最大熵原理选择最好的分类模型。
我们可以首先考虑模型应该满足的条件,即约束条件。给定训练数据集,可以确定联合分布P(X,Y)的经验分布和边缘分布P(X)的经验分布,两者都可以通过训练集算出来。
P
~
(
X
=
x
,
Y
=
y
)
=
v
(
X
=
x
,
Y
=
y
)
N
P
~
(
X
=
x
)
=
v
(
X
=
x
)
N
\tilde{P}(X=x,Y=y)=\frac{v(X=x,Y=y)}{N} \\ \tilde{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
N
N表示样本容量。
P
~
\tilde{P}
P~代表这个分布是我们根据已有的训练集信息得到的,是经验分布,但不是真实分布。
用特征函数描述输入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,x与y满足某一事实否则
特征函数
f
(
x
,
y
)
f(x,y)
f(x,y)在训练集上关于联合经验分布的期望值:
E
P
~
(
f
)
=
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
=
∑
x
,
y
P
~
(
x
)
P
~
(
y
∣
x
)
f
(
x
,
y
)
E_{\tilde{P}}(f)=\sum_{x,y}\tilde{P}(x,y)f(x,y)=\sum_{x,y}\tilde{P}(x)\tilde{P}(y|x)f(x,y)
EP~(f)=x,y∑P~(x,y)f(x,y)=x,y∑P~(x)P~(y∣x)f(x,y)
上式中出现的分布都是经验分布,说明
E
P
~
(
f
)
E_{\tilde{P}}(f)
EP~(f)仅与训练集有关,并不是真实情况。
将经验分布转变成真实的分布:
E
P
(
f
)
=
∑
x
,
y
P
(
x
)
P
(
y
∣
x
)
f
(
x
,
y
)
E_P(f)=\sum_{x,y}P(x)P(y|x)f(x,y)
EP(f)=x,y∑P(x)P(y∣x)f(x,y)
上式是特征函数
f
(
x
,
y
)
f(x,y)
f(x,y)在模型上关于模型
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)与
P
(
x
)
P(x)
P(x)的期望值,我们需要求的模型即
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),但是其中还存在着一个未知分布
P
(
x
)
P(x)
P(x)。由于我们并不知道真实情况的
P
(
x
)
P(x)
P(x)是什么,我们可以使用
P
(
x
)
P(x)
P(x)的经验分布代替真实的
P
(
x
)
P(x)
P(x)来对真实情况进行近似表示,于是上式转变为:
E
P
(
f
)
=
∑
x
,
y
P
~
(
x
)
P
~
(
y
∣
x
)
f
(
x
,
y
)
E_P(f)=\sum_{x,y}\tilde{P}(x)\tilde{P}(y|x)f(x,y)
EP(f)=x,y∑P~(x)P~(y∣x)f(x,y)
现在我们有了一个针对训练集的期望KaTeX parse error: Got function '\tilde' with no arguments as subscript at position 3: E_\̲t̲i̲l̲d̲e̲{P}(f),和针对模型的期望
E
P
(
f
)
E_P(f)
EP(f),此时,只需要让两式相等(使在总体中出现的概率等于在样本中出现的概率),就能够让模型拟合训练集,并最终求得我们的模型:
KaTeX parse error: Got function '\tilde' with no arguments as subscript at position 11: E_P(f)=E_\̲t̲i̲l̲d̲e̲{P}(f)
即:
∑
x
,
y
P
~
(
x
)
P
~
(
y
∣
x
)
f
(
x
,
y
)
=
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
\sum_{x,y}\tilde{P}(x)\tilde{P}(y|x)f(x,y)=\sum_{x,y}\tilde{P}(x,y)f(x,y)
x,y∑P~(x)P~(y∣x)f(x,y)=x,y∑P~(x,y)f(x,y)
上式中
P
(
y
∣
x
)
P(y|x)
P(y∣x)为模型,两个经验分布可以从训练集中得到,
f
(
x
,
y
)
f(x, y)
f(x,y)是特征函数。
上式即为一个约束条件,假如有n个特征函数 f i ( x , y ) , i = 1 , 2 , … , n f_i(x,y),i=1,2,…,n fi(x,y),i=1,2,…,n,那么就有n个约束条件。除此之外还有一个必定存在的约束,即模型概率之和等于1: ∑ y P ( y ∣ x ) = 1 \sum_yP(y|x)=1 ∑yP(y∣x)=1 。
现在我们有了所有的约束条件,接着写出模型的熵的公式,就可以根据最大熵规则,在约束条件下得到模型。
定义在条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)上的条件熵为:
H
(
P
(
Y
∣
X
)
)
=
∑
x
P
(
x
)
H
(
y
∣
x
)
=
∑
x
P
(
x
)
∑
y
−
P
(
y
∣
x
)
l
o
g
P
(
y
∣
x
)
=
−
∑
x
,
y
P
(
x
)
P
(
y
∣
x
)
l
o
g
P
(
y
∣
x
)
=
−
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
l
o
g
P
~
(
y
∣
x
)
\begin{aligned} H(P(Y|X))&=\sum_xP(x)H(y|x) \\ &=\sum_xP(x)\sum_y-P(y|x)logP(y|x) \\ &=-\sum_{x,y}P(x)P(y|x)logP(y|x) \\ &=-\sum_{x,y}\tilde{P}(x)P(y|x)log\tilde{P}(y|x) \end{aligned}
H(P(Y∣X))=x∑P(x)H(y∣x)=x∑P(x)y∑−P(y∣x)logP(y∣x)=−x,y∑P(x)P(y∣x)logP(y∣x)=−x,y∑P~(x)P(y∣x)logP~(y∣x)
条件熵中依然使用了x的经验分布代替真实分布,式中的对数为自然对数(以e为底)。那么求解模型的问题转换为求得最大化的条件熵问题。
最大熵模型的学习
最大熵模型的学习过程就是求解最大熵模型的过程。最大熵模型的学习可以形式化为约束最优化问题。
最大熵模型的约束条件为:
min
P
∈
C
−
H
(
P
)
=
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
l
o
g
P
~
(
y
∣
x
)
s
.
t
.
E
P
(
f
i
)
−
E
P
~
(
f
i
)
=
0
,
i
=
1
,
2
,
.
.
.
,
n
,
∑
y
P
(
y
∣
x
)
=
1
\min_{P\in C}\quad-H(P)=\sum_{x,y}\tilde{P}(x)P(y|x)log\tilde{P}(y|x) \\ s.t. \quad E_P(f_i)-E_{\tilde{P}}(f_i)=0, \quad i=1,2,...,n, \\ \sum_yP(y|x)=1
P∈Cmin−H(P)=x,y∑P~(x)P(y∣x)logP~(y∣x)s.t.EP(fi)−EP~(fi)=0,i=1,2,...,n,y∑P(y∣x)=1
求解最大熵的方法可以使用拉格朗日乘数法,定义拉格朗日函数为:
$$
\begin{aligned}
L(P,w)&=-H§+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}^n\tilde{P}(x)P(y|x)logP(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)P(y|x)f_i(x,y) \right)
\end{aligned}
KaTeX parse error: Can't use function '$' in math mode at position 4: 其中$̲w_0$和$w_i$都是拉格朗…
\min_{P \in C} \max_{w} L(P,w)
接下来,由于
L
(
P
,
w
)
是
P
的凸函数,为了计算方便,我们可以将最优化问题转换为它的对偶问题:
接下来,由于L(P,w)是P的凸函数,为了计算方便,我们可以将最优化问题转换为它的对偶问题:
接下来,由于L(P,w)是P的凸函数,为了计算方便,我们可以将最优化问题转换为它的对偶问题:
\max_w \min_{P \in C} L(P,w)
KaTeX parse error: Can't use function '$' in math mode at position 3: 求$̲L(P,w)$对$P(y|x)…
\frac{\partial L(P,w)}{\partial P(y|x)} = \sum_{x,y}\tilde{P}(x)\left( 1+logP(y|x)-w_0-\sum_{i=1}^nw_if_i(x,y) \right)
$$
在上式的第三个等式中,运用到
∑
x
,
y
P
~
(
x
)
=
1
\sum_{x,y}\tilde{P}(x)=1
∑x,yP~(x)=1 。
现在令导数为0,又因为 ,$\sum_{x,y}\tilde{P}(x)>0 $,可得:
P
(
y
∣
x
)
=
e
x
p
(
∑
i
=
1
n
w
i
f
i
(
x
,
y
)
)
e
x
p
(
1
−
w
0
)
P(y|x)=\frac{exp\left( \sum_{i=1}^nw_if_i(x,y) \right)}{exp(1-w_0)}
P(y∣x)=exp(1−w0)exp(∑i=1nwifi(x,y))
由于
∑
y
P
(
y
∣
x
)
=
1
\sum_yP(y|x)=1
∑yP(y∣x)=1,得:
P
w
(
y
∣
x
)
=
1
Z
w
(
x
)
e
x
p
(
∑
i
=
1
n
w
i
f
i
(
x
,
y
)
)
P_w(y|x)=\frac{1}{Z_w(x)}exp\left( \sum_{i=1}^n w_if_i(x,y) \right)
Pw(y∣x)=Zw(x)1exp(i=1∑nwifi(x,y))