欢迎大家关注我的B站:
偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com)
本文ppt来自深蓝学院《机器人中的数值优化》
目录
1 迭代方向
梯度方向是函数上升最快的方向,而负梯度方向则是函数下降最快的方向,因此最速下降法就是以负梯度方向为迭代方向,当函数非光滑时,迭代点不存在梯度时,以次梯度集合内的取最小模长的负方向为迭代方向。对于次梯度的介绍,读者请参考(1条消息) 机器人中的数值优化之凸函数_无意2121的博客-CSDN博客
2 步长的选择
前面我们讨论了迭代方向如何选择,现在讨论在迭代方向上走多少步长合适,这里列出了四种方法
- 恒定步长
- 不断衰减的步长
- 精确线搜索
- 非精确线搜索
如果采用恒定步长迭代,将导致不停的震荡,始终无法收敛
如果采用衰减步长迭代,可以保证收敛,但是随着步长越来越短,收敛越来越慢
因此我们需要一个兼顾收敛性与收敛速度的步长调整方法
精确线搜索:相当于以步长为自变量又进行一次求最优解的过程,这能保证每次迭代得到的优化最彻底,但实际上这导致我们又需要去求解子优化问题,本来就是在求解优化问题,又化归成一系列子优化问题,只不过变成一维优化问题,但是求解时间还是有较大损耗
非精确线搜索:我们不希望再求解子优化问题,也就是只希望每次得到一个接近最优解的步长,即满足一些条件,接下来将详细介绍这个条件(Armijo condition)
3 Armijo condition
将迭代步长看作自变量画出图,然后对当前迭代点进行一阶近似,然后对此直线的斜率进行松弛也就是乘上一个0到1的系数,得到另一条直线,在这条直线下方的区域都是下降比较充分的
而这里也采用了一种二分的方法,当二分到满足Armijo condition时,就可以停止二分,取此步长
迭代的终止条件是梯度足够小,或者次梯度包含0
4 非精确线搜索的优势
这两张图表明非精确线搜索在工程上由于精确线搜索,一般来说迭代时间与迭代次数和每次迭代需要的时间乘积成正比,虽然精确线搜索iteration很小,但每次iteration的time cost很大,就使得总耗时大,非精确线搜索与之相反,iteration虽然多,但每次iteration的time cost很小
这里我们还需要考虑条件数的问题,条件数很大将导致最速下降法每次迭代震荡很厉害,因此当条件数很大时,不适用最速下降法,对于条件数,不清楚的读者可以参考机器人中的数值优化之凸函数_无意2121的博客-CSDN博客
可见当条件数很大时,曲率信息我们不能忽略,下一节我们将介绍包含curvature info 的优化算法