牛顿法:
根据二阶泰勒展开,用一阶和二阶倒数确定参数迭代步长和方向
设初始向量,它在处的泰勒展开如下:
,当时
注:矩阵求导公式:
对上式相对于求导:
①
因此可以得到处的迭代方程:
对应这种形式,步长,方向
拟牛顿法:
从上述公式可以知道,牛顿法的每一次迭代都需要计算二阶海塞矩阵,当特征和数据非常多时,时间和空间开销都会比较大。
拟牛顿法只是一种方法的统称,即用一个近似矩阵B去替代逆海塞矩阵,然后在每一轮迭代中更新B
怎样找到逆海塞矩阵的替代矩阵?
对上一节中的①式做一下变换:
令,,上式变成:
再令,,得到:
①
也就是说,第k步迭代的海塞矩阵可以通过第k步的迭代步长和一阶导数差值拟合。
BFGS(Broyden–Fletcher–Goldfarb–Shanno):
https://blog.csdn.net/itplus/article/details/21897443
用表示的近似,表示的近似:
那么的迭代公式为
设②,再根据①式得到的:
交换和的位置:
令:,以及
解出:
再带入到②中:
L-BFGS:
BFGS中B矩阵的每次更新都需要nXn的空间开销,L-BFGS不会直接存储B,而是①只存取需要用到的n个向量,并且②只保存了最近的m次迭代的结果,所以L-BFGS算法又做了近似。