机器学习中经常利用梯度下降法求最优解问题,通过大量的迭代来得到最优解,但是对于维度较多的数据,除了占用大量的内存还会很耗时,L-BFGS算法是一种在牛顿法基础上提出的一种求解函数根的算法,下面由简入深尽量用简洁的语言剖析算法的本质。
一.牛顿法
解决函数求根问题 f(x)函数在x1点的导数,是该函数在x1点的切线的斜率y/x,f(x1)=f(x1)/(x1-x2) ,x1-x3=f(x1)/f'(x1),得出x2=x1-f(x1)/f'(x1),当第k次迭代时:xk=xk-1-f(xk-1)/f'(xk-1)
牛顿法求根的流程:
1.已知函数f(x)的情况下随机产生x0
2.由已知的x0按照xk=xk-1-f(xk-1)/f'(xk-1)公式进行k次迭代
3.当迭代结果xk与上一次迭代结果xk-1相同或小于一定阈值时本次的结果即为函数f(x)的根
利用牛顿法求函数的驻点
当函数f(x)的一阶导数f'(x)=0时,点(x,f(x))为函数f(x)的驻点
求某函数的驻点即为求该函数的导函数的根,同样可以利用牛顿法进行求解
对于f(x)函数来说迭代公式为xk=xk-1-f'(xk-1)/f''(xk-1)
牛顿法求驻点的本质
任意函数在xk点附近的二阶泰勒展开公式为: