首页 理论教育 介绍如何在程序中调用L-BFGS算法

介绍如何在程序中调用L-BFGS算法

时间:2023-06-21 理论教育 版权反馈
【摘要】:最优化方法就是为了达到最优化目的所提出的各种求解方法。从数学意义上说,最优化方法是一种求极值的方法,即在一组约束为等式或不等式的条件下,使系统的目标函数达到极值,即最大值或最小值。在MLlib中实现了多个最优化算法,包括梯度下降算法、随机梯度下降算法以及L-BFGS算法,在这里就不再详细介绍各种算法的数学原理,下面重点介绍如何在程序中调用L-BFGS算法。

介绍如何在程序中调用L-BFGS算法

优化方法(也称做运筹学方法)是近几十年形成的,它主要运用数学方法研究各种系统的优化途径及方案,为决策者提供科学决策的依据。最优化方法就是为了达到最优化目的所提出的各种求解方法。从数学意义上说,最优化方法是一种求极值的方法,即在一组约束为等式或不等式的条件下,使系统的目标函数达到极值,即最大值或最小值。在MLlib中实现了多个最优化算法,包括梯度下降算法、随机梯度下降算法以及L-BFGS算法,在这里就不再详细介绍各种算法的数学原理,下面重点介绍如何在程序中调用L-BFGS算法。

1.L-BFGS

MLlib中的L-BFGS算法目前只有原始的低级别优化。如果想使用L-BFGS中的各种机器学习算法,如线性回归和逻辑回归,则必须通过目标函数的梯度,并使用优化器优化自身,而不是使用LogisticRegressionWithSGD之类的API进行训练。下面的【例4-68】是一个使用L-BFGS算法的例子,L-BFGS算法中的LBFGS.runLBFGS方法有如下的几个参数。

● Gradient是计算当前目标函数的梯度的类,其中包含常见的损失函数(hinge,logistic,least-squares)。Gradient类需要一个训练的例子、它的标签以及当前参数值作为输入。

● Updater是一个类,用来计算目标函数的梯度和正规化部分的损失函数。

● numCorrections是L-BFGS更新时的更新数量,推荐使用10。(www.xing528.com)

● maxNumIterations是L-BFGS可以运行的最大迭代次数。

● regParam是使用正则化时的正则化参数。

● convergenceTol控制着被判定为收敛前仍然允许的相对变化大小。它一般是一个正数,而且不能太小,不然会导致迭代次数过多。

L-BFGS算法调用后返回的是包含两个元素的元组,第一个元素是一个含有每个特征的权重矩阵列,第二个元素是一个数组,其中包含为每个迭代计算的损失。

例4-75】L-BFGS算法示例。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈