第二十一节 牛顿法和L-BFGS求函数最优解
这一节中,我们讲解一个新的求函数最优化的方法就是L-BFGS。以下是本节目录。
目录
1-L-BFGS算法简介
2-牛顿法求根问题
3-牛顿法求驻点问题
4-牛顿法求驻点的本质
5-多元函数利用牛顿法求驻点
6-BFGS算法
7-L-BFGS算法
1-L-BFGS算法简介
我们知道算法在计算机中运行的时候是需要很大的内存空间的.就像我们解决函数最优化问题常用的梯度下降,它背后的原理就是依据了泰勒一次展开式.泰勒展开式展开的次数越多,结果越精确,没有使用三阶四阶或者更高阶展开式的原因就是目前硬件内存不足以存储计算过程中演变出来更复杂体积更庞大的矩阵.L-BFGS算法翻译过来就是有限内存中进行BFGS算法,L是limited memory的意思.那算法为什么叫BFGS呢,请看下图:
上图中从左到右依次是Broyden,Fletcher,Goldfarb,Shanno.四位数学家名字的首字母是BFGS,所以算法的名字就叫做BFGS算法.接下来我们就一起来学习BFGS算法的内容。
2-牛顿法求根问题
我们先来回顾下牛顿法求根问题,比如求1元2次方程的根公式为
,我们通常管这种形式的根叫解析根。所谓解析解就是你不用给我具体的值,就是一个公式。3次方程也是有解析解的,但是当函数达到5次方以上,就不好找解析解了,对于这种复杂的函数,很遗憾我们不能找到它的全部根,但是至少有办法找到它的一个根。
我们看一个对于一元函数的例子:
对于一个无法解出解析解的函数来说,现在是一元函数,在只有一个x的情况下,我最终想找到x令y=0,即函数的根,怎么找到它?牛顿和另外一个人同时分别发现,假如这个函数是连续可导的,我随机出来一个x1,总能求它在这点x1的导数,导数是一个实数,它是能代表切线的斜率,那么我们就在这个x1点上画一个原函数切线,这个切线一定会与x轴相交,除非特别倒霉,你一步就随机到它的驻点上了,也不用求了,你找的就是驻点。不倒霉的情况下一定会使x1点的切线和x轴有个交点,我们命名为x2。 点完之后,又可以找一下x2对应在函数上的点,再画一条切线找到了x3,这时候相比x1,距离跟的位置来说比较近,然后发现经过有限次数的迭代之后,怎么迭代都不会变化。它还是会产生震荡,经过震荡之后,最终会收敛在某一个点上,而这个点就是函数的根。所以说牛顿法利用几何直觉就是在找到某一个函数与x轴的交点。
我们分析下几何原理:
函数本身f(x)也是已知的,那么f(x1)就可以计算。x2是x1切线的位置,我们建立一个关于x2,x1的解析式&#x