函数优化方法全解析
1. 优化起始位置的影响
在优化过程中,起始位置至关重要。若起始点处于包含最小值的感兴趣区域之外,其斜率(一阶导数)和曲率(二阶导数)近乎为零,函数值也近乎恒定。例如,对于某函数,起始点的斜率为 D[function,x]/.x -> xStart
,结果是 0.0000214326
,曲率为 D[function,{x,2}]/.x -> xStart
,结果是 -0.0000250037
。在这种情况下,迭代算法难以找到通往最小值的路径,搜索算法很可能陷入停滞,无法收敛到最小值。而且在实际应用中,若优化失败,往往难以找出问题所在。虽然有众多参数可用于调整局部和全局优化方法,但这并不能保证总能解决所有问题。所以,从理论考量或实践经验中获取的关于最优值位置的先验知识可能起着关键作用。
2. 迭代局部优化
迭代局部优化(或简称为最小化,因为最大化函数 f
等同于最小化 -f
或 f - 1
)原则上较为简单:从给定的起始位置出发,通过适当的步长尽可能快地向山下移动,直至在所需精度内达到局部最小值。不同的局部优化方法的区别仅在于它们为设定步长而评估的函数信息量,以及所选的下山方向。评估部分决定了每次迭代的计算成本,而方向部分决定了向局部最小值收敛的速度,这两部分通常相互对立:评估的函数信息越多,单次迭代执行得越慢,但由于步长和方向更合适,迭代步数可能会减少。常见的局部优化方法如下:
- 仅使用函数值评估的方法 </