关于最优化求解,吴军有篇blog讲的很不错,证明和解释都很清楚,具体可以参考http://www.cnblogs.com/joneswood/archive/2012/03/11/2390529.html。
这里根据那篇blog的内容,主要讲解运用最广泛的LBFGS的算法思想和LBFGS源码的求解实际的最优化问题。
理论部分
一般优化算法中,比较简单的是梯度下降法,其主要思想为:
给定目标函数f(x),给定初始值x,沿着目标函数梯度方向下降,寻找最优解。
通过将目标函数,在初始值位置按照梯度下降方向,进行泰勒展开:
式[1]中的高阶无穷小可以忽略,因此,要使[1]式取得最小值,应使取到最小,由此可得,
取
时,目标函数下降得最快,这就是负梯度方向作为“最速下降”方向的由来。