【机器学习算法】最大熵模型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/87890039

1.最大熵原理

  在概率统计中,最大熵原理认为在所有可能的概率模型中,熵最大的模型是最好的模型。可以理解成在所有满足约束条件的模型集合中,选取熵最大的模型。由于熵满足不等式
0 H ( P ) log X 0 \le H(P) \le \log |X|
  当且仅当X服从均匀分布时,熵最大。举个例子,假如随机变量X有五个取值ABCDE,要估算取得每个值的概率,由于存在“概率相加为1”这一限制,而满足这一限制的概率分布有无限多个,根据最大熵原理,我们令P(A)=P(B)=P©=P(D)=P(E)= 1 5 \frac{1}{5} 。因为没有更多的信息,这种判断是合理的。如果我们多了一条信息P(A)+P(B)= 3 10 \frac{3}{10} ,则可以认为P(A)=P(B)= 3 20 \frac{3}{20} ,P©=P(D)=P(E)= 7 30 \frac{7}{30}

2.最大熵模型

  在给定训练集T的情况下,我们需要使用最大熵原理选取最好的分类模型。根据训练集,我们根据样本出现的频率得到经验分布
P ~ ( X = x , Y = y ) = n ( X = x , Y = y ) N P ~ ( X = x ) = n ( X = x ) N \tilde P(X=x,Y=y)=\frac{n(X=x,Y=y)}{N} \\ \tilde P(X=x)=\frac{n(X=x)}{N}
  定义特征函数f(x,y)描述x和y之间的某一个事实,其定义是
f ( x , y ) = { 1 0 f(x,y)= \begin{cases} 1 & 满足某一事实 \\ 0 & 否则 \end{cases}
  f(x,y)关于经验分布 P ~ ( X , Y ) \tilde P(X,Y) 的期望值定义如下:
E P ~ ( f ) = x , y P ~ ( x , y ) f ( x , y ) . . . . . . . . . . ( 1 ) E_{\tilde P}(f)=\sum_{x,y}\tilde P(x,y)f(x,y)..........(1)
  f(x,y)关于模型P(Y|X)与经验分布 P ~ ( X ) \tilde P(X) 的期望值定义如下:
E P ( f ) = x , y P ~ ( x ) P ( y x ) f ( x , y ) . . . . . . . . . . ( 2 ) E_{P}(f)=\sum_{x,y}\tilde P(x)P(y|x)f(x,y)..........(2)
  如果模型能够有效获取训练数据中的信息,就可以令
E P ( f ) = E P ~ ( f ) . . . . . . . . . . ( 3 ) E_P(f)=E_{\tilde P}(f)..........(3)
  定义在条件概率分布P(Y|X)上的条件熵为
H ( P ) = x , y P ~ ( x ) P ( y x ) log P ( y x ) . . . . . . . . . . ( 4 ) H(P)=-\sum_{x,y}\tilde P(x)P(y|x)\log P(y|x)..........(4)
  在所有满足所有约束条件的模型集合C中,令式子(4)最大的模型P称为最大熵模型

3.训练过程

  根据模型的定义,我们需要最优化的目标如下:
min P C H ( P ) = x , y P ~ ( x ) P ( y x ) log P ( y x ) . . . . . . . . . ( 5 ) s . t . E P ( f i ) E P ~ ( f i ) = 0 , i = 1 , 2 , . . . n . . . . . . . . . . ( 6 ) y P ( y x ) = 1.......... ( 7 ) \min_{P \in C} -H(P)=\sum_{x,y}\tilde P(x)P(y|x)\log P(y|x).........(5)\\ s.t. \quad E_P(f_i)-E_{\tilde P}(f_i)=0 ,i=1,2,...n..........(6)\\ \sum_yP(y|x)=1..........(7)
  使用拉格朗日乘子法,定义拉格朗日函数L(P,w):
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 ) ) = H ( P ) + w 0 ( 1 y P ( y x ) ) + i = 1 n w i ( x , y P ~ ( x , y ) f i ( x , y ) x , y P ~ ( x ) P ( y x ) f i ( x , y ) ) . . . . . . . . . . ( 8 ) \begin{aligned} L(P,w) &=-H(P)+w_0(1-\sum_yP(y|x))+\sum_{i=1}^nw_i(E_P(f_i)-E_{\tilde P}(f_i)) \\ &=-H(P)+w_0(1-\sum_yP(y|x))+\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) ..........(8) \end{aligned}
  原始问题
min P C max w L ( P , w ) . . . . . . . . . . ( 9 ) \min_{P \in C}\max_wL(P,w)..........(9)
  因为L是P的凸函数,可以通过求解对偶问题来求解原始问题,对偶问题如下
max w min P C L ( P , w ) . . . . . . . . . . ( 10 ) \max_w\min_{P \in C}L(P,w)..........(10)
  将 Ψ ( w ) = min P C L ( P , w ) = L ( P w , w ) \Psi(w)=\min\limits_{P \in C}L(P,w)=L(P_w,w) 记为对偶函数,将其解记作 P w = arg min P C L ( P , w ) = P w ( y x ) P_w=\arg \min\limits_{P \in C}L(P,w)=P_w(y|x) ,因此我们求解L(P,w)对P(y|x)的偏导数,有
L ( P , w ) P ( y x ) = x , y P ~ ( x ) ( log P ( y x ) + 1 ) y w 0 x , y ( P ~ ( x ) i = 1 n w i f i ( x , y ) ) = 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|x)} &= \sum_{x,y}\tilde P(x)(\log P(y|x)+1)-\sum_yw_0-\sum_{x,y}\left(\tilde P(x)\sum_{i=1}^nw_if_i(x,y)\right) \\ &= \sum_{x,y}\tilde P(x)\left(\log P(y|x)+1-w_0-\sum_{i=1}^nw_if_i(x,y)\right) \end{aligned}
  令偏导数为0,有
( log P ( y x ) + 1 w 0 i = 1 n w i f i ( x , y ) ) = 0 \left(\log P(y|x)+1-w_0-\sum_{i=1}^nw_if_i(x,y)\right)=0
  即
P ( y x ) = exp ( i = 1 n w i f i ( x , y ) + w 0 1 ) = exp ( i = 1 n w i f i ( x , y ) ) exp ( 1 w 0 ) P(y|x)=\exp \left(\sum_{i=1}^nw_if_i(x,y)+w_0-1 \right)=\frac{\exp \left(\sum\limits_{i=1}^nw_if_i(x,y)\right)}{\exp (1-w_0)}
  由 y P ( y x ) = 1 \sum\limits_yP(y|x)=1 ,得
y exp ( i = 1 n w i f i ( x , y ) ) exp ( 1 w 0 ) = 1 \frac{\sum_y \exp\left(\sum\limits_{i=1}^nw_if_i(x,y)\right)}{\exp (1-w_0)}=1
  得
P w ( y x ) = 1 Z w ( x ) exp ( i = 1 n w i f i ( x , y ) ) . . . . . . . . . . . ( 11 ) Z w ( x ) = y exp ( i = 1 n w i f i ( x , y ) ) . . . . . . . . . . ( 12 ) P_w(y|x)=\frac{1}{Z_w(x)}\exp (\sum_{i=1}^nw_if_i(x,y))...........(11)\\ Z_w(x)=\sum_y \exp (\sum_{i=1}^nw_if_i(x,y))..........(12)
   Z w Z_w 为规范化因子,由上式表示的模型 P w = P w ( y x ) P_w=P_w(y|x) 就是最大熵模型。之后求解 max w Ψ ( w ) \max\limits_w \Psi(w) ,因此最大熵模型的学习可以归结为对偶函数 Ψ ( w ) \Psi(w) 的极大化。

4.极大似然估计

  对于经验概率分布 P ~ ( X , Y ) \tilde P(X,Y) ,条件概率分布P(Y|X)的对数似然函数表示为
L P ~ ( P w ) = log x , y P ( y x ) P ~ ( x , y ) = x , y P ~ ( x , y ) log P ( y x ) L_{\tilde P}(P_w)=\log \prod_{x,y}P(y|x)^{\tilde P(x,y)}=\sum_{x,y}\tilde P(x,y)\log P(y|x)
  当条件概率分布是P(y|x)是最大熵模型(11)(12)的时候,有
L P ~ ( P w ) = x , y P ~ ( x , y ) log P ( y x ) = x , y P ~ ( x , y ) i = 1 n w i f i ( x , y ) x , y P ~ ( x , y ) log Z w ( x ) = x , y P ~ ( x , y ) i = 1 n w i f i ( x , y ) x P ~ ( x ) log Z w ( x ) . . . . . . . . . . ( 13 ) \begin{aligned} L_{\tilde P}(P_w) &=\sum_{x,y}\tilde P(x,y)\log P(y|x) \\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^nw_if_i(x,y)-\sum_{x,y}\tilde P(x,y)\log Z_w(x) \\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^nw_if_i(x,y)-\sum_{x}\tilde P(x)\log Z_w(x)..........(13) \end{aligned}
  对于对偶函数 Ψ ( w ) \Psi(w) ,有
Ψ ( w ) = x , y P ~ ( x ) P w ( y x ) log P w ( y x ) + i = 1 n w i ( x , y P ~ ( x , y ) f i ( x , y ) x , y P ~ ( x ) P ( y x ) f i ( x , y ) ) = x , y P ~ ( x , y ) i = 1 n w i f i ( x , y ) + x , y P ~ ( x ) P ( y x ) ( log P w ( y x ) i = 1 n w i f i ( x , y ) ) = x , y P ~ ( x , y ) i = 1 n w i f i ( x , y ) + x , y P ~ ( x ) P ( y x ) log Z w ( x ) = x , y P ~ ( x , y ) i = 1 n w i f i ( x , y ) + x P ~ ( x ) log Z w ( x ) \begin{aligned} \Psi(w) &=\sum_{x,y}\tilde P(x)P_w(y|x)\log P_w(y|x)+\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) \\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^nw_if_i(x,y)+\sum_{x,y}\tilde P(x)P(y|x)\left(\log P_w(y|x)-\sum_{i=1}^nw_if_i(x,y)\right) \\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^nw_if_i(x,y)+\sum_{x,y}\tilde P(x)P(y|x)\log Z_w(x) \\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^nw_if_i(x,y)+\sum_{x}\tilde P(x)\log Z_w(x) \end{aligned}
  因此有 Ψ ( w ) = L p ~ ( P w ) \Psi(w)=L_{\tilde p}(P_w)
  即对偶函数 Ψ ( w ) \Psi(w) 等价于对数似然函数 L P ~ ( P w ) L_{\tilde P}(P_w) ,证明了最大熵模型学习中的对偶函数极大化等价于最大熵模型的极大似然估计。

5.改进的尺度迭代法IIS

  改进的尺度迭代法IIS是一种最大熵模型学习的最优化算法。其思想是,假设最大熵模型当前参数向量是 w \vec w ,希望找到一个新的参数向量 w + δ \vec w+\vec \delta ,使得模型的对数似然值增大,因此我们需要找到一种参数想来那个更新的方法并重复使用,直至找到最大值。
  模型参数从w变化到 w + δ w+\delta ,对数似然函数的变化值为
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 ) log P w + δ ( y x ) P w ( y x ) = x , y P ~ ( x , y ) log Z w ( x ) Z w + δ ( x ) exp i = 1 n δ i f i ( x , y ) = x , y P ~ ( x , y ) i = 1 n δ i f i ( x , y ) x , y P ~ ( x , y ) log Z w + δ ( x ) Z w ( 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)\log \frac{P_{w+\delta}(y|x)}{P_w(y|x)} \\ &=\sum_{x,y}\tilde P(x,y)\log \frac{Z_w(x)}{Z_{w+\delta}(x)}\exp \sum_{i=1}^n\delta_if_i(x,y) \\ &=\sum_{x,y}\tilde P(x,y)\sum_{i=1}^n\delta_if_i(x,y)-\sum_{x,y}\tilde P(x,y)\log \frac{Z_{w+\delta}(x)}{Z_w(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}
  利用不等式
log a 1 a , a > 0 -\log a \ge 1-a ,\quad a \gt 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 ) = A ( δ w ) \begin{aligned} L(w+\delta)-L(w) &\ge \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) \\ &= A(\delta | w) \end{aligned}
  通过提高下界 A ( δ w ) A(\delta | w) ,对数似然函数值也会提高,但是 δ \delta 是一个向量,不容易同时优化,IIS试图优化其中一个变量 δ i \delta_i ,固定其他变量 δ j \delta_j ,为此引进新的变量 f # ( x , y ) = i f i ( x , y ) f^\#(x,y)=\sum_if_i(x,y) 表示所有特征在(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 ( 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 \left(f^\#(x,y)\sum_{i=1}^n \frac{\delta_if_i(x,y)}{f^\#(x,y)}\right)
  由于 f i ( x , y ) f # ( x , y ) 0 \frac{f_i(x,y)}{f^\#(x,y)} \ge 0 i 1 n f i ( x , y ) f # ( x , y ) = 1 \sum\limits_{i-1}^n\frac{f_i(x,y)}{f^\#(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 \left(\sum_{i=1}^n\frac{f_i(x,y)}{f^\#(x,y)}\delta_if^\#(x,y) \right) \le \sum_{i=1}^n\frac{f_i(x,y)}{f^\#(x,y)}\exp (\delta_if^\#(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 ) i = 1 n f i ( x , y ) f # ( x , y ) exp ( δ i f # ( x , y ) ) = B ( δ w ) \begin{aligned} A(\delta | w) &\ge \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^\#(x,y)}\exp \left(\delta_if^\#(x,y)\right) \\ &=B(\delta|w) \end{aligned}
   B ( δ w ) B(\delta|w) 是对似然函数值的一个新的下界。求其对于 δ i \delta_i 的偏导数,有
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^\#(x,y))
  令偏导数为0得到
E P ~ ( f i ) = x P ~ ( x ) y P w ( y x ) f i ( x , y ) exp ( δ i f # ( x , y ) ) E_{\tilde P}(f_i)=\sum_x \tilde P(x)\sum_yP_w(y|x)f_i(x,y)\exp (\delta_if^\#(x,y))
  改进的迭代尺度算法IIS总结如下:

  1. 初始化 w i = 0 , i = 1 , 2 , . . . , n w_i=0,i=1,2,...,n
  2. δ i \delta_i 是方程 E P ~ ( f i ) = x P ~ ( x ) y P w ( y x ) f i ( x , y ) exp ( δ i f # ( x , y ) ) E_{\tilde P}(f_i)=\sum_x \tilde P(x)\sum_yP_w(y|x)f_i(x,y)\exp (\delta_if^\#(x,y)) 的解,并且有 f # ( x , y ) = i = 1 n f i ( x , y ) f^\#(x,y)=\sum_{i=1}^nf_i(x,y)
  3. 更新 w i = w i + δ i w_i=w_i+\delta_i
  4. 如果所有的 w i w_i 并未收敛,重复步骤2和3
      如果对于所有的x和y,都有 f # ( x , y ) = M f^\#(x,y)=M ,则有
    δ 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)} 如果不是常数,则可以通过牛顿法和拟牛顿法迭代求得 δ i \delta^*_i

猜你喜欢

转载自blog.csdn.net/Hemk340200600/article/details/87890039