本文参考书籍最优化方法,部分参考漫步最优化三十二——最速下降法
最速下降法作为求解无约束最优化问题的入门算法,其思想是很多其他优化算法的基础。之前我一直对梯度下降法和最速下降法之间的关系和差异理解不清楚,只知道他们都是一阶方法,都沿负梯度方向迭代降低目标函数值,查了很多资料和网上的教程,发现讲得较为繁琐。经过系统学习和思考后我认为,最速下降法是梯度下降法的一种,该算法与一般梯度下降的区别在于,每次迭代过程中都要求目标函数值下降到搜索方向下的最小值。
最速下降法算法步骤
- 给定目标函数: m i n f ( x ) minf(\boldsymbol x) minf(x),给定算法终止条件,通常是给定某误差 ε > 0 \varepsilon > 0 ε>0。
- 取初始点 x 0 \boldsymbol x_{0} x0,令 k = k= k= 0。
- 计算 g k = g ( x k ) = ▽ f ( x k ) \boldsymbol g_{k} = \boldsymbol g(\boldsymbol x_{k}) =\bigtriangledown f(\boldsymbol x_{k}) gk=g(xk)=▽f(xk)。
- 若 ∥ g k ∥ ≤ ε \left\|\boldsymbol g_{k}\right\| \leq \varepsilon ∥gk∥≤ε,则 x ∗ = x k \boldsymbol x^*=\boldsymbol x_{k} x∗=xk,算法终止;否则,令搜索方向 p k = − g k \boldsymbol p_{k}=-\boldsymbol g_{k} pk=−gk,由一维精确搜索或近似搜索求步长 a k a_{k} ak,使得:
f ( x k + a k p k ) = m i n f ( x k + a p k ) f(\boldsymbol x_{k}+a_{k}\boldsymbol p_{k})=minf(\boldsymbol x_{k}+a\boldsymbol p_{k}) f(xk+