逻辑斯谛回归是统计学习中的经典分类方法。最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型。逻辑斯谛回归模型与最大熵模型都属于对数线性模型。
最大熵模型由最大熵原理推导实现。
逻辑斯蒂回归模型、最大熵模型学习归结为以似然函数为目标函数的最优化问题,通常通过迭代算法求解。从最优化的观点看,这时的目标函数具有很好的性质。它是光滑的凸函数,因此多种最优化的方法都适用,保证能找到全局最优解。常用的方法有改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法。牛顿法或拟牛顿法一般收敛速度更快。
下面介绍基于改进的迭代尺度法与拟牛顿法的最大熵模型学习算法。
改进的迭代尺度法
改进的迭代尺度法(improved iterative scaling, IIS)是一种最大熵模型学习的最优化算法。
已知最大熵模型为
P w ( y ∣ x ) = 1 Z w ( x ) exp ( ∑ i = 1 n w i f i ( x , y ) ) P_w(y|x)=\frac{1}{Z_w(x)}\exp\bigg(\sum_{i=1}^nw_if_i(x,y)\bigg) Pw(y∣x)=Zw(x)1exp(i=1∑nwifi(x,y))
其中,
Z w ( x ) = ∑ y exp ( ∑ i = 1 n w i f i ( x , y ) ) Z_w(x)=\sum_y\exp\bigg(\sum_{i=1}^nw_if_i(x,y)\bigg) Zw(x)=y∑exp(i=1∑nwifi(x,y))
对数似然函数为
L ( w ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x P ~ ( x ) log Z w ( x ) L(w)=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^nw_if_i(x,y)-\sum_x\tilde P(x)\log Z_w(x) L(w)=x,y∑P~(x,y)i=1∑nwifi(x,y)−x∑P~(x)logZw(x)
目标是通过极大似然估计学习模型参数,即求对数似然函数的极大值 w ^ \hat w w^。
IIS的想法是:假设最大熵模型当前的参数向量是 w = ( w 1 , w 2 , ⋯   , w n ) T w=(w_1,w_2,\cdots,w_n)^T w=(w1,w2,⋯,wn)T,我们希望找到一个新的参数向量 w + δ = ( w 1 + δ 1 , w 2 + δ 2 , ⋯   , w n + δ n ) T w+\delta=(w_1+\delta_1,w_2+\delta_2,\cdots,w_n+\delta_n)^T w+δ=(w1+δ1,w2+δ2,⋯,wn+δn)T,使得模型的对数似然函数值增大。如果能有这样一种参数向量更新的方法 τ \tau τ: w → w + δ w\rightarrow w+\delta w→w+δ,那么就可以重复使用这一方法,直至找到对数似然函数的极大值。
对于给定的经验分布 P ~ ( x , y ) \tilde P(x,y) P~(x,y),模型参数从 w w w到 w + δ w+\delta w+δ,对数似然函数的改变量是
L ( w + δ ) − L ( w ) = ∑ x , y P ~ ( x , y ) log P w + δ ( y ∣ x ) − ∑ x , y P ~ ( x , y ) log P w ( y ∣ x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) − ∑ x P ~ ( x ) log Z w + δ ( x ) Z w ( x ) \begin{aligned} L(w+\delta)-L(w)&=\sum_{x,y}\tilde P(x,y)\log P_{w+\delta}(y|x)-\sum_{x,y}\tilde P(x,y)\log P_w(y|x) \\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)-\sum_x\tilde P(x)\log\frac{Z_{w+\delta}(x)}{Z_w(x)} \end{aligned} L(w+δ)−L(w)=x,y∑P~(x,y)logPw+δ(y∣x)−x,y∑P~(x,y)logPw(y∣x)=x,y∑P~(x,y)i=1∑nδifi(x,y)−x∑P~(x)logZw(x)Zw+δ(x)
利用不等式
− log α ≥ 1 − α , α > 0 -\log\alpha \geq 1-\alpha, \alpha>0 −logα≥1−α,α>0
建立对数似然函数改变量的下界:
L ( w + δ ) − L ( w ) ≥ ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) Z w + δ ( x ) Z w ( x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) exp ∑ i = 1 n δ i f i ( x , y ) \begin{aligned} L(w+\delta)-L(w)&\geq\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_x\tilde P(x)\frac{Z_{w+\delta}(x)}{Z_w(x)} \\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_x\tilde P(x)\sum_yP_w(y|x)\exp\sum_{i=1}^n\delta_if_i(x,y) \end{aligned} L(w+δ)−L(w)≥x,y∑P~(x,y)i=1∑nδifi(x,y)+1−x∑P~(x)Zw(x)Zw+δ(x)=x,y∑P~(x,y)i=1∑nδifi(x,y)+1−x∑P~(x)y∑Pw(y∣x)expi=1∑nδifi(x,y)
将右端记为
A ( δ ∣ w ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) exp ∑ i = 1 n δ i f i ( x , y ) A(\delta|w)=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_x\tilde P(x)\sum_y P_w(y|x)\exp\sum_{i=1}^n\delta_if_i(x,y) A(δ∣w)=x,y∑P~(x,y)i=1∑nδifi(x,y)+1−x∑P~(x)y∑Pw(y∣x)expi=1∑nδifi(x,y)
于是有
L ( w + δ ) − L ( w ) ≥ A ( δ ∣ w ) L(w+\delta)-L(w)\geq A(\delta|w) L(w+δ)−L(w)≥A(δ∣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。
为达到这一目的,IIS进一步降低下界 A ( δ ∣ w ) A(\delta|w) A(δ∣w)。具体地,IIS引进一个量 f ∗ ( x , y ) f^*(x,y) f∗(x,y),
f ♯ ( x , y ) = ∑ i f i ( x , y ) f^{\sharp}(x,y)=\sum_if_i(x,y) f♯(x,y)=i∑fi(x,y)
因为 f i f_i fi是二值函数,故 f ♯ ( x , y ) f^{\sharp}(x,y) f♯(x,y)表示所有特征在 ( x , y ) (x,y) (x,y)出现的次数。这样, A ( δ ∣ w ) A(\delta|w) A(δ∣w)可以改写成
(30) A ( δ ∣ w ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) exp ( f ♯ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) f ♯ ( x , y ) ) A(\delta|w)=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_x\tilde P(x)\sum_yP_w(y|x)\exp\bigg(f^{\sharp}(x,y)\sum_{i=1}^n\frac{\delta_if_i(x,y)}{f^{\sharp}(x,y)}\bigg) \tag{30} A(δ∣w)=x,y∑P~(x,y)i=1∑nδifi(x,y)+1−x∑P~(x)y∑Pw(y∣x)exp(f♯(x,y)i=1∑nf♯(x,y)δifi(x,y))(30)
利用指数函数的凸性以及对任意 i i i,有 f i ( x , y ) f ♯ ( x , y ) ≥ 0 \frac{f_i(x,y)}{f^{\sharp}(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^{\sharp}(x,y)}=1 ∑i=1nf♯(x,y)fi(x,y)=1这一事实,根据Jensen不等式,得到
exp ( ∑ i = 1 n f i ( x , y ) f ♯ ( x , y ) δ i f ♯ ( x , y ) ) ≤ ∑ i = 1 n f i ( x , y ) f ♯ ( x , y ) exp ( δ i f ♯ ( x , y ) ) \exp\bigg(\sum_{i=1}^n\frac{f_i(x,y)}{f^{\sharp}(x,y)}\delta_if^{\sharp}(x,y)\bigg)\leq \sum_{i=1}^n\frac{f_i(x,y)}{f^{\sharp}(x,y)}\exp(\delta_if^{\sharp}(x,y)) exp(i=1∑nf♯(x,y)fi(x,y)δif♯(x,y))≤i=1∑nf♯(x,y)fi(x,y)exp(δif♯(x,y))
于是式(30)可写成
(31) A ( δ ∣ w ) ≥ ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) ∑ i = 1 n ( f i ( x , y ) f ♯ ( x , y ) ) exp ( δ i f ∗ ( x , y ) ) A(\delta|w)\geq \sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_x\tilde P(x)\sum_yP_w(y|x)\sum_{i=1}^n\bigg(\frac{f_i(x,y)}{f^{\sharp}(x,y)}\bigg)\exp(\delta_if^*(x,y)) \tag{31} A(δ∣w)≥x,y∑P~(x,y)i=1∑nδifi(x,y)+1−x∑P~(x)y∑Pw(y∣x)i=1∑n(f♯(x,y)fi(x,y))exp(δif∗(x,y))(31)
记不等式(31)右端为
B ( δ ∣ w ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n δ i f i ( x , y ) + 1 − ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) ∑ i = 1 n f i ( x , y ) f ♯ ( x , y ) exp ( δ i f ∗ ( x , y ) ) B(\delta|w)=\sum{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)+1-\sum_x\tilde P(x)\sum_yP_w(y|x)\sum_{i=1}^n\frac{f_i(x,y)}{f^{\sharp}(x,y)}\exp(\delta_if^*(x,y)) B(δ∣w)=∑x,yP~(x,y)i=1∑nδifi(x,y)+1−x∑P~(x)y∑Pw(y∣x)i=1∑nf♯(x,y)fi(x,y)exp(δif∗(x,y))
于是得到
L ( w + δ ) − L ( w ) ≥ B ( δ ∣ w ) L(w+\delta)-L(w)\geq B(\delta|w) L(w+δ)−L(w)≥B(δ∣w)
这里, B ( δ ∣ w ) B(\delta|w) B(δ∣w)是对数似然函数改变量的一个新的(相对不紧的)下界。
求 B ( δ ∣ w ) B(\delta|w) B(δ∣w)对 δ i \delta_i δi的偏导数:
(32) ∂ B ( δ ∣ 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 f ♯ ( x , y ) ) \frac{\partial B(\delta|w)}{\partial\delta_i}=\sum_{x,y}\tilde P(x,y)f_i(x,y)-\sum_x\tilde P(x)\sum_yP_w(y|x)f_i(x,y)\exp(\delta_if^{\sharp}(x,y)) \tag{32} ∂δi∂B(δ∣w)=x,y∑P~(x,y)fi(x,y)−x∑P~(x)y∑Pw(y∣x)fi(x,y)exp(δif♯(x,y))(32)
在式(32)里,除 δ i \delta_i δi外不含任何其他变量。令偏导数为0得到
(33) ∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( x , y ) exp ( δ i f ♯ ( x , y ) ) = E P ~ ( f i ) \sum_{x,y}\tilde P(x)P_w(y|x)f_i(x,y)\exp(\delta_if^{\sharp}(x,y))=E_{\tilde P}(f_i) \tag{33} x,y∑P~(x)Pw(y∣x)fi(x,y)exp(δif♯(x,y))=EP~(fi)(33)
于是,依次对 δ i \delta_i δi求解方程(33)可以求出 δ \delta δ。
这就给出了一种求 w w w的最优解的迭代方法,即改进的迭代尺度算法IIS。
算法1(改进的迭代尺度算法IIS)
输入:特征函数 f 1 , f 2 , ⋯   , f n f_1,f_2,\cdots,f_n f1,f2,⋯,fn;经验分布 P ~ ( X , Y ) \tilde P(X,Y) P~(X,Y),模型 P w ( y ∣ x ) P_w(y|x) Pw(y∣x)
输出:最有参数值 w i ∗ w_i^* wi∗;最优模型 P w ∗ P_{w^*} Pw∗。
(1) 对所有 i ∈ { 1 , 2 , ⋯   , n } i\in\{1,2,\cdots,n\} i∈{1,2,⋯,n},取初值 w i = 0 w_i=0 wi=0
(2) 对每一 i ∈ { 1 , 2 , ⋯   , n } i\in\{1,2,\cdots,n\} i∈{1,2,⋯,n}:
(a) 令 δ i \delta_i δi是方程
∑ x , y P ~ ( x ) P ( y ∣ x ) f i ( x , y ) exp ( δ i f ♯ ( x , y ) ) = E P ~ ( f i ) \sum_{x,y}\tilde P(x)P(y|x)f_i(x,y)\exp(\delta_if^{\sharp}(x,y))=E_{\tilde P}(f_i) x,y∑P~(x)P(y∣x)fi(x,y)exp(δif♯(x,y))=EP~(fi)
的解,这里,
f ♯ ( x , y ) = ∑ i = 1 n f i ( x , y ) f^{\sharp}(x,y)=\sum_{i=1}^nf_i(x,y) f♯(x,y)=i=1∑nfi(x,y)
(b) 更新 w i w_i wi值: w i ← w i + δ i w_i\leftarrow w_i+\delta_i wi←wi+δi
(3) 如果不是所有 w i w_i wi都收敛,重复步(2)。
这一算法关键的一步是(a),即求解方程(33)中的 δ i \delta_i δi。如果 f ♯ ( x , y ) f^{\sharp}(x,y) f♯(x,y)是常数,即对任何 x x x,y,有 f ♯ ( x , y ) = M f^{\sharp}(x,y)=M f♯(x,y)=M,那么 δ i \delta_i δi可以显式地表示成
(34) δ i = 1 M log E P ~ ( f i ) E P ( f i ) \delta_i=\frac{1}{M}\log\frac{E_{\tilde P}(f_i)}{E_P(f_i)} \tag{34} δi=M1logEP(fi)EP~(fi)(34)
如果 f ♯ ( x , y ) f^{\sharp}(x,y) f♯(x,y)不是常数,那么必须通过数值计算求 δ i \delta_i δi,简单有效的方法是牛顿法。以 g ( δ i ) = 0 g(\delta_i)=0 g(δi)=0表示方程(33),牛顿法通过迭代求得 δ i ∗ \delta_i^* δi∗,使得 g ( δ i ∗ ) = 0 g(\delta_i^*)=0 g(δi∗)=0。迭代公式是
(35) δ i ( k + 1 ) = δ i ( k ) − g ( δ i ( k ) ) g ′ ( δ i ( k ) ) \delta_i^{(k+1)}=\delta_i^{(k)}-\frac{g(\delta_i^{(k)})}{g'(\delta_i^{(k)})} \tag{35} δi(k+1)=δi(k)−g′(δi(k))g(δi(k))(35)
只要适当选取初始值 δ i ( 0 ) \delta_i^{(0)} δi(0),由于 δ i \delta_i δi的方程(33)有单根,因此牛顿法恒收敛,而且收敛速度很快。
拟牛顿法
最大熵模型学习还可以应用牛顿法或拟牛顿法。
对于最大熵模型而言
P w ( y ∣ x ) = exp ( ∑ i = 1 n w i f i ( x , y ) ) ∑ y exp ( ∑ i = 1 n w i f i ( x , y ) ) P_w(y|x)=\frac{\exp\bigg(\sum_{i=1}^nw_if_i(x,y)\bigg)}{\sum_y\exp\bigg(\sum_{i=1}^nw_if_i(x,y)\bigg)} Pw(y∣x)=∑yexp(∑i=1nwifi(x,y))exp(∑i=1nwifi(x,y))
目标函数:
min w ∈ R n f ( w ) = ∑ x P ~ ( x ) log ∑ y exp ( ∑ i = 1 n w i f i ( x , y ) ) − ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) \min_{w\in R^n} f(w)=\sum_x\tilde P(x)\log\sum_y\exp\bigg(\sum_{i=1}^nw_if_i(x,y)\bigg)-\sum_{x,y}\tilde P(x,y)\sum_{i=1}^nw_if_i(x,y) w∈Rnminf(w)=x∑P~(x)logy∑exp(i=1∑nwifi(x,y))−x,y∑P~(x,y)i=1∑nwifi(x,y)
梯度:
g ( w ) = ( ∂ f ( w ) ∂ w 1 , ∂ f ( w ) ∂ w 2 , ⋯   , ∂ f ( w ) ∂ w n ) T g(w)=\bigg(\frac{\partial f(w)}{\partial w_1},\frac{\partial f(w)}{\partial w_2},\cdots,\frac{\partial f(w)}{\partial w_n}\bigg)^T g(w)=(∂w1∂f(w),∂w2∂f(w),⋯,∂wn∂f(w))T
其中,
∂ f ( w ) ∂ w i = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( x , y ) − E P ~ ( f i ) , i = 1 , 2 , ⋯   , n \frac{\partial f(w)}{\partial w_i}=\sum_{x,y}\tilde P(x)P_w(y|x)f_i(x,y)-E_{\tilde P}(f_i), i=1,2,\cdots,n ∂wi∂f(w)=x,y∑P~(x)Pw(y∣x)fi(x,y)−EP~(fi),i=1,2,⋯,n
相应的拟牛顿法BFGS算法如下。
算法2(最大熵模型学习的BFGS算法)
输入:特征函数 f 1 , f 2 , ⋯   , f n f_1,f_2,\cdots,f_n f1,f2,⋯,fn;经验分布 P ~ ( x , y ) \tilde P(x,y) P~(x,y),目标函数 f ( w ) f(w) f(w),梯度 g ( w ) = ▽ f ( w ) g(w)=\triangledown f(w) g(w)=▽f(w),精度要求 ε \varepsilon ε;
输出:最有参数值 w ∗ w^* w∗;最优模型 P w ∗ ( y ∣ x ) P_{w^*}(y|x) Pw∗(y∣x)。
(1) 选定初始值 w ( 0 ) w^{(0)} w(0),取 B 0 B_0 B0为正定对称矩阵,置 k = 0 k=0 k=0
(2) 计算 g k = g ( w ( k ) ) g_k=g(w^{(k)}) gk=g(w(k))。若 ∣ ∣ g k ∣ ∣ < ε ||g_k||<\varepsilon ∣∣gk∣∣<ε,则停止计算,得 w ∗ = w ( k ) w^*=w^{(k)} w∗=w(k);否则转(3)
(3) 由 B k p k = − g k B_kp_k=-g_k Bkpk=−gk求出 p k p_k pk
(4) 一维搜索:求 λ k \lambda_k λk使得
f ( w ( k ) + λ k p k ) = min λ ≥ 0 f ( w ( k ) + λ p k ) f(w^{(k)}+\lambda_kp_k)=\min_{\lambda\geq0}f(w^{(k)}+\lambda p_k) f(w(k)+λkpk)=λ≥0minf(w(k)+λpk)
(5) 置 w ( k + 1 ) = w ( k ) + λ k p k w^{(k+1)}=w^{(k)}+\lambda_kp_k w(k+1)=w(k)+λkpk
(6) 计算 g k + 1 = g ( w ( k + 1 ) ) g_{k+1}=g(w^{(k+1)}) gk+1=g(w(k+1)),若 ∣ ∣ g k ∣ ∣ < ε ||g_k||<\varepsilon ∣∣gk∣∣<ε,则停止计算,得 w ∗ = w ( k + 1 ) w^*=w^{(k+1)} w∗=w(k+1),否则,按下式求出 B k + 1 B_{k+1} Bk+1:
B k + 1 = B k + y k y k T y k T δ k − B k δ k δ k T B k δ k T B k δ k B_{k+1}=B_k+\frac{y_ky_k^T}{y_k^T\delta_k}-\frac{B_k\delta_k\delta_k^TB_k}{\delta_k^TB_k\delta_k} Bk+1=Bk+ykTδkykykT−δkTBkδkBkδkδkTBk
其中,
y k = g k + 1 − g k , δ k = w ( k + 1 ) − w ( k ) y_k=g_{k+1}-g_k, \delta_k=w^{(k+1)}-w^{(k)} yk=gk+1−gk,δk=w(k+1)−w(k)
(7) 置 k = k + 1 k=k+1 k=k+1,转(3)。