统计学习六:3.对数线性模型之最优化算法

全文引用自《统计学习方法》(李航)

不论是逻辑斯谛回归模型,还是最大熵模型,其学习过程都是最优化以对数似然为目标函数的过程,而此过程通常以迭代算法为主。以对数似然为目标函数,具有许多良好的性质,其主要为光滑的凸函数,可以应用多种最优化方法,且能够保证得到全局最优解。下面主要介绍一种改进的迭代尺度法作为最大熵模型的学习算法。

改进的迭代尺度法(improved iterative scaling, IIS) 是一种最大熵模型学习的最优化算法。
已知最大熵模型为:
\[ \begin{aligned} P_w(y|x)=\frac{1}{Z_w(x)}\exp\left(\sum_{i=1}^nw_if_i(x,y)\right)\\ Z_w(x)=\sum_y\exp\left(\sum_{i=1}^nw_if_i(x,y)\right) \end{aligned} \]
对数似然为:
\[ 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) \]
学习的目标,是通过极大似然估计来学习模型的参数,求得对数似然的极大值\(\hat{w}\)
IIS算法的主要思想是:假设最大熵模型当前的参数向量是\(w=(w_1,w_2,\cdots,w_n)^T\),若我们能找到一个新的参数向量\(w+\delta=(w_i+\delta_1,w_2+\delta_2,\cdots,w_n+\delta_n)^T\),使得模型的对数似然函数值不断增大,那么我们就可以以这种方式一直更新参数向量\(\tau:w\rightarrow w+\delta\),知道找到对数似然函数的最大值。
因此,对于给定的经验分布\(\tilde{P}(x,y)\),模型参数从w到\(w+\delta\),对数似然的改变量为:
\[ \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} \]
由不等式\(-\log\alpha\ge1-\alpha,\alpha>0\)可得:
\[ \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) \end{aligned} \]
令不等式右端为:
\[ 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\sum_{i=1}^n\delta_if_i(x,y) \]
可得:
\[ L(w+\delta)-L(w)\ge A(\delta|w) \]
\(A(\delta|w)\)为对数似然函数的一个下界。若能找到适当的\(\delta\)值,使\(A(\delta|w)\)提高,即对数似然的下界提高,则对数似然也会提高。但在函数\(A(\delta|w)\)中,\(\delta\)为一个向量,含有多个值,不易优化,因此IIS算法试图每次优化其中一个变量\(\delta_i\)
为达到此目的,IIS进一步降低下界\(A(\delta|w)\)

  • 首先,引入一个量\(f^\#(x,y)\)
    \[ f^\#(x,y)=\sum_if_i(x,y) \]
  • 由于特征函数\(f_i\)是二值函数,故\(f^\#(x,y)\)代表所有特征在(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) \]
  • 由于指函数为凸函数,且对于任意i,有\(\frac{f_i(x,y)}{f^\#(x,y)}\ge0,\sum_{i=1}^n\frac{f_i(x,y)}{f^\#(x,y)}=1\),根据Jensen不等式:
    \[ E(f(x))\ge f(E(x)) \]
    可得:
    \[ \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(\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\left(\frac{f_i(x,y)}{f^\#(x,y)}\right)\exp(\delta_if^\#(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\left(\frac{f_i(x,y)}{f^\#(x,y)}\right)\exp(\delta_if^\#(x,y)) \]
    可得
    \[ L(w+\delta)-L(w)\ge B(\delta|w) \]
    此时,\(B(\delta|w)\)为对数似然函数的新下界。
  • \(B(\delta|w)\)\(\delta_i\)的偏导:
    \[ \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)) \]
    可知在上式中,除\(\delta_i\)外无其他变量,令上式偏导为0,可得:
    \[ \sum_x\tilde{P}(x)\sum_yP_w(y|x)f_i(x,y)\exp(\delta_if^\#(x,y))=E_{\tilde{P}}(f_i) \]
    通过上式依次对\(\delta_i\)求解,可得最终的\(\delta\)
    通过以上原理,可以得出一种求解w的最优解的迭代算法,即IIS算法:
  • 输入:特征函数\(f_1,f_2,\cdots,f_n\),经验分布\(\tilde{P}(X,Y)\),模型\(P_w(y|x)\)
  • 输出:最优参数值\(w_i^*\),最优模型\(P_w\).
  1. 对所有\(i\in\{1,2,\cdots,n\}\),取初值\(w_i=0\);
  2. 对每一个\(i\in\{1,2,\cdots,n\}\):a. 令\(\delta_i\)是方程
    \[ \sum_x\tilde{P}(x)\sum_yP_w(y|x)f_i(x,y)\exp(\delta_if^\#(x,y))=E_{\tilde{P}}(f_i) \]
    的解,这里\(f^\#(x,y)=\sum_if_i(x,y)\); b. 更新\(w_i\)的值:\(w_i\leftarrow w_i+\delta_i\)
  3. 如果不是所有的\(w_i\)都收敛,那么重复步骤2;

上述算法的关键是步骤a,即求解\(\delta_i\)。若\(f^\#(x,y)\)为常数,即对于任意x,y,有\(f^\#(x,y)=M\),那么可知:
\[ \delta_i=\frac{1}{M}\log\frac{E_{\tilde{P}(f_i)}}{E_P(f_i)} \]
\(f^\#(x,y)\)非常数,那么就必须通过数值计算求出\(\delta_i\)。最为简单的方法为牛顿法:

\[ g(\delta_i)=\sum_x\tilde{P}(x)\sum_yP_w(y|x)f_i(x,y)\exp(\delta_if^\#(x,y))-E_{\tilde{P}}(f_i) \]
通过不断迭代求得\(\delta_i^*\),使\(g(\delta_i^*)=0\)成立,迭代公式为:
\[ \delta_i^{(k+1)}=\delta_i^{(k)}-\frac{g(\delta_i^{(k)})}{g'(\delta_i^{(k)})} \]
当选取适当的初始值\(\delta_i^{(0)}\)时,牛顿法会收敛非常快。

猜你喜欢

转载自www.cnblogs.com/zhiyuxuan/p/9703043.html