最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的 个人博客,以及我的github。
本文将讲解有关最大熵模型的相关知识。
本文主要是依据李航老师的《统计学习方法》和邹博老师的机器学习教学视频总结编写的。文中所用到的有关机器学习的基本概念和方法可以参考本人博客中该系列之前的文章,或者直接上网搜索相关的内容。以下文章所列出的公式以及公式的推导读者们最好是在草稿本上自己推导一遍。由于本人水平所限,文章中难免有错误和不当之处,欢迎大家多多批评指正!
最大熵模型的基本思想就是:在满足所有约束条件的模型P(Y|X)中,熵最大的模型就是最优的模型。下面先来介绍几个基本概念。
一、基本概念
熵
熵表示一个系统的混乱程度,假设随机变量X的概率分布式P,则其熵的定义为:
H
(
P
)
=
−
∑
x
P
(
x
)
log
P
(
x
)
H(P)=-\sum_x{ P(x)\log P(x)}
H(P)=−x∑P(x)logP(x)
熵有个性质就是当随机变量X服从均匀分布时,熵最大。
条件熵
条件熵定义为X给定的条件下Y的条件概率分布的熵对X的数学期望:
H
(
Y
∣
X
)
=
−
∑
x
,
y
P
(
x
,
y
)
ln
P
(
y
∣
x
)
H(Y|X)=−\sum_{x,y}P(x,y)\ln P(y|x)
H(Y∣X)=−x,y∑P(x,y)lnP(y∣x)
经验分布
设
(
X
1
,
X
2
,
.
.
.
,
X
n
)
(X_1,X_2,...,X_n)
(X1,X2,...,Xn)是总体 X 的一个样本集,
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn)是对应样本的观测值,则总体 X 的经验分布为:
F
n
(
x
)
=
1
n
∑
i
=
1
n
I
(
x
i
≤
x
)
F_n(x)=\frac{1}{n}\sum_{i=1}^n{I{(x_i\leq x)}}
Fn(x)=n1i=1∑nI(xi≤x)
其中
I
(
)
I()
I()是指示函数,当其中的条件成立时函数值为1,反之为0。
∑
i
=
1
n
I
(
x
i
≤
x
)
\sum_{i=1}^n{I{(x_i\leq x)}}
∑i=1nI(xi≤x) 表示样本观测值
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn) 中不大于
x
x
x 的个数。
如下图所示,经验分布函数 F n ( x ) F_n(x) Fn(x) 的图像是一条跳跃上升的阶梯型曲线,若样本观测值 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn) 中没有重复的值,则每一跳跃的间隔为 1 n \frac{1}{n} n1,若某一数值重复 k k k 次,则跳跃间隔为 k n \frac{k}{n} nk。
二、最大熵模型
假设分类模型是一个条件概率分布为
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),它表示在给定样本的特征 X 的前提下,该样本属于类别 Y 的概率。
C
C
C 是满足所有约束条件的模型的集合。定义在条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X) 上的条件熵为:
H
(
P
)
=
−
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
ln
P
(
y
∣
x
)
公
式
(
1
)
H(P)=−\sum_{x,y}\tilde P(x)P(y|x)\ln P(y|x)\quad\quad公式(1)
H(P)=−x,y∑P~(x)P(y∣x)lnP(y∣x)公式(1)
其中
P
~
(
x
)
\tilde P(x)
P~(x) 是
P
(
x
)
P(x)
P(x) 的经验分布,
ln
P
(
y
∣
x
)
\ln P(y|x)
lnP(y∣x) 是特征函数,用来描述输入 x 和输出 y 之间的某一个事实。
不知道大家有没有发现一个问题,标准的条件熵的定义是:
H
(
Y
∣
X
)
=
−
∑
x
,
y
P
(
x
,
y
)
ln
P
(
y
∣
x
)
H(Y|X)=−\sum_{x,y}P(x,y)\ln P(y|x)
H(Y∣X)=−x,y∑P(x,y)lnP(y∣x)
和公式(1)相比,标准条件熵中的是
P
(
x
,
y
)
P(x,y)
P(x,y),而不是
P
~
(
x
)
P
(
y
∣
x
)
\tilde P(x)P(y|x)
P~(x)P(y∣x),这是因为
P
(
x
,
y
)
P(x,y)
P(x,y) 并不容易求出,所以可以利用全概率公式
P
(
x
,
y
)
=
P
(
x
)
P
(
y
∣
x
)
P(x,y)=P(x)P(y|x)
P(x,y)=P(x)P(y∣x) 来做一步转换,但是
P
(
x
)
P(x)
P(x) 我们也不知道。所以又可以根据大数定律,在当样本量足够大时,可以用经验分布
P
~
(
x
)
\tilde P(x)
P~(x) 近似表示真实的概率分布
P
(
x
)
P(x)
P(x)。
公式 (1) 中 ∑ x , y P ( y ∣ x ) ln P ( y ∣ x ) \sum_{x,y}P(y|x)\ln P(y|x) ∑x,yP(y∣x)lnP(y∣x) 又可以看作是模型 P ( y ∣ x ) P(y|x) P(y∣x) 关于特征函数的期望,而在样本集给定的前提下 P ~ ( x ) \tilde P(x) P~(x) 是一个常数,所以不会对公式 (1) 的单调性产生影响。也就是说我们所要求的条件熵(公式 (1) )的最大值就是模型期望的最大值。
三、最大熵模型的求解
最大熵模型的求解过程就是在满足所有约数条件的前提下,求公式 (1) 取得最大值时模型的参数,即:
m
a
x
P
∈
C
H
(
P
)
=
−
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
ln
P
(
y
∣
x
)
max_{P\in C}\quad H(P)=−\sum_{x,y}\tilde P(x)P(y|x)\ln P(y|x)
maxP∈CH(P)=−x,y∑P~(x)P(y∣x)lnP(y∣x)
s . t . E p ( f i ) = E P ~ ( f i ) , i = 1 , 2 , . . . , n s.t.\quad\quad E_p(f_i)=E_{\tilde P}(f_i),\quad i=1,2,...,n s.t.Ep(fi)=EP~(fi),i=1,2,...,n
∑ y P ( y ∣ x ) = 1 \sum_yP(y|x)=1 y∑P(y∣x)=1
按照求解优化问题的习惯,我们把求解最大值问题改写为等价的求解最小值问题:
m
i
n
P
∈
C
−
H
(
P
)
=
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
ln
P
(
y
∣
x
)
min_{P\in C}\quad-H(P)=\sum_{x,y}\tilde P(x)P(y|x)\ln P(y|x)
minP∈C−H(P)=x,y∑P~(x)P(y∣x)lnP(y∣x)
s . t . E p ( f i ) − E P ~ ( f i ) = 0 , i = 1 , 2 , . . . , n s.t.\quad\quad E_p(f_i)-E_{\tilde P}(f_i)=0,\quad i=1,2,...,n s.t.Ep(fi)−EP~(fi)=0,i=1,2,...,n
∑ y P ( y ∣ x ) = 1 \sum_yP(y|x)=1 y∑P(y∣x)=1
而对于带约束的求极值问题,往往采用拉氏乘子法来解决,故定义拉氏函数为:
L
(
P
,
w
)
=
−
H
(
P
)
+
w
0
[
1
−
∑
y
P
(
y
∣
x
)
]
+
∑
i
=
1
n
w
i
[
E
p
(
f
i
)
−
E
P
~
(
f
i
)
]
L(P,w)=-H(P)+w_0[1-\sum_yP(y|x)]+\sum_{i=1}^n{w_i[E_p(f_i)-E_{\tilde P}(f_i)]}
L(P,w)=−H(P)+w0[1−y∑P(y∣x)]+i=1∑nwi[Ep(fi)−EP~(fi)]
所要求解的原优化问题便是:
m
i
n
P
∈
C
max
w
L
(
P
,
w
)
min_{P\in C}\quad\max_wL(P,w)
minP∈CwmaxL(P,w)
由于原优化问题不好求解,所以转换为相应的对偶问题:
max
w
m
i
n
P
∈
C
L
(
P
,
w
)
\max_w\quad min_{P\in C}L(P,w)
wmaxminP∈CL(P,w)
因为拉氏函数
L
(
P
,
w
)
L(P,w)
L(P,w) 是关于P的凸函数,所以原始问题的解与对偶问题的解是等价的。只需要先求解
m
i
n
P
∈
C
L
(
P
,
w
)
min_{P\in C}L(P,w)
minP∈CL(P,w),得到一个关于
w
w
w 的函数
ψ
(
w
)
\psi(w)
ψ(w),然后再求解
max
w
ψ
(
w
)
\max_w\psi(w)
maxwψ(w) 得到最优的参数
w
w
w 就可以了。