机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BFGS。为了解这个算法的数学机理,这几天做了一些调研,现把学习过程中理解的一些东西整理出来。
目录链接
(1) 牛顿法
(2) 拟牛顿条件
(3) DFP 算法
(4) BFGS 算法
(5) L-BFGS 算法
BFGS算法的实现
BFGS算法的C++实现参考这里。在Python中,有一个优化算法工具,叫做scipy。scipy中的optimize子
包中提供了常用的最优化算法函数实现。我们可以直接调用这些函数完成我们的优化问题。optimize中函数
最典型的特点就是能够从函数名称上看出是使用了什么算法,可以参考这里。比如BFGS算法的用法如下
运行结果如下