关于牛顿法停止准则的疑问

计算科学 线性代数 优化 数值分析 凸优化 牛顿法
2021-12-04 21:52:27

我正在解决一个无约束的凸优化问题,它很容易有一百万个变量。我正在尝试获得一个具有大约 200 个变量的玩具问题的工作系统。我注意到牛顿步的量级变得非常小,即使梯度仍然没有像期望的那样接近零。然后我尝试了使用线搜索的简单梯度下降,经过几次迭代后我的步长变得非常小,即使梯度不是那么小。会发生什么?

更新 1:感谢 Borchers 教授和 Bangerth 教授分享您的知识。我需要沿着这些思路进一步调查,才能得出结论。

更新 2:确实在渐变的实现中存在错误。感谢您为验证梯度提供的输入以及终止优化问题的良好经验法则。

1个回答

如果你收敛,你会期望步骤变小。理想情况下,一步δxk在优化算法中将来自当前迭代xk到确切的解决方案x, 所以δxkxkx也就是说,当你接近解决方案时,它会变小。

现在你说变小了,尽管梯度仍然很大。当然,这取决于您如何定义“大”。小还是大?就其本身而言,没有办法这么说。这取决于事物的单位,以及您与之比较的对象。与我们周围物体的典型尺寸相比,光年显然很大。纳米非常小。但如果你是宇宙学家,那么光年是很小的。如果你看的是原子距离,那么δxk103103103103103纳米很大。换句话说,您需要研究在您的情况下,梯度变大究竟意味着什么,以及一个数字,例如,不是而是的数量级是否真的意味着你离解决方案还很远。107107

在优化问题的背景下,您需要问“什么是小?” 当您查看渐变时。解决此问题的一种方法是询问“渐变的典型大小是多少?”。举个例子,假设你有一个弹簧质量系统,你想找到它的最小能量位置。假设弹簧的长度都在 10 厘米左右,那么弹簧的典型位移可能是为主体和连接弹簧选择两个相距约的位置,并评估这两个位置的能量以获得相应的“典型能量差” \那么“梯度的典型大小”将是Δx=1cmΔxΔEΔE/Δx. 如果您的优化算法产生了梯度为,那么你可以说你已经收敛了。gk103|ΔE/Δx|