LBFGS算法.docx

上传人:b****2 文档编号:2174449 上传时间:2022-10-27 格式:DOCX 页数:11 大小:517.31KB
下载 相关 举报
LBFGS算法.docx_第1页
第1页 / 共11页
LBFGS算法.docx_第2页
第2页 / 共11页
LBFGS算法.docx_第3页
第3页 / 共11页
LBFGS算法.docx_第4页
第4页 / 共11页
LBFGS算法.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

LBFGS算法.docx

《LBFGS算法.docx》由会员分享,可在线阅读,更多相关《LBFGS算法.docx(11页珍藏版)》请在冰豆网上搜索。

LBFGS算法.docx

LBFGS算法

一、BFGS算法

     算法思想如下:

          Step1  取初始点,初始正定矩阵,允许误差,令;

          Step2  计算;

          Step3  计算,使得

                                               ;

         Step4   令;

         Step5   如果,则取为近似最优解;否则转下一步;

         Step6   计算

                                ,,

                         

         令,转Step2.

优点:

1、不用直接计算Hessian矩阵;

2、通过迭代的方式用一个近似矩阵代替Hessian矩阵的逆矩阵。

缺点:

1、矩阵存储量为,因此维度很大时内存不可接受;

2、矩阵非稀疏会导致训练速度慢。

 

二、L-BFGS算法

     针对BFGS的缺点,主要在于如何合理的估计出一个Hessian矩阵的逆矩阵,L-BFGS的基本思想是只保存最近的m次迭代信息,从而大大降低数据存储空间。

对照BFGS,我重新整理一下用到的公式:

                                      

                                             

                                 

                                 

于是估计的Hessian矩阵逆矩阵如下:

                         

                                

                                       

                                

带入上式,得:

                                

假设当前迭代为k,只保存最近的m次迭代信息,(即:

从k-m~k-1),依次带入,得到:

公式1:

                               

                                      

                                      

                                      

                                       

                                      

算法第二步表明了上面推导的最终目的:

找到第k次迭代的可行方向,满足:

                                

为了求可行方向p,有下面的:

 two-looprecursion算法

                                  

                                  

                                          

                                          

                                   

                                   

                                   

                                         

                                         

                                    

                                   

该算法的正确性推导:

1、令:

     ,递归带入q:

                                

                                     

                                     

                                     

                                     

                                     

                                     

相应的:

                                

                                     

2、令:

                                

                                     

                                     

于是:

                                

                                     

                                     

                                     

                                                

                                      

                                           

                                      

                                      

                                      

这个two-looprecursion算法的结果和公式1*初始梯度的形式完全一样,这么做的好处是:

1、只需要存储、(i=1~m);

2、计算可行方向的时间复杂度从O(n*n)降低到了O(n*m),当m远小于n时为线性复杂度。

总结L-BFGS算法的步骤如下:

     Step1:

      选初始点,允许误差,存储最近迭代次数m(一般取6);

     Step2:

      ;

     Step3:

      如果  则返回最优解,否则转Step4;

     Step4:

      计算本次迭代的可行方向:

     Step5:

      计算步长,对下面式子进行一维搜索:

                         ;

     Step6:

      更新权重x:

                         ;     

     Step7:

     ifk>m

                            只保留最近m次的向量对,需要删除();

     Step8:

      计算并保存:

                        

                        ;

     Step9:

      用two-looprecursion算法求得:

                         ;

     k=k+1,转Step3。

需要注意的地方,每次迭代都需要一个,实践当中被证明比较有效的取法为:

                          

                          

 

三、OWL-QN算法

1、问题描述

对于类似于LogisticRegression这样的Log-Linear模型,一般可以归结为最小化下面这个问题:

                         

其中,第一项为lossfunction,用来衡量当训练出现偏差时的损失,可以是任意可微凸函数(如果是非凸函数该算法只保证找到局部最优解),后者为regularizationterm,用来对模型空间进行限制,从而得到一个更“简单”的模型。

       根据对模型参数所服从的概率分布的假设的不同,regularizationterm一般有:

L2-norm(模型参数服从Gaussian分布);L1-norm(模型参数服从Laplace分布);以及其他分布或组合形式。

L2-norm的形式类似于:

                        

L1-norm的形式类似于:

                        

L1-norm和L2-norm之间的一个最大区别在于前者可以产生稀疏解,这使它同时具有了特征选择的能力,此外,稀疏的特征权重更具有解释意义。

对于损失函数的选取就不在赘述,看两幅图:

图1-红色为LaplacePrior,黑色为GaussianPrior 

 

图2直观解释稀疏性的产生

 

       对LR模型来说损失函数选取凸函数,那么L2-norm的形式也是的凸函数,根据最优化理论,最优解满足KKT条件,即有:

,但是L1-norm的regularizationterm显然不可微,怎么办呢?

2、Orthant-WiseLimited-memoryQuasi-Newton

       OWL-QN主要是针对L1-norm不可微提出的,它是基于这样一个事实:

任意给定一个维度象限,L1-norm都是可微的,因为此时它是一个线性函数:

图3任意给定一个象限后的L1-norm

OWL-QN中使用了次梯度决定搜索方向,凸函数不一定是光滑而处处可导的,但是它又符合类似梯度下降的性质,在多元函数中把这种梯度叫做次梯度,见维基百科http:

//en.wikipedia.org/wiki/Subderivative

举个例子:

图4次导数

对于定义域中的任何x0,我们总可以作出一条直线,它通过点(x0, f(x0)),并且要么接触f的图像,要么在它的下方。

这条直线的斜率称为函数的次导数,推广到多元函数就叫做次梯度。

次导数及次微分:

凸函数f:

I→R在点x0的次导数,是实数c使得:

                        

对于所有I内的x。

可以证明,在点x0的次导数的集合是一个非空闭区间[a, b],其中a和b是单侧极限

              

              

它们一定存在,且满足a ≤ b。

所有次导数的集合[a, b]称为函数f在x0的次微分。

OWL-QN和传统L-BFGS的不同之处在于:

1)、利用次梯度的概念推广了梯度

      定义了一个符合上述原则的虚梯度,求一维搜索的可行方向时用虚梯度来代替L-BFGS中的梯度:

                      

                        

                       

怎么理解这个虚梯度呢?

见下图:

对于非光滑凸函数,那么有这么几种情况:

图5  

 

图6  

 

图7 otherwise

2)、一维搜索要求不跨越象限

      要求更新前权重与更新后权重同方向:

图8 OWL-QN的一次迭代

总结OWL-Q

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1