- 本文为《统计学习方法》的读书笔记
目录
最大熵原理
- 最大熵原理是概率模型学习的一个准则。最大熵原理认为,学习概率模型时,在所有可能的概率模型 (分布) 中,熵最大的模型是最好的模型。所以,最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型
最大熵原理的直观解释
- 假设离散随机变量
X
X
X 的概率分布是
P
(
X
)
P(X)
P(X), 则其熵是
熵满足下列不等式:
当 X X X 服从均匀分布时,熵最大
- 直观地,最大熵原理认为要选择的概率模型首先必须满足已有的事实,即约束条件。在没有更多信息的情况下,那些不确定的部分都是 “等可能的”。最大熵原理通过熵的最大化来表示等可能性
例
最大熵模型的定义
- 最大熵原理是统计学习的一般原理,将它应用到分类得到最大熵模型
- 假设分类模型是一个条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X),
X
∈
R
n
X\in\R^n
X∈Rn. 给定一个训练数据集
学习的目标是用最大熵原理选择最好的分类模型
最大熵模型的约束条件
- 给定训练数据集,可以确定联合分布
P
(
X
,
Y
)
P(X, Y)
P(X,Y) 的经验分布
P
~
(
X
,
Y
)
\tilde P(X, Y)
P~(X,Y) 和边缘分布
P
(
X
)
P(X)
P(X) 的经验分布
P
~
(
X
)
\tilde P(X)
P~(X)
其中, ν ( X = x , Y = y ) ν (X = x , Y = y) ν(X=x,Y=y) 表示训练数据中样本 ( x , y ) (x,y) (x,y) 出现的频数, ν ( X = x ) ν(X = x) ν(X=x) 表示训练数据中输入 x x x 出现的频数, N N N 表示训练样本容量
- 用特征函数 (feature function)
f
(
x
,
y
)
f(x , y)
f(x,y) 描述输入
x
x
x 和输出
y
y
y 之间的某一个事实:
特征函数 f ( x , y ) f(x, y) f(x,y) 关于经验分布 P ~ ( X , Y ) \tilde P(X, Y) P~(X,Y) 的期望值,用 E P ~ ( f ) E_{\tilde P}(f) EP~(f) 表示:
特征函数 f ( x , y ) f(x, y) f(x,y) 关于模型 P ( Y ∣ X ) P(Y|X) P(Y∣X) 与经验分布 P ~ ( X ) \tilde P(X) P~(X) 的期望值,用 E P ( f ) E_P(f) EP(f) 表示:
如果模型能够获取训练数据中的信息,那么就可以假设这两个期望值相等,即
或
上式即为模型学习的约束条件。假如有 n n n 个特征函数 f i ( x , y ) , i = 1 , . . . , n f_i(x, y) , i = 1 ,...,n fi(x,y),i=1,...,n,那么就有 n n n 个约束条件
最大熵模型的定义
最大熵模型的学习
约束最优化问题
- 最大熵模型的学习等价于约束最优化问题:
按照最优化问题的习惯,将求最大值问题改写为等价的求最小值问题:
上述约束最优化问题满足 Convex + Slater 条件,因此可以转为求解其对偶问题
对偶问题 (求解最大熵模型)
- 首先,引进拉格朗日乘子
w
0
,
.
.
.
,
w
n
w_0,...,w_n
w0,...,wn,定义拉格朗日函数
L
(
P
,
w
)
L(P,w)
L(P,w)
对偶问题是
- 首先求解极小化问题
min
P
∈
C
L
(
P
,
w
)
\min_{P\in C}L(P,w)
minP∈CL(P,w)。将
min
P
∈
C
L
(
P
,
w
)
\min_{P\in C}L(P,w)
minP∈CL(P,w) 记作
ψ
(
w
)
\psi(w)
ψ(w):
ψ ( w ) \psi(w) ψ(w) 称为对偶函数。同时,将其解记作
具体地,求 L ( P , w ) L(P,w) L(P,w) 对 P ( y ∣ x ) P(y|x) P(y∣x) 的偏导数
∂ L ( P , w ) ∂ P ( y ∣ x ) = P ~ ( x ) ( log P ( y ∣ x ) + 1 ) − w 0 − P ~ ( x ) ∑ i = 1 n w i f i ( x , y ) = P ~ ( x ) ( log P ( y ∣ x ) + 1 − w 0 − ∑ i = 1 n w i f i ( x , y ) ) \begin{aligned} \frac{\partial L(P, w)}{\partial P(y \mid x)} &=\tilde{P}(x)(\log P(y \mid x)+1)-w_{0}-\tilde{P}(x) \sum_{i=1}^{n} w_{i} f_{i}(x, y) \\ &= \tilde{P}(x)\left(\log P(y \mid x)+1-w_{0}-\sum_{i=1}^{n} w_{i} f_{i}(x, y)\right) \end{aligned} ∂P(y∣x)∂L(P,w)=P~(x)(logP(y∣x)+1)−w0−P~(x)i=1∑nwifi(x,y)=P~(x)(logP(y∣x)+1−w0−i=1∑nwifi(x,y))令偏导数等于 0,在 P ~ ( x ) > 0 \tilde P(x) > 0 P~(x)>0 的情况下,解得
由于 ∑ y P ( y ∣ x ) = 1 \sum_yP(y|x)=1 ∑yP(y∣x)=1,得
其中,
Z w ( x ) Z_w(x) Zw(x) 称为规范化因子; f i ( x , y ) f_i(x,y) fi(x,y) 是特征函数; w i w_i wi 是特征的权值
- 之后,求解对偶问题外部的极大化问题,并记其解为
w
∗
w^*
w∗
这就是说,可以应用最优化算法求对偶函数 ψ ( w ) ψ(w) ψ(w) 的极大化,得到 w ∗ w^* w∗,然后得到的 P w ∗ ( y ∣ x ) P_{w^*}(y|x) Pw∗(y∣x) 即为学习到的最大熵模型
最大熵模型的更一般形式
- 其中,
x ∈ R n x\in\R^n x∈Rn 为输入, y ∈ { 1 , 2 , . . . , k } y\in\{1,2 ,...,k\} y∈{1,2,...,k} 为输出, w ∈ R n w\in\R^n w∈Rn 为权值向量, f i ( x , y ) , i = 1 , 2 , . . . , n f_i (x, y), i =1,2,...,n fi(x,y),i=1,2,...,n 为任意实值特征函数
- 最大熵模型与逻辑斯谛回归模型有类似的形式,它们又称为对数线性模型 (log linear model)。模型学习就是在给定的训练数据条件下对模型进行极大似然估计或正则化的极大似然估计 (下面会证明对偶函数的极大化等价于最大熵模型的极大似然估计)
小例子
极大似然估计
Ref: 最大熵模型中的对数似然函数表示法解释
- 下面证明对偶函数的极大化等价于最大熵模型的极大似然估计
最大熵模型的极大似然函数
- 已知训练数据的经验概率分布
P
~
(
X
,
Y
)
\tilde P(X,Y)
P~(X,Y),则条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X) 的对数似然函数为
L = log ∏ i = 1 n P ( x i , y i ) \begin{aligned} L&=\log\prod_{i=1}^nP(x_i,y_i) \end{aligned} L=logi=1∏nP(xi,yi)样本集中会有很多值相同的样本,即 ( x i , y i ) = ( x j , y j ) ( i ≠ j ) (x_i,y_i)=(x_j,y_j)(i\neq j) (xi,yi)=(xj,yj)(i=j)。假设样本的取值为 k k k 个,分别为 { ( v 1 , w 1 ) , . . . , ( v k , w k ) } \{(v_1,w_1),...,(v_k,w_k)\} {(v1,w1),...,(vk,wk)},用 c ( v i , w i ) c(v_i,w_i) c(vi,wi) 表示训练集中样本值为 ( v i , w i ) (v_i,w_i) (vi,wi) 的频数,则公式对数似然函数可以表示为
L = log ∏ i = 1 k P ( v i , w i ) c ( v i , w i ) \begin{aligned} L&=\log\prod_{i=1}^kP(v_i,w_i)^{c(v_i,w_i)} \end{aligned} L=logi=1∏kP(vi,wi)c(vi,wi)等号两边同时开 n n n 次方,可得
L 1 n = log ∏ i = 1 k P ( v i , w i ) c ( v i , w i ) n = log ∏ i = 1 k P ( v i , w i ) P ~ ( v i , w i ) = log ∏ x , y P ( x , y ) P ~ ( x , y ) = ∑ x , y P ~ ( x , y ) log P ( x , y ) ≈ ∑ x , y P ~ ( x , y ) log [ P ~ ( x ) P ( y ∣ x ) ] = ∑ x , y P ~ ( x , y ) log P ( y ∣ x ) + ∑ x , y P ~ ( x , y ) log P ~ ( x ) \begin{aligned} L^{\frac{1}{n}}&=\log\prod_{i=1}^kP(v_i,w_i)^{\frac{c(v_i,w_i)}{n}} \\&=\log\prod_{i=1}^kP(v_i,w_i)^{\tilde P(v_i,w_i)} \\&=\log\prod_{x,y}P(x,y)^{\tilde P(x,y)} \\&=\sum_{x,y}\tilde P(x,y)\log P(x,y) \\&\approx\sum_{x,y}\tilde P(x,y)\log [\tilde P(x)P(y|x)] \\&=\sum_{x,y}\tilde P(x,y)\log P(y|x)+\sum_{x,y}\tilde P(x,y)\log \tilde P(x) \end{aligned} Ln1=logi=1∏kP(vi,wi)nc(vi,wi)=logi=1∏kP(vi,wi)P~(vi,wi)=logx,y∏P(x,y)P~(x,y)=x,y∑P~(x,y)logP(x,y)≈x,y∑P~(x,y)log[P~(x)P(y∣x)]=x,y∑P~(x,y)logP(y∣x)+x,y∑P~(x,y)logP~(x)注意到,上式中的后一项 ∑ x , y P ~ ( x , y ) log P ~ ( x ) \sum_{x,y}\tilde P(x,y)\log \tilde P(x) ∑x,yP~(x,y)logP~(x) 其实只是一个常数,因此最大化对数似然函数就等价于最大化
L P ~ ( P w ) = ∑ x , y P ~ ( x , y ) log P ( y ∣ x ) \begin{aligned} L_{\tilde P}(P_w)&=\sum_{x,y}\tilde P(x,y)\log P(y|x) \end{aligned} LP~(Pw)=x,y∑P~(x,y)logP(y∣x)其中, ∑ x , y \sum_{x,y} ∑x,y 表示遍历 x , y x,y x,y 的所有可能取值,而非遍历整个训练集 - 当条件概率分布
P
(
y
∣
x
)
P(y|x)
P(y∣x) 是最大熵模型,即
时,对数似然函数 L P ~ ( P w ) L_{\tilde P}(P_w) LP~(Pw) 为
最大熵模型的对偶函数
极大似然估计与对偶函数极大化
- 可见,
因此最大熵模型学习中的对偶函数极大化等价于最大熵模型的极大似然估计。这样,最大熵模型的学习问题就转换为具体求解对数似然函数极大化或对偶函数极大化的问题
模型学习的最优化算法
- 下面讲解如何极大化对数似然函数
L
P
~
(
P
w
)
L_{\tilde P}(P_w)
LP~(Pw),求出
w
∗
w^*
w∗:
w ∗ = arg max w ψ ( w ) = arg max w L P ~ ( P w ) w^*=\argmax_w\psi(w)=\argmax_w L_{\tilde P}(P_w) w∗=wargmaxψ(w)=wargmaxLP~(Pw)其中,对数似然函数为
L P ~ ( P w ) = ∑ x , y P ~ ( x , y ) log P w ( y ∣ x ) \begin{aligned} L_{\tilde P}(P_w)&=\sum_{x,y}\tilde P(x,y)\log P_w(y|x) \end{aligned} LP~(Pw)=x,y∑P~(x,y)logPw(y∣x)最大熵模型为
- 从最优化的观点看,这时的目标函数 (对数似然函数) 具有很好的性质。它是光滑的凸函数,因此多种最优化的方法都适用,保证能找到全局最优解
- 常用的方法有改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法。牛顿法或拟牛顿法一般收敛速度更快
下面介绍基于改进的迭代尺度法与拟牛顿法的最大熵模型学习算法
改进的迭代尺度法 (improved iterative scaling, IIS)
- 改进的迭代尺度法是一种最大熵模型学习的最优化算法。IIS 的想法是: 假设最大熵模型当前的参数向量是 w = ( w 1 , . . . , w n ) T w = (w_1,...,w_n)^T w=(w1,...,wn)T,我们希望找到一个新的参数向量 w + δ = ( w 1 + δ 1 , . . . , w n + δ n ) T w+\delta=(w_1+\delta_1 ,...,w_n+\delta_n)^T w+δ=(w1+δ1,...,wn+δn)T,使得模型的对数似然函数值增大
- 对于给定的经验分布
P
~
(
x
,
y
)
\tilde P(x ,y)
P~(x,y),模型参数从
w
w
w 到
w
+
δ
w+\delta
w+δ,对数似然函数的改变量是
利用不等式
建立对数似然函数改变量的下界:
将下界记为 A ( δ ∣ w ) A(\delta|w) A(δ∣w)
如果能找到适当的 δ \delta δ 使下界 A ( δ ∣ w ) A(\delta|w) A(δ∣w) 提高,那么对数似然函数也会提高。然而,函数 A ( δ ∣ w ) A(\delta|w) A(δ∣w) 中的 δ \delta δ 是一个向量,含有多个变量,不易同时优化。IIS 试图一次只优化其中一个变量 δ i \delta_i δi, 而固定其他变量 δ j \delta_j δj, i ≠ j i\neq j i=j。但此时如果我们计算 A ( δ ∣ w ) A(\delta|w) A(δ∣w) 对 δ i \delta_i δi 的偏导:
∂ A ( δ ∣ w ) ∂ δ i = ∑ x , y P ~ ( x , y ) f i ( x , y ) − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) f i ( x , y ) exp ∑ i = 1 n δ i f i ( x , y ) \frac{\partial A(\delta|w)}{\partial \delta_i}=\sum_{x, y} \tilde{P}(x, y) f_{i}(x, y)-\sum_{x} \tilde{P}(x) \sum_{y} P_{w}(y \mid x)f_i(x,y) \exp \sum_{i=1}^{n} \delta_{i} f_{i}(x, y) ∂δi∂A(δ∣w)=x,y∑P~(x,y)fi(x,y)−x∑P~(x)y∑Pw(y∣x)fi(x,y)expi=1∑nδifi(x,y)可以发现,这个偏导里含有所有的 δ i , i = 1 , . . . , n \delta_i,i=1,...,n δi,i=1,...,n,因此我们还是没办法一次优化一个变量 - 为了解决这个问题,IIS 进一步降低下界
A
(
δ
∣
w
)
A(\delta|w)
A(δ∣w)。具体地, IIS 引进一个量
f
#
(
x
,
y
)
f^\#(x,y)
f#(x,y),
这样, A ( δ ∣ w ) A(\delta|w) A(δ∣w) 可以改写为
利用指数函数的凸性以及对任意 i i i,有 f i ( x , y ) f # ( x , y ) ≥ 0 \frac{f_i(x,y)}{f^\#(x,y)}\geq0 f#(x,y)fi(x,y)≥0 且 ∑ i = 1 n f i ( x , y ) f # ( x , y ) = 1 \sum_{i=1}^n\frac{f_i(x,y)}{f^\#(x,y)}=1 ∑i=1nf#(x,y)fi(x,y)=1 这一事实,根据 Jensen 不等式,得到
于是
至此就得到了对数似然函数改变量的一个新的 (相对不紧的) 下界 B ( δ ∣ w ) B(\delta|w) B(δ∣w)
求 B ( δ ∣ w ) B(\delta|w) B(δ∣w) 对 δ i \delta_i δi 的偏导数:
可以看到上述偏导中,除 δ i \delta_i δi 外不含任何其他变量,这就达到了我们一次只优化一个变量的目的。令偏导数为 0 得到
于是,依次对 δ i \delta_i δi 求解上述方程可以求出 δ \delta δ
- 如果
f
#
(
x
,
y
)
f^\#(x ,y)
f#(x,y) 是常数,即对任何
x
,
y
x,y
x,y,有
f
#
(
x
,
y
)
=
M
f^\#(x ,y) = M
f#(x,y)=M, 那么
δ
i
\delta_i
δi 可以显式地表示成
- 如果
f
#
(
x
,
y
)
f^\#(x ,y)
f#(x,y) 不是常数,那么求解上述方程的一个简单有效的方法是牛顿法。以
g
(
δ
i
)
=
0
g(\delta_i)=0
g(δi)=0 表示上述方程,牛顿法通过迭代求得
δ
i
∗
\delta_i^*
δi∗,使得
g
(
δ
i
∗
)
=
0
g(\delta_i^*) =0
g(δi∗)=0。迭代公式是
只要适当选取初始值 δ i ( 0 ) \delta_i^{(0)} δi(0),由于 δ i \delta_i δi 的方程有单根, 因此牛顿法恒收敛,而且收敛速度很快
- 如果
f
#
(
x
,
y
)
f^\#(x ,y)
f#(x,y) 是常数,即对任何
x
,
y
x,y
x,y,有
f
#
(
x
,
y
)
=
M
f^\#(x ,y) = M
f#(x,y)=M, 那么
δ
i
\delta_i
δi 可以显式地表示成
拟牛顿法
- 对数似然函数为
L P ~ ( P w ) = ∑ x , y P ~ ( x , y ) log P w ( y ∣ x ) \begin{aligned} L_{\tilde P}(P_w)&=\sum_{x,y}\tilde P(x,y)\log P_w(y|x) \end{aligned} LP~(Pw)=x,y∑P~(x,y)logPw(y∣x)最大熵模型为
因此目标函数为
- 梯度:
其中
∂ f ( w ) ∂ w i = ∑ x P ~ ( x ) 1 Z w ( x ) ∑ y exp ( ∑ i = 1 n w i f i ( x , y ) ) f i ( x , y ) − ∑ x , y P ~ ( x , y ) f i ( x , y ) = ∑ x , y P ~ ( x ) 1 Z w ( x ) exp ( ∑ i = 1 n w i f i ( x , y ) ) f i ( x , y ) − E P ~ ( f i ) = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( x , y ) − E P ~ ( f i ) , i = 1 , 2 , ⋯ , n \begin{aligned} \frac{\partial f(w)}{\partial w_{i}} &=\sum_x\tilde P(x)\frac{1}{Z_w(x)}\sum_y\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)f_i(x,y)-\sum_{x,y}\tilde P(x,y)f_i(x,y) \\&=\sum_{x,y}\tilde P(x)\frac{1}{Z_w(x)}\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)f_i(x,y)-E_{\tilde{P}}\left(f_{i}\right) \\&=\sum_{x, y} \tilde{P}(x) P_{w}(y \mid x) f_{i}(x, y)-E_{\tilde{P}}\left(f_{i}\right), \quad i=1,2, \cdots, n \end{aligned} ∂wi∂f(w)=x∑P~(x)Zw(x)1y∑exp(i=1∑nwifi(x,y))fi(x,y)−x,y∑P~(x,y)fi(x,y)=x,y∑P~(x)Zw(x)1exp(i=1∑nwifi(x,y))fi(x,y)−EP~(fi)=x,y∑P~(x)Pw(y∣x)fi(x,y)−EP~(fi),i=1,2,⋯,n