- https://blog.csdn.net/frozenspring/article/details/78888792
梯度下降法和牛顿法其实在某种程度上只是确定了下降的方向。而下降的步长(收敛速率系数)还需要我们自己确定。而对于不同的问题下降的步长往往也是不一样的。这就造成了一些麻烦。
线搜索
前面提到迭代求解最优化问题minf(x)的一般形式是xk+1=xk+Δ。事实上我们可以把Δ分为两个部分:方向和步长。
先确定方向,再确定步长的算法称为线搜索算法。它的一般形式为
xk+1=xk+αkpk
其中α为步长,p为方向。显然有∇fkpk≤0。进而有 p k = − B k − 1 ∇ f k p_k=−B^{−1}_k∇f_k pk=−Bk−1∇fk。其中B为对称非奇异矩阵。
当B为I时,即为梯度下降法
当B为∇2fk时,即为牛顿法
当B通过迭代进行更新时,为拟牛顿法
当B为JTJ时,为高斯-牛顿法
步长
而如何得到一个合适的步长这个问题又构成了一个最优化问题,即
minh(α)=f(xk+αpk)
对这个优化问题我们可以根据具体情况求出闭式解,但是这往往会很复杂。因此我们仅仅对它进行一个粗略的估计,从而在可接受的计算量的情况下,尽可能的求得较大的步长,使得h(α)尽可能降低。
(天啊,为了求解最优化问题的一步迭代步长我们又构造了一个最优化问题来进行迭代)