学优计算机说明书对数,统计学习六: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$.

对所有$i\in{1,2,\cdots,n}$,取初值$w_i=0$;

对每一个$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$;

如果不是所有的$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)}$时,牛顿法会收敛非常快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值